Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // ==UserScript==
- // @name Telegra.ph roll
- // @namespace http://tampermonkey.net/
- // @version 0.5
- // @description -
- // @author Grok
- // @match *://*/*
- // @grant none
- // ==/UserScript==
- (function() {
- 'use strict';
- 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'];
- // Блоклист (арабы, китайцы, крипта и т.д.)
- 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','скам','دولار','ريال','تداول','بيتكوين','币','链','钱包','空投','挖矿','比特币'];
- const blacklistRegex = new RegExp('\\b(' + blacklistWords.join('|') + ')|[\\u0600-\\u06FF\\u0750-\\u077F\\u08A0-\\u08FF]|[\\u4E00-\\u9FFF\\u3400-\\u4DBF\\uF900-\\uFAFF]', 'i');
- // === РЕГУЛЯТОР СКОРОСТИ ===
- let targetPagesPerSecond = 80; // стартовое значение
- // Автоматически подстраивает количество потоков и задержку
- function getConfig() {
- if (targetPagesPerSecond <= 15) return { threads: 8, delay: 800 };
- if (targetPagesPerSecond <= 30) return { threads: 10, delay: 400 };
- if (targetPagesPerSecond <= 50) return { threads: 15, delay: 250 };
- if (targetPagesPerSecond <= 80) return { threads: 20, delay: 150 };
- if (targetPagesPerSecond <= 120) return { threads: 30, delay: 80 };
- return { threads: 40, delay: 30 }; // турбо-режим 120–200+ стр/сек
- }
- function randomDate() {
- const year = 2016 + Math.floor(Math.random() * 10);
- const month = Math.floor(Math.random() * 12) + 1;
- const isLeap = (year % 4 === 0 && year % 100 !== 0) || (year % 400 === 0);
- const daysInMonth = [31, isLeap?29:28,31,30,31,30,31,31,30,31,30,31];
- const day = Math.floor(Math.random() * daysInMonth[month-1]) + 1;
- return {mm:String(month).padStart(2,'0'), dd:String(day).padStart(2,'0'), yy:year.toString().slice(-2)};
- }
- function generateUrl() {
- const t = titles[Math.floor(Math.random()*titles.length)];
- const d = randomDate();
- return `https://telegra.ph/${t}-${d.mm}-${d.dd}-${d.yy}`;
- }
- async function isGoodPage(url) {
- try {
- const controller = new AbortController();
- const timeout = setTimeout(() => controller.abort(), 7000);
- const res = await fetch(url, {signal: controller.signal});
- clearTimeout(timeout);
- if (!res.ok) return false;
- const text = await res.text();
- if (!(/<img|<video|<figure|<iframe/i.test(text))) return false;
- if (blacklistRegex.test(text)) return false;
- return true;
- } catch { return false; }
- }
- // === КНОПКА С РЕГУЛЯТОРОМ ===
- const btn = document.createElement('div');
- btn.style.position = 'fixed';
- btn.style.bottom = '20px';
- btn.style.right = '20px';
- btn.style.zIndex = '999999';
- btn.style.fontFamily = 'Arial, sans-serif';
- btn.style.userSelect = 'none';
- // Основная часть кнопки
- const mainBtn = document.createElement('button');
- mainBtn.innerHTML = '---ROLL---';
- mainBtn.style.padding = '20px 35px';
- mainBtn.style.fontSize = '20px';
- mainBtn.style.fontWeight = 'bold';
- mainBtn.style.background = 'linear-gradient(45deg, #ff006e, #ff5722)';
- mainBtn.style.color = 'white';
- mainBtn.style.border = 'none';
- mainBtn.style.borderRadius = '50px';
- mainBtn.style.boxShadow = '0 0 30px rgba(255,0,110,0.9)';
- mainBtn.style.cursor = 'pointer';
- // Регулятор скорости
- const speedBtn = document.createElement('div');
- speedBtn.innerHTML = `${targetPagesPerSecond} стр/с`;
- speedBtn.style.position = 'absolute';
- speedBtn.style.top = '-40px';
- speedBtn.style.left = '50%';
- speedBtn.style.transform = 'translateX(-50%)';
- speedBtn.style.background = 'rgba(0,0,0,0.8)';
- speedBtn.style.color = '#00ff00';
- speedBtn.style.padding = '8px 8px';
- speedBtn.style.borderRadius = '20px';
- speedBtn.style.fontSize = '14px';
- speedBtn.style.fontWeight = 'bold';
- speedBtn.style.cursor = 'pointer';
- speedBtn.style.transition = 'all 0.2s';
- // Клик по регулятору = смена скорости
- const speeds = [10, 20, 30, 50, 80, 120, 150];
- let currentIndex = 4; // старт на 80
- speedBtn.onclick = (e) => {
- e.stopPropagation();
- currentIndex = (currentIndex + 1) % speeds.length;
- targetPagesPerSecond = speeds[currentIndex];
- speedBtn.innerHTML = `${targetPagesPerSecond}+ стр/с`;
- speedBtn.style.color = targetPagesPerSecond >= 100 ? '#ff00ff' : (targetPagesPerSecond >= 50 ? '#ffff00' : '#00ff00');
- };
- btn.appendChild(speedBtn);
- btn.appendChild(mainBtn);
- document.body.appendChild(btn);
- let running = false;
- mainBtn.onclick = async () => {
- if (running) return;
- running = true;
- mainBtn.disabled = true;
- let checked = 0;
- const start = Date.now();
- while (running) {
- const { threads, delay } = getConfig();
- const batch = Array(threads).fill().map(generateUrl);
- const results = await Promise.all(batch.map(url => isGoodPage(url).then(good => ({url, good}))));
- for (const {url, good} of results) {
- checked++;
- if (good) {
- mainBtn.innerHTML = '---ROLL---';
- window.open(url, '_blank');
- running = false;
- setTimeout(() => {
- mainBtn.innerHTML = '---ROLL---';
- mainBtn.disabled = false;
- running = false;
- }, 3000);
- return;
- }
- }
- mainBtn.innerHTML = `🔥 ${checked} (~${Math.round(checked / ((Date.now()-start)/1000))} стр/с)`;
- await new Promise(r => setTimeout(r, delay));
- if (checked > 8000) {
- mainBtn.innerHTML = ':(';
- setTimeout(() => {
- mainBtn.innerHTML = '---ROLL---';
- mainBtn.disabled = false;
- running = false;
- }, 4000);
- return;
- }
- }
- };
- })();
Add Comment
Please, Sign In to add comment