· 4 years ago · Mar 19, 2021, 02:48 PM
1const puppeteer = require('puppeteer-extra')
2const StealthPlugin = require('puppeteer-extra-plugin-stealth')
3const randomName = require('random-name');
4const fsa = require("async-file");
5puppeteer.use(StealthPlugin())
6const get = require('readline-sync')
7
8
9
10
11;(async () => {
12 try{
13 const browser = await puppeteer.launch({
14 headless: true,
15 ignoreHTTPSErrors: true,
16 slowMo: 0,
17 args: ['--window-size=1400,900',
18 '--disable-gpu'
19 ]})
20 const page = await browser.newPage()
21 let firstName = randomName.first().toString()
22 let lastName = randomName.last().toString()
23 let numbers = Math.floor(Math.random() * 1000);
24 let userName = randomName.first().toString() + randomName.last().toString() + numbers
25 const email = "gmail.com"
26 const passWord = "RJDxSGB123ok"
27 await page.goto('https://accounts.google.com/signup/v2/webcreateaccount?hl=en&flowName=GlifWebSignIn&flowEntry=SignUp')
28
29 await page.waitForTimeout(5000)
30 console.log("[*] Google Mail Automation Registration Account");
31 console.log("[*] Author: RJD");
32 await page.setViewport({ width: 1366, height: 695 })
33 console.log("[*] Trying to Fill Identity (with random identity)");
34
35 await page.waitForSelector('.rFrNMe #firstName')
36 await page.click('.rFrNMe #firstName')
37 await page.type('.rFrNMe #firstName', `${firstName}`);
38
39 await page.type('.rFrNMe #lastName',`${lastName}`);
40
41 await page.waitForSelector('.rFrNMe #username')
42 await page.type('.rFrNMe #username', `${userName}`)
43
44 await page.waitForSelector('#passwd > .aCsJod > .aXBtI > .Xb9hP > .whsOnd')
45 await page.type('#passwd > .aCsJod > .aXBtI > .Xb9hP > .whsOnd',`${passWord}`)
46
47 await page.waitForSelector('#confirm-passwd > .aCsJod > .aXBtI > .Xb9hP > .whsOnd')
48 await page.type('#confirm-passwd > .aCsJod > .aXBtI > .Xb9hP > .whsOnd',`${passWord}`)
49
50 console.log("[*] Process to Verification by OTP");
51
52 await page.waitForSelector('.qhFLie > #accountDetailsNext > .VfPpkd-dgl2Hf-ppHlrf-sM5MNb > .VfPpkd-LgbsSe > .VfPpkd-RLmnJb')
53 await page.click('.qhFLie > #accountDetailsNext > .VfPpkd-dgl2Hf-ppHlrf-sM5MNb > .VfPpkd-LgbsSe > .VfPpkd-RLmnJb')
54
55 await page.waitForTimeout(5000)
56
57 let number = get.question("[*] Number Phone: ")
58 await page.waitForSelector('#phoneNumberId')
59 const input = await page.$('#phoneNumberId');
60 await input.click({ clickCount: 3 })
61 await page.keyboard.press('Backspace');
62 await page.type('#phoneNumberId',`${number}`)
63
64 await page.click('#view_container > div > div > div.pwWryf.bxPAYd > div > div.zQJV3 > div > div.qhFLie > div > div > button > div.VfPpkd-RLmnJb')
65
66 await page.waitForSelector('#code').then(() => {
67
68 ;(async () => {
69 await page.waitForSelector('#code')
70 let otp = get.question("[*] Code OTP: ")
71 await page.type('#code',`${otp}`)
72 await page.click('#view_container > div > div > div.pwWryf.bxPAYd > div > div.zQJV3 > div.dG5hZc > div.qhFLie > div > div > button > div.VfPpkd-RLmnJb')
73
74 await page.waitForTimeout(2000)
75 await page.waitForSelector('.F8Czgd #month').then(() => {
76 ;(async () => {
77 await page.click('.F8Czgd #month')
78 await page.select('.F8Czgd #month', '2')
79 await page.waitForSelector('.F8Czgd #month')
80 await page.click('.F8Czgd #month')
81
82 await page.waitForSelector('#day')
83 await page.type('#day', '22')
84
85 await page.waitForSelector('.rFrNMe #year')
86 await page.type('.rFrNMe #year','1992')
87
88 await page.waitForSelector('.ZyruUe #gender')
89 await page.click('.ZyruUe #gender')
90
91 await page.select('.ZyruUe #gender', '1')
92
93 await page.waitForSelector('.ZyruUe #gender')
94 await page.click('.ZyruUe #gender')
95
96 await page.waitForSelector('.qhFLie > .FliLIb > .VfPpkd-dgl2Hf-ppHlrf-sM5MNb > .VfPpkd-LgbsSe > .VfPpkd-RLmnJb')
97 await page.click('.qhFLie > .FliLIb > .VfPpkd-dgl2Hf-ppHlrf-sM5MNb > .VfPpkd-LgbsSe > .VfPpkd-RLmnJb')
98
99 await page.waitForTimeout(5000)
100 await page.waitForSelector('#view_container > div > div > div.pwWryf.bxPAYd > div > div.zQJV3 > div.dG5hZc > div.daaWTb > div > div > button > div.VfPpkd-RLmnJb')
101 await page.click('#view_container > div > div > div.pwWryf.bxPAYd > div > div.zQJV3 > div.dG5hZc > div.daaWTb > div > div > button > div.VfPpkd-RLmnJb').then(() => {
102 ;(async () => {
103
104
105 let finishTime = new Date().getTime() + ( 10 * 1000);
106
107 await autoScroll(page, finishTime);
108 await page.waitForTimeout(10000)
109
110 await page.waitForSelector('#termsofserviceNext > div.ZFr60d.CeoRYc')
111 await page.click('#termsofserviceNext > div.ZFr60d.CeoRYc')
112
113 console.log(`[*] Success: ${userName}|${passWord} | Result saved! resultSuccess.txt`);
114
115 fsa.appendFile("resultSuccess.txt", `${userName}+${email} |${passWord}\n`, {encoding: 'utf8'});
116 browser.close()
117 })()}).catch(e => {
118 console.log(`[*] Automation is Failed, Run again!`)
119 browser.close()
120 });
121
122 })()}).catch(e => {
123
124 console.log(`[*] OTP is Wrong`)
125 browser.close()
126
127 })
128
129 })()
130 }).catch(e => {
131
132 console.log(`[*] Check your Phone Number or It's Used Too Many Times!`)
133 browser.close()
134 });
135 }
136
137 catch(e){
138 console.log("[*] Error to Open URL")
139
140 }
141})()
142
143async function autoScroll(page, finishTime){
144 await page.evaluate(async (finishTime) => {
145
146 await new Promise((resolve, reject) => {
147 var totalHeight = 0;
148 var distance = 100;
149 var timer = setInterval(() => {
150 var scrollHeight = document.body.scrollHeight;
151 window.scrollBy(0, distance);
152 totalHeight += distance;
153
154 if(totalHeight >= scrollHeight || new Date().getTime() > finishTime){
155
156 clearInterval(timer);
157 resolve();
158 }
159
160 }, 120);
161 });
162 }, finishTime);
163}