XORE21 commited on
Commit
c527565
·
verified ·
1 Parent(s): ab05623

Create turnstile.js

Browse files
Files changed (1) hide show
  1. endpoints/turnstile.js +48 -0
endpoints/turnstile.js ADDED
@@ -0,0 +1,48 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ module.exports = async function (page, url, siteKey) {
2
+ return new Promise(async (resolve, reject) => {
3
+ const timeout = setTimeout(() => reject(new Error("Timeout Turnstile")), 30000);
4
+
5
+ try {
6
+ await page.goto(url, { waitUntil: "domcontentloaded" });
7
+
8
+ const htmlContent = `
9
+ <!DOCTYPE html>
10
+ <html>
11
+ <body>
12
+ <div class="cf-turnstile" data-sitekey="${siteKey}" data-callback="turnstileCallback"></div>
13
+ <script src="https://challenges.cloudflare.com/turnstile/v0/api.js" async defer></script>
14
+ <script>
15
+ function turnstileCallback(token) {
16
+ window.cf_token = token;
17
+ }
18
+ </script>
19
+ </body>
20
+ </html>
21
+ `;
22
+
23
+ await page.setRequestInterception(true);
24
+ page.once('request', request => {
25
+ request.respond({
26
+ status: 200,
27
+ contentType: 'text/html',
28
+ body: htmlContent
29
+ });
30
+ });
31
+
32
+ await page.reload();
33
+
34
+ const waitToken = setInterval(async () => {
35
+ const token = await page.evaluate(() => window.cf_token);
36
+ if (token) {
37
+ clearInterval(waitToken);
38
+ clearTimeout(timeout);
39
+ resolve({ token: token });
40
+ }
41
+ }, 500);
42
+
43
+ } catch (e) {
44
+ clearTimeout(timeout);
45
+ reject(e);
46
+ }
47
+ });
48
+ };