Update app.js
Browse files
app.js
CHANGED
|
@@ -1,13 +1,33 @@
|
|
| 1 |
const express = require('express');
|
| 2 |
const puppeteer = require('puppeteer-extra');
|
| 3 |
const StealthPlugin = require('puppeteer-extra-plugin-stealth');
|
|
|
|
|
|
|
|
|
|
| 4 |
|
| 5 |
puppeteer.use(StealthPlugin());
|
| 6 |
|
| 7 |
const app = express();
|
| 8 |
const PORT = process.env.PORT || 7860;
|
| 9 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 10 |
app.use(express.json());
|
|
|
|
| 11 |
|
| 12 |
const getRandomUserAgent = () => {
|
| 13 |
const userAgents = [
|
|
@@ -200,6 +220,22 @@ app.get('/extract-token', async (req, res) => {
|
|
| 200 |
}
|
| 201 |
}
|
| 202 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 203 |
if (capturedToken) {
|
| 204 |
console.log('Token extracted successfully');
|
| 205 |
res.json({
|
|
@@ -207,6 +243,8 @@ app.get('/extract-token', async (req, res) => {
|
|
| 207 |
accessToken: capturedToken,
|
| 208 |
apiData: capturedData,
|
| 209 |
source: capturedData ? 'network_request' : 'storage',
|
|
|
|
|
|
|
| 210 |
url: url,
|
| 211 |
timestamp: new Date().toISOString()
|
| 212 |
});
|
|
@@ -215,6 +253,8 @@ app.get('/extract-token', async (req, res) => {
|
|
| 215 |
res.json({
|
| 216 |
success: false,
|
| 217 |
message: 'No accessToken found in network requests or storage',
|
|
|
|
|
|
|
| 218 |
url: url,
|
| 219 |
timestamp: new Date().toISOString()
|
| 220 |
});
|
|
|
|
| 1 |
const express = require('express');
|
| 2 |
const puppeteer = require('puppeteer-extra');
|
| 3 |
const StealthPlugin = require('puppeteer-extra-plugin-stealth');
|
| 4 |
+
const multer = require('multer');
|
| 5 |
+
const path = require('path');
|
| 6 |
+
const fs = require('fs');
|
| 7 |
|
| 8 |
puppeteer.use(StealthPlugin());
|
| 9 |
|
| 10 |
const app = express();
|
| 11 |
const PORT = process.env.PORT || 7860;
|
| 12 |
|
| 13 |
+
const storage = multer.diskStorage({
|
| 14 |
+
destination: (req, file, cb) => {
|
| 15 |
+
const uploadsDir = './uploads';
|
| 16 |
+
if (!fs.existsSync(uploadsDir)) {
|
| 17 |
+
fs.mkdirSync(uploadsDir);
|
| 18 |
+
}
|
| 19 |
+
cb(null, uploadsDir);
|
| 20 |
+
},
|
| 21 |
+
filename: (req, file, cb) => {
|
| 22 |
+
const timestamp = Date.now();
|
| 23 |
+
cb(null, `screenshot-${timestamp}.png`);
|
| 24 |
+
}
|
| 25 |
+
});
|
| 26 |
+
|
| 27 |
+
const upload = multer({ storage });
|
| 28 |
+
|
| 29 |
app.use(express.json());
|
| 30 |
+
app.use('/uploads', express.static('uploads'));
|
| 31 |
|
| 32 |
const getRandomUserAgent = () => {
|
| 33 |
const userAgents = [
|
|
|
|
| 220 |
}
|
| 221 |
}
|
| 222 |
|
| 223 |
+
const timestamp = Date.now();
|
| 224 |
+
const filename = `screenshot-${timestamp}.png`;
|
| 225 |
+
const filepath = path.join('./uploads', filename);
|
| 226 |
+
|
| 227 |
+
if (!fs.existsSync('./uploads')) {
|
| 228 |
+
fs.mkdirSync('./uploads');
|
| 229 |
+
}
|
| 230 |
+
|
| 231 |
+
const screenshot = await page.screenshot({
|
| 232 |
+
path: filepath,
|
| 233 |
+
fullPage: false,
|
| 234 |
+
type: 'png'
|
| 235 |
+
});
|
| 236 |
+
|
| 237 |
+
const screenshotUrl = `${req.protocol}://${req.get('host')}/uploads/${filename}`;
|
| 238 |
+
|
| 239 |
if (capturedToken) {
|
| 240 |
console.log('Token extracted successfully');
|
| 241 |
res.json({
|
|
|
|
| 243 |
accessToken: capturedToken,
|
| 244 |
apiData: capturedData,
|
| 245 |
source: capturedData ? 'network_request' : 'storage',
|
| 246 |
+
screenshotUrl: screenshotUrl,
|
| 247 |
+
screenshotPath: filepath,
|
| 248 |
url: url,
|
| 249 |
timestamp: new Date().toISOString()
|
| 250 |
});
|
|
|
|
| 253 |
res.json({
|
| 254 |
success: false,
|
| 255 |
message: 'No accessToken found in network requests or storage',
|
| 256 |
+
screenshotUrl: screenshotUrl,
|
| 257 |
+
screenshotPath: filepath,
|
| 258 |
url: url,
|
| 259 |
timestamp: new Date().toISOString()
|
| 260 |
});
|