├── .gitignore ├── package.json ├── README.md ├── .github └── workflows │ └── getdomains.yml.DISABLED └── index.js /.gitignore: -------------------------------------------------------------------------------- 1 | botpixelverse.zip 2 | botpxlv.zip 3 | node_modules 4 | package-lock.json 5 | .DS_Store 6 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "dependencies": { 3 | "axios": "^1.6.8", 4 | "cheerio": "^1.0.0-rc.12", 5 | "cheerio-advanced-selectors": "^2.0.1", 6 | "moment": "^2.30.1", 7 | "node-fetch": "^2.6.7", 8 | "random-name": "^0.1.2", 9 | "randomatic": "^3.1.1", 10 | "readline-sync": "^1.4.10", 11 | "request": "^2.88.2" 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # BotPXLVER 2 | 3 | ## Installation 4 | 1. Clone the repository: `git clone https://github.com/gvoze32/botpxlver.git` 5 | 2. Navigate to the project directory: `cd botpxlver` 6 | 3. Install node dependencies: `npm i` 7 | 8 | ## Usage 9 | 1. Run the script: `node index.js` 10 | 11 | Follow the prompts to input the referral code, the number of referrals you want to generate, and get email domains count. 12 | 13 | The script will then proceed to register users with randomly generated email addresses and refer them using the provided referral code. 14 | 15 | ## Additional Notes 16 | - Adjust the delay between requests (`setTimeout`) according to your needs and service limitations to avoid rate-limiting or bans. 17 | -------------------------------------------------------------------------------- /.github/workflows/getdomains.yml.DISABLED: -------------------------------------------------------------------------------- 1 | name: Get Domains 2 | 3 | on: 4 | workflow_dispatch: 5 | schedule: 6 | - cron: '*/360 * * * *' 7 | 8 | jobs: 9 | get-domains: 10 | runs-on: ubuntu-latest 11 | steps: 12 | - uses: actions/checkout@v3 13 | - name: Set up Python 14 | uses: actions/setup-python@v4 15 | with: 16 | python-version: '3.9' 17 | - name: Install dependencies 18 | run: | 19 | python -m pip install --upgrade pip 20 | pip install requests beautifulsoup4 21 | - name: Get email domains 22 | run: | 23 | python get_domains.py 24 | - name: Commit changes 25 | run: | 26 | git config --global user.name 'GitHub Actions' 27 | git config --global user.email 'actions@github.com' 28 | git add domains.txt 29 | git commit -m "Update domains list" || echo "No changes to commit" 30 | git push 31 | -------------------------------------------------------------------------------- /index.js: -------------------------------------------------------------------------------- 1 | const axios = require('axios'); 2 | const fetch = require('node-fetch'); 3 | const cheerio = require('cheerio'); 4 | const random = require('random-name'); 5 | const randomize = require('randomatic'); 6 | const moment = require('moment'); 7 | const readline = require('readline-sync'); 8 | const fs = require('fs'); 9 | const request = require('request'); 10 | const cheerioAdv = require('cheerio-advanced-selectors'); 11 | 12 | const randstr = length => 13 | new Promise((resolve, reject) => { 14 | var text = ""; 15 | var possible = 16 | "abcdefghijklmnopqrstuvwxyz1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ"; 17 | 18 | for (var i = 0; i < length; i++) 19 | text += possible.charAt(Math.floor(Math.random() * possible.length)); 20 | 21 | resolve(text); 22 | }); 23 | 24 | const functionGetLink = (email, domain) => new Promise((resolve, reject) => { 25 | fetch(`https://generator.email/${domain}/${email}`, { 26 | method: "get", 27 | headers: { 28 | accept: "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3", 29 | "accept-encoding": "gzip, deflate, br", 30 | cookie: `_ga=GA1.2.659238676.1567004853; _gid=GA1.2.273162863.1569757277; embx=%5B%22${email}%40${domain}%22%2C%22hcycl%40nongzaa.tk%22%5D; _gat=1; io=io=tIcarRGNgwqgtn40O${randstr(3)}; surl=${domain}%2F${email}`, 31 | "upgrade-insecure-requests": 1, 32 | "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36" 33 | } 34 | }) 35 | .then(res => res.text()) 36 | .then(text => { 37 | let $ = cheerio.load(text); 38 | let src = $('#email-table > div.e7m.row.list-group-item > div.e7m.col-md-12.ma1 > div.e7m.mess_bodiyy.plain > p').text(); 39 | let number = src.replace(/\D/g, ""); 40 | resolve(number); 41 | }) 42 | .catch(err => reject(err)); 43 | }); 44 | 45 | const headers = { 46 | 'Content-Type': 'application/json', 47 | 'Accept': 'application/json', 48 | 'Authorization': null 49 | }; 50 | 51 | (async() => { 52 | var referralCode = readline.question(`[ ${moment().format("HH:mm:ss")} ] ` + 'Reff Code : '); 53 | var jumlah = readline.question(`[ ${moment().format("HH:mm:ss")} ] ` + 'Jumlah Reff : '); 54 | var maildom = readline.question(`[ ${moment().format("HH:mm:ss")} ] ` + 'Jumlah Domain (default: 20): '); 55 | 56 | const url = "https://generator.email/"; 57 | const domains = []; 58 | 59 | for (let i = 0; i < maildom; i++) { 60 | console.log(`[ ${moment().format("HH:mm:ss")} ] ` + `Mengambil domain (${i+1}/` + maildom + `)`); 61 | await new Promise((resolve, reject) => { 62 | request(url, (error, response, body) => { 63 | if (!error && response.statusCode === 200) { 64 | const $ = cheerio.load(body); 65 | cheerioAdv.wrap($); 66 | const divList = $('div.tt-dataset-typeahead_as3gsdr'); 67 | const domainElements = divList.find('p'); 68 | domainElements.each((index, element) => { 69 | const domain = $(element).text(); 70 | if (!domains.includes(domain)) { 71 | domains.push(domain); 72 | } 73 | }); 74 | resolve(); 75 | } else { 76 | reject(error); 77 | } 78 | }); 79 | }); 80 | await new Promise(resolve => setTimeout(resolve, 5000)); 81 | } 82 | 83 | console.log(`[ ${moment().format("HH:mm:ss")} ] ` + `Total domain: ${domains.length}`); 84 | 85 | const otpRequestURL = 'https://api.pixelverse.xyz/api/otp/request'; 86 | const otpVerificationURL = 'https://api.pixelverse.xyz/api/auth/otp'; 87 | const referralURL = 'https://api.pixelverse.xyz/api/referrals/set-referer/'+referralCode; 88 | 89 | async function makeRequest(url, payload) { 90 | try { 91 | const response = await axios.post(url, payload, { headers }); 92 | return response.data; 93 | } catch (error) { 94 | console.error('Error:', error.response.data); 95 | throw error.response.data; 96 | } 97 | } 98 | 99 | async function registerUser(email, domain, otpPayload, referralPayload, i) { 100 | try { 101 | const otpResponse = await makeRequest(otpRequestURL, otpPayload); 102 | console.log(`[ ${moment().format("HH:mm:ss")} ] ` + `Mencoba mendaftar menggunakan email => ${email}`); 103 | 104 | let otp; 105 | let startTime = new Date().getTime(); 106 | do { 107 | otp = await functionGetLink(email.split('@')[0], domain); 108 | console.log(`[ ${moment().format("HH:mm:ss")} ] ` + `Menunggu kode verifikasi...`); 109 | } while (!otp && (new Date().getTime() - startTime) < 30000); 110 | console.log(`[ ${moment().format("HH:mm:ss")} ] ` + `Kode verifikasi: ${otp}`); 111 | 112 | const accessToken = await makeRequest(otpVerificationURL, { email, otpCode: otp }); 113 | console.log(`[ ${moment().format("HH:mm:ss")} ] ` + `Verifikasi kode sukses...`); 114 | 115 | headers.Authorization = accessToken.tokens.access; 116 | 117 | const referralResponse = await axios.put(referralURL, referralPayload, { headers }); 118 | console.log(`[ ${moment().format("HH:mm:ss")} ] ` + `Sukses reff ke ${i}\n`); 119 | } catch (error) { 120 | console.error('[Error]:', error); 121 | } 122 | } 123 | 124 | try { 125 | for (let i = 1; i < jumlah; i++) { 126 | const randomIndex = Math.floor(Math.random() * domains.length); 127 | const domain = domains[randomIndex]; 128 | 129 | var name = random.first() 130 | var lastname = random.last() 131 | var uname = `${name}${lastname}${randomize('0', 2)}` 132 | var email = uname + `@` + domain; 133 | 134 | const otpPayload = { 135 | email: email, 136 | }; 137 | 138 | const referralPayload = { 139 | referralCode: referralCode, 140 | }; 141 | 142 | await registerUser(email, domain, otpPayload, referralPayload, i); 143 | 144 | await new Promise(resolve => setTimeout(resolve, (Math.random() * 10000) + 10000)); 145 | } 146 | } catch (error) { 147 | console.error('[Error]:', error); 148 | } 149 | })(); 150 | --------------------------------------------------------------------------------