Spaces:
Build error
Build error
| const express = require('express'); | |
| const { PuppeterHcaptchaSolve } = require("puppeteer-hcaptcha-solver"); | |
| const puppeteer = require("puppeteer"); | |
| const app = express(); | |
| app.use(express.json()); | |
| // Endpoint health check | |
| app.get('/', (req, res) => { | |
| res.json({ | |
| status: 'ok', | |
| message: 'hCaptcha Solver API is running', | |
| endpoints: { | |
| solve: 'POST /solve - Body: { url: string, sitekey: string }' | |
| } | |
| }); | |
| }); | |
| // Endpoint untuk solve hCaptcha | |
| app.post('/solve', async (req, res) => { | |
| const { url, sitekey } = req.body; | |
| if (!url || !sitekey) { | |
| return res.status(400).json({ | |
| error: 'Missing required parameters: url and sitekey' | |
| }); | |
| } | |
| let browser; | |
| try { | |
| // Launch browser dengan konfigurasi headless | |
| browser = await puppeteer.launch({ | |
| headless: true, | |
| args: [ | |
| '--no-sandbox', | |
| '--disable-setuid-sandbox', | |
| '--disable-dev-shm-usage', | |
| '--disable-accelerated-2d-canvas', | |
| '--disable-gpu', | |
| '--window-size=1920x1080' | |
| ] | |
| }); | |
| const captcha = new PuppeterHcaptchaSolve(browser); | |
| const page = await browser.newPage(); | |
| await page.setDefaultNavigationTimeout(60000); | |
| // Navigate ke URL | |
| await page.goto(url, { | |
| waitUntil: 'load', | |
| timeout: 60000 | |
| }); | |
| // Tunggu iframe hCaptcha muncul | |
| await page.waitForSelector("iframe", { timeout: 10000 }); | |
| console.log("hCaptcha detected"); | |
| // Solve captcha | |
| const token = await captcha.solve(page); | |
| await browser.close(); | |
| res.json({ | |
| success: true, | |
| token: token, | |
| message: 'hCaptcha solved successfully' | |
| }); | |
| } catch (error) { | |
| if (browser) { | |
| await browser.close(); | |
| } | |
| console.error('Error solving captcha:', error); | |
| res.status(500).json({ | |
| success: false, | |
| error: error.message | |
| }); | |
| } | |
| }); | |
| // Endpoint untuk solve dengan demo hCaptcha | |
| app.get('/solve-demo', async (req, res) => { | |
| let browser; | |
| try { | |
| browser = await puppeteer.launch({ | |
| headless: true, | |
| args: [ | |
| '--no-sandbox', | |
| '--disable-setuid-sandbox', | |
| '--disable-dev-shm-usage', | |
| '--disable-accelerated-2d-canvas', | |
| '--disable-gpu' | |
| ] | |
| }); | |
| const captcha = new PuppeterHcaptchaSolve(browser); | |
| const page = await browser.newPage(); | |
| await page.setDefaultNavigationTimeout(60000); | |
| await page.goto("https://accounts.hcaptcha.com/demo?sitekey=4c672d35-0701-42b2-88c3-78380b0db560", { | |
| waitUntil: 'load', | |
| timeout: 60000 | |
| }); | |
| await page.waitForSelector("iframe", { timeout: 10000 }); | |
| console.log("hCaptcha detected"); | |
| const token = await captcha.solve(page); | |
| await browser.close(); | |
| res.json({ | |
| success: true, | |
| token: token, | |
| message: 'Demo hCaptcha solved successfully' | |
| }); | |
| } catch (error) { | |
| if (browser) { | |
| await browser.close(); | |
| } | |
| console.error('Error solving captcha:', error); | |
| res.status(500).json({ | |
| success: false, | |
| error: error.message | |
| }); | |
| } | |
| }); | |
| const PORT = process.env.PORT || 7860; | |
| app.listen(PORT, '0.0.0.0', () => { | |
| console.log(`Server running on port ${PORT}`); | |
| }); |