Spaces:
Paused
Paused
Upload 2 files
Browse files- api.js +41 -0
- package.json +20 -0
api.js
ADDED
|
@@ -0,0 +1,41 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
const express = require('express');
|
| 2 |
+
const axios = require('axios');
|
| 3 |
+
const jwt = require('jsonwebtoken');
|
| 4 |
+
const vm = require('vm');
|
| 5 |
+
const { JSDOM } = require('jsdom');
|
| 6 |
+
|
| 7 |
+
const app = express();
|
| 8 |
+
app.use(express.json());
|
| 9 |
+
|
| 10 |
+
async function hsw(req, host) {
|
| 11 |
+
try {
|
| 12 |
+
const url = jwt.decode(req, { complete: true }).payload.l;
|
| 13 |
+
const hsw = (await axios.get(`${url}/hsw.js`)).data;
|
| 14 |
+
const dom = new JSDOM(`<!DOCTYPE html><p>Hello world</p>`);
|
| 15 |
+
const script = new vm.Script(`Object.defineProperty(navigator, "webdriver", {"get": () => false}); ${hsw}; hsw("${req}");`);
|
| 16 |
+
dom.window.navigator.language = 'en-US'; // Set the language to English (US)
|
| 17 |
+
dom.window.navigator.languages = ['en-US', 'en']
|
| 18 |
+
dom.window.location.host = host;
|
| 19 |
+
const context = vm.createContext(dom.window); // Pass the entire window object to createContext
|
| 20 |
+
const result = await script.runInContext(context);
|
| 21 |
+
return String(result);
|
| 22 |
+
} catch (e) {
|
| 23 |
+
console.error(e);
|
| 24 |
+
return "None";
|
| 25 |
+
}
|
| 26 |
+
}
|
| 27 |
+
|
| 28 |
+
|
| 29 |
+
app.post('/hsw', async (req, res) => {
|
| 30 |
+
const data = req.body;
|
| 31 |
+
const result = await hsw(data.req, data.host);
|
| 32 |
+
res.send(result);
|
| 33 |
+
});
|
| 34 |
+
|
| 35 |
+
app.get('/ping', (req, res) => {
|
| 36 |
+
res.send("pong");
|
| 37 |
+
});
|
| 38 |
+
|
| 39 |
+
app.listen(5000, '0.0.0.0', () => {
|
| 40 |
+
console.log('Server is running on port 5000');
|
| 41 |
+
});
|
package.json
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"name": "hcaptcha-solver",
|
| 3 |
+
"version": "1.0.0",
|
| 4 |
+
"description": "proof solver",
|
| 5 |
+
"main": "api.js",
|
| 6 |
+
"scripts": {
|
| 7 |
+
"start": "node api.js",
|
| 8 |
+
"test": "echo \"Error: no test specified\" && exit 1"
|
| 9 |
+
},
|
| 10 |
+
"author": "Anti Bot",
|
| 11 |
+
"license": "GPL-3.0",
|
| 12 |
+
"dependencies": {
|
| 13 |
+
"axios": "^0.21.1",
|
| 14 |
+
"express": "^4.17.1",
|
| 15 |
+
"jsonwebtoken": "^8.5.1",
|
| 16 |
+
"jsdom": "^16.5.1",
|
| 17 |
+
"vm": "^0.1.0"
|
| 18 |
+
},
|
| 19 |
+
"private": true
|
| 20 |
+
}
|