Spaces:
Paused
Paused
Update index.js
Browse files
index.js
CHANGED
|
@@ -294,12 +294,18 @@ app.get('/fetch-page', async (req, res) => {
|
|
| 294 |
const targetUrl = req.query.url;
|
| 295 |
|
| 296 |
if (!targetUrl) {
|
| 297 |
-
return res.status(400).json({
|
|
|
|
|
|
|
|
|
|
|
|
|
| 298 |
}
|
| 299 |
|
|
|
|
|
|
|
| 300 |
const browser = await playwright.chromium.launch({
|
| 301 |
headless: true,
|
| 302 |
-
executablePath: '/usr/bin/chromium', // pastikan path ini
|
| 303 |
args: ['--no-sandbox']
|
| 304 |
});
|
| 305 |
|
|
@@ -308,9 +314,9 @@ app.get('/fetch-page', async (req, res) => {
|
|
| 308 |
'accept': '*/*',
|
| 309 |
'accept-language': 'en-US,en;q=0.9,id;q=0.8',
|
| 310 |
'cache-control': 'no-cache',
|
| 311 |
-
'origin':
|
| 312 |
'pragma': 'no-cache',
|
| 313 |
-
'referer':
|
| 314 |
'sec-ch-ua': '"Not/A)Brand";v="8", "Chromium";v="126", "Google Chrome";v="126"',
|
| 315 |
'sec-ch-ua-mobile': '?0',
|
| 316 |
'sec-ch-ua-platform': '"Windows"',
|
|
@@ -324,14 +330,27 @@ app.get('/fetch-page', async (req, res) => {
|
|
| 324 |
try {
|
| 325 |
const page = await context.newPage();
|
| 326 |
await page.goto(targetUrl, { waitUntil: 'domcontentloaded', timeout: 60000 });
|
| 327 |
-
|
| 328 |
-
// Tunggu ekstra jika perlu ngelewatin challenge
|
| 329 |
await page.waitForTimeout(8000);
|
| 330 |
|
| 331 |
const content = await page.content();
|
| 332 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 333 |
} catch (err) {
|
| 334 |
-
res.status(500).json({
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 335 |
} finally {
|
| 336 |
await browser.close();
|
| 337 |
}
|
|
|
|
| 294 |
const targetUrl = req.query.url;
|
| 295 |
|
| 296 |
if (!targetUrl) {
|
| 297 |
+
return res.status(400).json({
|
| 298 |
+
developer: "KyoukaDev",
|
| 299 |
+
status: false,
|
| 300 |
+
message: 'Parameter "url" dibutuhkan',
|
| 301 |
+
});
|
| 302 |
}
|
| 303 |
|
| 304 |
+
const baseUrl = new URL(targetUrl).origin;
|
| 305 |
+
|
| 306 |
const browser = await playwright.chromium.launch({
|
| 307 |
headless: true,
|
| 308 |
+
executablePath: '/usr/bin/chromium', // pastikan path ini valid
|
| 309 |
args: ['--no-sandbox']
|
| 310 |
});
|
| 311 |
|
|
|
|
| 314 |
'accept': '*/*',
|
| 315 |
'accept-language': 'en-US,en;q=0.9,id;q=0.8',
|
| 316 |
'cache-control': 'no-cache',
|
| 317 |
+
'origin': baseUrl,
|
| 318 |
'pragma': 'no-cache',
|
| 319 |
+
'referer': baseUrl,
|
| 320 |
'sec-ch-ua': '"Not/A)Brand";v="8", "Chromium";v="126", "Google Chrome";v="126"',
|
| 321 |
'sec-ch-ua-mobile': '?0',
|
| 322 |
'sec-ch-ua-platform': '"Windows"',
|
|
|
|
| 330 |
try {
|
| 331 |
const page = await context.newPage();
|
| 332 |
await page.goto(targetUrl, { waitUntil: 'domcontentloaded', timeout: 60000 });
|
|
|
|
|
|
|
| 333 |
await page.waitForTimeout(8000);
|
| 334 |
|
| 335 |
const content = await page.content();
|
| 336 |
+
|
| 337 |
+
res.json({
|
| 338 |
+
developer: "KyoukaDev",
|
| 339 |
+
status: true,
|
| 340 |
+
data: {
|
| 341 |
+
results: [
|
| 342 |
+
{ content }
|
| 343 |
+
]
|
| 344 |
+
}
|
| 345 |
+
});
|
| 346 |
+
|
| 347 |
} catch (err) {
|
| 348 |
+
res.status(500).json({
|
| 349 |
+
developer: "KyoukaDev",
|
| 350 |
+
status: false,
|
| 351 |
+
message: 'Gagal fetch halaman',
|
| 352 |
+
error: err.message
|
| 353 |
+
});
|
| 354 |
} finally {
|
| 355 |
await browser.close();
|
| 356 |
}
|