XORE21 commited on
Commit
bdaf1b2
·
verified ·
1 Parent(s): 27caf82

Update index.js

Browse files
Files changed (1) hide show
  1. index.js +22 -34
index.js CHANGED
@@ -1,28 +1,30 @@
1
  const express = require('express');
2
  const cors = require('cors');
3
  const { connect } = require("puppeteer-real-browser");
4
- const recaptchav3 = require('./endpoints/recaptchav3');
5
 
 
 
 
 
 
 
 
6
  const app = express();
7
  const port = process.env.PORT || 7860;
8
 
9
  app.use(cors());
10
  app.use(express.json());
11
 
12
- const MAX_CONCURRENT = 5;
13
- let active = 0;
14
 
15
  async function createBrowser() {
 
16
  const { browser, page } = await connect({
17
  headless: false,
18
  args: [
19
  '--no-sandbox',
20
  '--disable-setuid-sandbox',
21
- '--disable-dev-shm-usage',
22
- '--disable-accelerated-2d-canvas',
23
- '--no-first-run',
24
- '--no-zygote',
25
- '--disable-gpu',
26
  '--window-size=1920,1080'
27
  ],
28
  connectOption: { defaultViewport: null }
@@ -32,43 +34,29 @@ async function createBrowser() {
32
 
33
  app.post('/recaptchav3', async (req, res) => {
34
  const { url, siteKey, action } = req.body;
 
 
 
35
 
36
- if (!url || !siteKey) {
37
- return res.status(400).json({ status: "error", message: "Missing url or siteKey" });
38
- }
39
-
40
- if (active >= MAX_CONCURRENT) {
41
- return res.status(429).json({ status: "busy", message: "Server busy" });
42
- }
43
-
44
- active++;
45
  let browserInstance = null;
46
 
47
  try {
48
  const { browser, page } = await createBrowser();
49
  browserInstance = browser;
50
 
51
- page.on('console', msg => console.log('PAGE LOG: ', msg.text()));
52
-
53
  const token = await recaptchav3(page, url, siteKey, action || 'submit');
54
-
55
- res.json({
56
- status: "success",
57
- token: token
58
- });
59
 
60
  } catch (error) {
61
- const errorMessage = error.message || error.toString();
62
- console.error("Critical Error:", errorMessage);
63
- res.status(500).json({ status: "error", message: errorMessage });
64
  } finally {
65
- if (browserInstance) {
66
- try { await browserInstance.close(); } catch {}
67
- }
68
- active--;
69
  }
70
  });
71
 
72
- app.get('/', (req, res) => res.send("Recaptcha V3 Solver Ready!"));
73
-
74
- app.listen(port, () => console.log(`Server running on ${port}`));
 
1
  const express = require('express');
2
  const cors = require('cors');
3
  const { connect } = require("puppeteer-real-browser");
 
4
 
5
+ const puppeteer = require('puppeteer-extra');
6
+ const StealthPlugin = require('puppeteer-extra-plugin-stealth');
7
+
8
+ // Aktifkan Stealth
9
+ puppeteer.use(StealthPlugin());
10
+
11
+ const recaptchav3 = require('./endpoints/recaptchav3');
12
  const app = express();
13
  const port = process.env.PORT || 7860;
14
 
15
  app.use(cors());
16
  app.use(express.json());
17
 
18
+ let activeBrowsers = 0;
 
19
 
20
  async function createBrowser() {
21
+ // Kita gunakan connect dari puppeteer-real-browser tapi dengan settingan stealth
22
  const { browser, page } = await connect({
23
  headless: false,
24
  args: [
25
  '--no-sandbox',
26
  '--disable-setuid-sandbox',
27
+ '--disable-blink-features=AutomationControlled', // Sembunyikan identitas bot
 
 
 
 
28
  '--window-size=1920,1080'
29
  ],
30
  connectOption: { defaultViewport: null }
 
34
 
35
  app.post('/recaptchav3', async (req, res) => {
36
  const { url, siteKey, action } = req.body;
37
+
38
+ if (!url || !siteKey) return res.status(400).json({ status: "error", message: "Missing params" });
39
+ if (activeBrowsers >= 5) return res.status(429).json({ status: "busy", message: "Server busy" });
40
 
41
+ activeBrowsers++;
 
 
 
 
 
 
 
 
42
  let browserInstance = null;
43
 
44
  try {
45
  const { browser, page } = await createBrowser();
46
  browserInstance = browser;
47
 
 
 
48
  const token = await recaptchav3(page, url, siteKey, action || 'submit');
49
+
50
+ res.json({ status: "success", token: token });
 
 
 
51
 
52
  } catch (error) {
53
+ console.error("Handler Error:", error.message);
54
+ res.status(500).json({ status: "error", message: error.message });
 
55
  } finally {
56
+ if (browserInstance) try { await browserInstance.close(); } catch {}
57
+ activeBrowsers--;
 
 
58
  }
59
  });
60
 
61
+ app.get('/', (req, res) => res.send("RV3 Solver Ready"));
62
+ app.listen(port, () => console.log(`Running on ${port}`));