Guest User

Untitled

a guest
Nov 20th, 2025
1,659
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
JavaScript 6.99 KB | Source Code | 0 0
  1. // ==UserScript==
  2. // @name         Telegra.ph roll
  3. // @namespace    http://tampermonkey.net/
  4. // @version      0.5
  5. // @description  -
  6. // @author       Grok
  7. // @match        *://*/*
  8. // @grant        none
  9. // ==/UserScript==
  10.  
  11. (function() {
  12.     'use strict';
  13.  
  14.     const titles = ['video','photo','pack','leak','private','privat','mega','onlyfans','fansly','album','gallery','selfie','nude','18','xxx','hot','new','fresh','2025','2024','sliw','sliv','archive','collection','girl','teen','milf','amateur','webcam','tg','telegram','chan','intim','ero'];
  15.  
  16.     // Блоклист (арабы, китайцы, крипта и т.д.)
  17.     const blacklistWords = ['crypto','bitcoin','btc','eth','solana','sol','bnb','usdt','doge','shib','pepe','wif','bonk','ton','notcoin','hamster','blum','tapswap','cats','dogs','pixel','wallet','seed','phrase','private key','metamask','trust wallet','airdrop','giveaway','claim','connect wallet','farm','mining','earn','pump','virus','malware','trojan','hack','carding','scam','скам','دولار','ريال','تداول','بيتكوين','币','链','钱包','空投','挖矿','比特币'];
  18.     const blacklistRegex = new RegExp('\\b(' + blacklistWords.join('|') + ')|[\\u0600-\\u06FF\\u0750-\\u077F\\u08A0-\\u08FF]|[\\u4E00-\\u9FFF\\u3400-\\u4DBF\\uF900-\\uFAFF]', 'i');
  19.  
  20.     // === РЕГУЛЯТОР СКОРОСТИ ===
  21.     let targetPagesPerSecond = 80; // стартовое значение
  22.  
  23.     // Автоматически подстраивает количество потоков и задержку
  24.     function getConfig() {
  25.         if (targetPagesPerSecond <= 15)  return { threads: 8,   delay: 800 };
  26.         if (targetPagesPerSecond <= 30)  return { threads: 10,  delay: 400 };
  27.         if (targetPagesPerSecond <= 50)  return { threads: 15,  delay: 250 };
  28.         if (targetPagesPerSecond <= 80)  return { threads: 20,  delay: 150 };
  29.         if (targetPagesPerSecond <= 120) return { threads: 30,  delay: 80 };
  30.         return { threads: 40, delay: 30 }; // турбо-режим 120–200+ стр/сек
  31.     }
  32.  
  33.     function randomDate() {
  34.         const year = 2016 + Math.floor(Math.random() * 10);
  35.         const month = Math.floor(Math.random() * 12) + 1;
  36.         const isLeap = (year % 4 === 0 && year % 100 !== 0) || (year % 400 === 0);
  37.         const daysInMonth = [31, isLeap?29:28,31,30,31,30,31,31,30,31,30,31];
  38.         const day = Math.floor(Math.random() * daysInMonth[month-1]) + 1;
  39.         return {mm:String(month).padStart(2,'0'), dd:String(day).padStart(2,'0'), yy:year.toString().slice(-2)};
  40.     }
  41.  
  42.     function generateUrl() {
  43.         const t = titles[Math.floor(Math.random()*titles.length)];
  44.         const d = randomDate();
  45.         return `https://telegra.ph/${t}-${d.mm}-${d.dd}-${d.yy}`;
  46.     }
  47.  
  48.     async function isGoodPage(url) {
  49.         try {
  50.             const controller = new AbortController();
  51.             const timeout = setTimeout(() => controller.abort(), 7000);
  52.             const res = await fetch(url, {signal: controller.signal});
  53.             clearTimeout(timeout);
  54.             if (!res.ok) return false;
  55.             const text = await res.text();
  56.             if (!(/<img|<video|<figure|<iframe/i.test(text))) return false;
  57.             if (blacklistRegex.test(text)) return false;
  58.             return true;
  59.         } catch { return false; }
  60.     }
  61.  
  62.     // === КНОПКА С РЕГУЛЯТОРОМ ===
  63.     const btn = document.createElement('div');
  64.     btn.style.position = 'fixed';
  65.     btn.style.bottom = '20px';
  66.     btn.style.right = '20px';
  67.     btn.style.zIndex = '999999';
  68.     btn.style.fontFamily = 'Arial, sans-serif';
  69.     btn.style.userSelect = 'none';
  70.  
  71.     // Основная часть кнопки
  72.     const mainBtn = document.createElement('button');
  73.     mainBtn.innerHTML = '---ROLL---';
  74.     mainBtn.style.padding = '20px 35px';
  75.     mainBtn.style.fontSize = '20px';
  76.     mainBtn.style.fontWeight = 'bold';
  77.     mainBtn.style.background = 'linear-gradient(45deg, #ff006e, #ff5722)';
  78.     mainBtn.style.color = 'white';
  79.     mainBtn.style.border = 'none';
  80.     mainBtn.style.borderRadius = '50px';
  81.     mainBtn.style.boxShadow = '0 0 30px rgba(255,0,110,0.9)';
  82.     mainBtn.style.cursor = 'pointer';
  83.  
  84.     // Регулятор скорости
  85.     const speedBtn = document.createElement('div');
  86.     speedBtn.innerHTML = `${targetPagesPerSecond} стр/с`;
  87.     speedBtn.style.position = 'absolute';
  88.     speedBtn.style.top = '-40px';
  89.     speedBtn.style.left = '50%';
  90.     speedBtn.style.transform = 'translateX(-50%)';
  91.     speedBtn.style.background = 'rgba(0,0,0,0.8)';
  92.     speedBtn.style.color = '#00ff00';
  93.     speedBtn.style.padding = '8px 8px';
  94.     speedBtn.style.borderRadius = '20px';
  95.     speedBtn.style.fontSize = '14px';
  96.     speedBtn.style.fontWeight = 'bold';
  97.     speedBtn.style.cursor = 'pointer';
  98.     speedBtn.style.transition = 'all 0.2s';
  99.  
  100.     // Клик по регулятору = смена скорости
  101.     const speeds = [10, 20, 30, 50, 80, 120, 150];
  102.     let currentIndex = 4; // старт на 80
  103.     speedBtn.onclick = (e) => {
  104.         e.stopPropagation();
  105.         currentIndex = (currentIndex + 1) % speeds.length;
  106.         targetPagesPerSecond = speeds[currentIndex];
  107.         speedBtn.innerHTML = `${targetPagesPerSecond}+ стр/с`;
  108.         speedBtn.style.color = targetPagesPerSecond >= 100 ? '#ff00ff' : (targetPagesPerSecond >= 50 ? '#ffff00' : '#00ff00');
  109.     };
  110.  
  111.     btn.appendChild(speedBtn);
  112.     btn.appendChild(mainBtn);
  113.     document.body.appendChild(btn);
  114.  
  115.     let running = false;
  116.  
  117.     mainBtn.onclick = async () => {
  118.         if (running) return;
  119.         running = true;
  120.         mainBtn.disabled = true;
  121.  
  122.         let checked = 0;
  123.         const start = Date.now();
  124.  
  125.         while (running) {
  126.             const { threads, delay } = getConfig();
  127.  
  128.             const batch = Array(threads).fill().map(generateUrl);
  129.             const results = await Promise.all(batch.map(url => isGoodPage(url).then(good => ({url, good}))));
  130.  
  131.             for (const {url, good} of results) {
  132.                 checked++;
  133.                 if (good) {
  134.                     mainBtn.innerHTML = '---ROLL---';
  135.                     window.open(url, '_blank');
  136.                     running = false;
  137.                     setTimeout(() => {
  138.                         mainBtn.innerHTML = '---ROLL---';
  139.                         mainBtn.disabled = false;
  140.                         running = false;
  141.                     }, 3000);
  142.                     return;
  143.                 }
  144.             }
  145.  
  146.             mainBtn.innerHTML = `🔥 ${checked} (~${Math.round(checked / ((Date.now()-start)/1000))} стр/с)`;
  147.  
  148.             await new Promise(r => setTimeout(r, delay));
  149.  
  150.             if (checked > 8000) {
  151.                 mainBtn.innerHTML = ':(';
  152.                 setTimeout(() => {
  153.                     mainBtn.innerHTML = '---ROLL---';
  154.                     mainBtn.disabled = false;
  155.                     running = false;
  156.                 }, 4000);
  157.                 return;
  158.             }
  159.         }
  160.     };
  161. })();
Add Comment
Please, Sign In to add comment