├── setup.bat ├── start.bat ├── ReadMe ├── package.json └── index.js /setup.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | npm install -------------------------------------------------------------------------------- /start.bat: -------------------------------------------------------------------------------- 1 | :loop 2 | node index 3 | goto loop 4 | -------------------------------------------------------------------------------- /ReadMe: -------------------------------------------------------------------------------- 1 | EXTRACT ALL FILES BEFORE RUNNING SETUP.BAT AND START.BAT! 2 | RULES: 3 | 1. dont mass use 4 | 2. 1 token per 5 minuits 5 | 3. only close the discord tab to verify email 6 | 4. open ACCOUNTS.txt to view generated accounts with email, password and token, and username 7 | 8 | run Setup.bat to install all requirements. 9 | run start.bat to run the acc gen 10 | 11 | NOTE: this is in early access. YOU WILL GET RATE LIMITED FOR 5 MINUITS! 12 | I AM NOT RESPONSIBL EFOR ANY DAMAGE DONE! 13 | 14 | also: joining verified tokens to a server, makes them unverified, due to "SUSPICIOUS ACTIVITY" 15 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Tokens-Gen", 3 | "version": "1.0.0", 4 | "description": "A token gen by Nelectrons", 5 | "main": "index.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | }, 9 | "repository": { 10 | "type": "git", 11 | "url": "git+https://github.com/Nelectrons/Discord-Token-Generator" 12 | }, 13 | "author": "", 14 | "license": "ISC", 15 | "bugs": { 16 | "url": "https://github.com/Nelectrons/Discord-Token-Generator" 17 | }, 18 | "homepage": "https://github.com/Nelectrons/Discord-Token-Generator", 19 | "dependencies": { 20 | "@cliqz/adblocker-puppeteer": "^1.22.2", 21 | "cross-fetch": "^3.1.4", 22 | "i": "^0.3.6", 23 | "npm": "^7.19.1", 24 | "puppeteer": "^10.1.0", 25 | "puppeteer-extra": "^3.1.18", 26 | "puppeteer-extra-plugin-recaptcha": "^3.4.0", 27 | "puppeteer-extra-plugin-stealth": "^2.7.8", 28 | "unique-names-generator": "^4.5.0" 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /index.js: -------------------------------------------------------------------------------- 1 | // REQUIRES CAPTCHA KEY! - OR ENTER MANUALLY, EITHER WORKS 2 | // STILL WORKS! 3 | // Made By Louis Gaming Do Not Leak! 4 | 5 | // Libs 6 | const crypto = require("crypto") 7 | const puppeteer = require('puppeteer-extra') 8 | const StealthPlugin = require('puppeteer-extra-plugin-stealth') 9 | const RecaptchaPlugin = require('puppeteer-extra-plugin-recaptcha') 10 | const { uniqueNamesGenerator, adjectives, colors, animals, countries, names, languages, starWars } = require('unique-names-generator') 11 | const { PuppeteerBlocker } = require('@cliqz/adblocker-puppeteer') 12 | const {fetch} = require('cross-fetch') 13 | const fs = require('fs') 14 | const { Console } = require('console') 15 | 16 | // Settings 17 | const captchakey = '' 18 | const PROXY_ADDR = '' 19 | const PROXY_USERNAME = '' 20 | const PROXY_PASSWORD = '' 21 | const BROWSER_CONFIG = { 22 | args: [ 23 | '--no-sandbox', 24 | '--disable-setuid-sandbox', 25 | '--disable-infobars', 26 | '--window-position=0,0', 27 | "--proxy-server=" + PROXY_ADDR, 28 | '--window-size=1600,900', 29 | ], 30 | defaultViewport: null, 31 | ignoreHTTPSErrors: true, 32 | headless: false, 33 | } 34 | 35 | // Init plugins 36 | puppeteer.use(StealthPlugin()) 37 | 38 | puppeteer.use( 39 | RecaptchaPlugin({ 40 | provider: { 41 | id: '2captcha', 42 | token: captchakey, 43 | }, 44 | visualFeedback: true, 45 | throwOnError: true 46 | }) 47 | ) 48 | 49 | // Console logs 50 | const o = fs.createWriteStream('./stdout.log', {flags:'a'}) 51 | const errorOutput = fs.createWriteStream('./stderr.log', {flags:'a'}) 52 | const accounts = fs.createWriteStream('accounts.txt', {flags:'a'}) 53 | const logger = new Console(o, errorOutput) 54 | 55 | const t0 = process.hrtime(); 56 | function write_log(goodnews, text){ 57 | const t1 = process.hrtime(t0); 58 | const time = (t1[0]* 1000000000 + t1[1]) / 1000000000; 59 | const color = goodnews ? "\x1b[32m" : "\x1b[31m"; 60 | 61 | console.log(`${color} [LOG - ${time}s] \x1b[37m ${text}`); 62 | logger.log(`[LOG - ${time}s] ${text}`); 63 | } 64 | 65 | // Code start there 66 | async function fill_input(page, infoname, info){ 67 | const p = await page.$('input[name=' + infoname + ']'); 68 | await p.focus(); 69 | await page.keyboard.type(info); 70 | } 71 | 72 | async function click_date(page, name, min, max) { 73 | var i = await page.$('[class*=input' + name + "]"); 74 | await i.click(); 75 | var r = Math.floor(Math.random() * (max - min + 1)) + min; 76 | 77 | await page.waitForSelector('[class*=option]'); 78 | await page.$eval("[class$=option]", function(e, r){e.parentNode.childNodes[r].click()}, r); 79 | 80 | return r 81 | } 82 | 83 | async function fill_discord(DiscordPage, username, password, email){ 84 | await DiscordPage.bringToFront(); 85 | await DiscordPage.goto('https://discord.com/register', {"waitUntil" : "networkidle0", timeout: 70000}); 86 | 87 | write_log(true, "Create discord account"); 88 | await click_date(DiscordPage, "Year", 17, 24); 89 | await click_date(DiscordPage, "Day", 0, 28); 90 | await click_date(DiscordPage, "Month", 0, 11); 91 | 92 | DiscordPage.waitForSelector('input[type*=checkbox]').then(() => { 93 | DiscordPage.$eval('input[type*=checkbox]', el => el.click()); 94 | }).catch(e => {}); 95 | 96 | await fill_input(DiscordPage, "username", username); 97 | await fill_input(DiscordPage, "password", password); 98 | await fill_input(DiscordPage, "email", email); 99 | await DiscordPage.$eval('button[type=submit]', (el) => el.click()); 100 | } 101 | 102 | const sleep = milliseconds => { 103 | return new Promise(resolve => setTimeout(resolve, milliseconds)); 104 | } 105 | 106 | async function break_captcha(DiscordPage){ 107 | try { 108 | await DiscordPage.waitForSelector('[src*=sitekey]'); 109 | write_log(false, "Captcha found"); 110 | 111 | while(true){ 112 | try{ 113 | await DiscordPage.solveRecaptchas(); 114 | var t; 115 | 116 | write_log(true, "Captcha passed"); 117 | return true; 118 | } catch(err) { 119 | write_log(false, "Captcha - Error"); 120 | sleep(3000); 121 | } 122 | } 123 | } catch(e){ 124 | write_log(true, "Captcha not found"); 125 | }; 126 | } 127 | 128 | async function generate_email(MailPage){ 129 | write_log(true, "Creating mail"); 130 | PuppeteerBlocker.fromPrebuiltAdsAndTracking(fetch).then((blocker) => { 131 | blocker.enableBlockingInPage(MailPage); 132 | }); 133 | 134 | await MailPage.bringToFront(); 135 | await MailPage.goto("https://temp-mail.org/fr/", { waitUntil: 'networkidle2', timeout: 0}); 136 | var info_id = "#mail"; 137 | 138 | try { 139 | await MailPage.waitForSelector(info_id); 140 | await MailPage.waitForFunction((info_id) => document.querySelector(info_id).value.indexOf("@") != -1, {}, info_id); 141 | 142 | var email = await MailPage.$eval('#mail', el => el.value); 143 | return email; 144 | } catch(e){ 145 | console.log("Found error - Mail generation"); 146 | return false; 147 | }; 148 | } 149 | 150 | async function validate_email(MailPage){ 151 | write_log(true, "Verifying mail"); 152 | await MailPage.bringToFront(); 153 | 154 | while(true){ 155 | await MailPage.mouse.wheel({ deltaY: (Math.random()-0.5)*200 }); 156 | 157 | try { 158 | await MailPage.waitForSelector('[title*=Discord]', {timeout: 500}); 159 | sleep(1000); 160 | await MailPage.$eval('[title*=Discord]', e => e.parentNode.click()); 161 | 162 | await MailPage.waitForSelector("td > a[href*='discord'][style*=background]"); 163 | const elem = await MailPage.$eval("td > a[href*='discord'][style*=background]", el => el.href); 164 | 165 | return elem; 166 | } catch(e){}; 167 | } 168 | } 169 | 170 | async function verif_compte(browser, link){ 171 | const page = await browser.newPage(); 172 | await page.goto(link, {"waitUntil" : "networkidle0", "timeout": 60000}); 173 | break_captcha(page); 174 | } 175 | 176 | async function create_accinfos(browser, d) { 177 | // Variables importantes 178 | const username = uniqueNamesGenerator({dictionaries: [adjectives, colors, animals, countries, names, languages, starWars], separator: '', style: "capital",length: 3,}); 179 | const password = crypto.randomBytes(16).toString('hex'); 180 | const MailPage = (await browser.pages())[0]; 181 | var email; 182 | 183 | while(!email){ 184 | try { 185 | email = await generate_email(MailPage); 186 | } catch(e){}; 187 | } 188 | 189 | write_log(true, `Username: ${username}`); 190 | write_log(true, `Password: ${password}`); 191 | write_log(true, `E-mail: ${email}`); 192 | 193 | // Create acc, pass captcha 194 | const DiscordPage = d; 195 | await fill_discord(DiscordPage, username, password, email); 196 | 197 | const client = d._client; 198 | var token; 199 | 200 | client.on('Network.webSocketFrameSent', ({requestId, timestamp, response}) => { 201 | try { 202 | const json = JSON.parse(response.payloadData); 203 | if(!token && json["d"]["token"]){ 204 | token = json["d"]["token"]; 205 | write_log(true, `Token: ${token}`); 206 | }; 207 | } catch(e){}; 208 | }) 209 | await break_captcha(DiscordPage); 210 | 211 | // Verify email 212 | let page_a_valider = await validate_email(MailPage); 213 | await verif_compte(browser, page_a_valider); 214 | write_log(true, "Account verified"); 215 | 216 | if(!token){ 217 | write_log(false, "Token not found, trying to get it") 218 | await DiscordPage.reload({ waitUntil: ["networkidle0", "domcontentloaded"] }); 219 | }; 220 | 221 | return `${email}:${username}:${password}:${token}`; 222 | } 223 | 224 | (async () => { 225 | console.log("======"); 226 | const browser = await puppeteer.launch(BROWSER_CONFIG); 227 | 228 | try { 229 | const page = await browser.newPage(); 230 | 231 | await page.authenticate({ 232 | username: PROXY_USERNAME, 233 | password: PROXY_PASSWORD 234 | }); 235 | 236 | await page.goto('http://httpbin.org/ip'); 237 | const infos = await create_accinfos(browser, page); 238 | write_log(true, "Complete infos"); 239 | accounts.write(infos + "\n"); 240 | } catch(e) { 241 | console.log(e); 242 | } finally { 243 | write_log(true, "Done"); 244 | try{ 245 | browser.close(); 246 | } catch(e){}; 247 | } 248 | })(); 249 | 250 | 251 | 252 | 253 | 254 | 255 | async function check_proxy(file){ 256 | var proxy = []; 257 | const rl = readline.createInterface({ 258 | input: fs.createReadStream(file), 259 | output: process.stdout, 260 | console: true 261 | }); 262 | for await (const line of rl) { 263 | var s = line.split(":"); 264 | if(s.length == 0){ 265 | continue; 266 | } 267 | }; 268 | return proxy; 269 | } 270 | 271 | --------------------------------------------------------------------------------