Kyouka commited on
Commit
bb99323
·
verified ·
1 Parent(s): 8e119b9

Update index.js

Browse files
Files changed (1) hide show
  1. index.js +92 -13
index.js CHANGED
@@ -85,6 +85,53 @@ app.get('/proxy', async (req, res) => {
85
  }
86
  });
87
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
88
  app.all('/imagetopdf', async (req, res) => {
89
  if (!['POST'].includes(req.method)) return res.status(405).json({ success: false, message: 'Method Not Allowed' })
90
 
@@ -291,19 +338,32 @@ app.get('/dongo', async (req, res) => {
291
  });
292
 
293
  app.get('/fetch-page', async (req, res) => {
 
 
 
 
 
 
 
 
 
 
 
 
294
  const browser = await playwright.chromium.launch({
295
- headless: true,
296
- executablePath: '/usr/bin/chromium',
297
- args: ['--no-sandbox']
298
- })
 
299
  const context = await browser.newContext({
300
  extraHTTPHeaders: {
301
  'accept': '*/*',
302
  'accept-language': 'en-US,en;q=0.9,id;q=0.8',
303
  'cache-control': 'no-cache',
304
- 'origin': 'https://doujindesu.tv',
305
  'pragma': 'no-cache',
306
- 'referer': 'https://doujindesu.tv',
307
  'sec-ch-ua': '"Not/A)Brand";v="8", "Chromium";v="126", "Google Chrome";v="126"',
308
  'sec-ch-ua-mobile': '?0',
309
  'sec-ch-ua-platform': '"Windows"',
@@ -314,14 +374,33 @@ app.get('/fetch-page', async (req, res) => {
314
  }
315
  });
316
 
317
- const page = await context.newPage();
318
- await page.goto('https://doujindesu.tv');
319
-
320
- const content = await page.content(); // Get the page content as HTML
321
-
322
- await browser.close();
 
 
 
 
 
 
 
 
 
 
323
 
324
- res.send(content); // Send the page content as response
 
 
 
 
 
 
 
 
 
325
  });
326
 
327
  const PORT = process.env.PORT || 7860
 
85
  }
86
  });
87
 
88
+ app.get('/pages', async (req, res) => {
89
+ const targetUrl = req.query.url;
90
+
91
+ if (!targetUrl) {
92
+ return res.status(400).json({ error: 'Parameter "url" dibutuhkan' });
93
+ }
94
+
95
+ const browser = await playwright.chromium.launch({
96
+ headless: true,
97
+ executablePath: '/usr/bin/chromium', // pastikan path ini benar di server kamu
98
+ args: ['--no-sandbox']
99
+ });
100
+
101
+ const context = await browser.newContext({
102
+ extraHTTPHeaders: {
103
+ 'accept': '*/*',
104
+ 'accept-language': 'en-US,en;q=0.9,id;q=0.8',
105
+ 'cache-control': 'no-cache',
106
+ 'origin': 'https://doujindesu.tv',
107
+ 'pragma': 'no-cache',
108
+ 'referer': 'https://doujindesu.tv',
109
+ 'sec-ch-ua': '"Not/A)Brand";v="8", "Chromium";v="126", "Google Chrome";v="126"',
110
+ 'sec-ch-ua-mobile': '?0',
111
+ 'sec-ch-ua-platform': '"Windows"',
112
+ 'sec-fetch-dest': 'script',
113
+ 'sec-fetch-mode': 'cors',
114
+ 'sec-fetch-site': 'cross-site',
115
+ 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36'
116
+ }
117
+ });
118
+
119
+ try {
120
+ const page = await context.newPage();
121
+ await page.goto(targetUrl, { waitUntil: 'domcontentloaded', timeout: 60000 });
122
+
123
+ // Tunggu ekstra jika perlu ngelewatin challenge
124
+ await page.waitForTimeout(8000);
125
+
126
+ const content = await page.content();
127
+ res.send(content);
128
+ } catch (err) {
129
+ res.status(500).json({ error: 'Gagal fetch halaman', detail: err.message });
130
+ } finally {
131
+ await browser.close();
132
+ }
133
+ });
134
+
135
  app.all('/imagetopdf', async (req, res) => {
136
  if (!['POST'].includes(req.method)) return res.status(405).json({ success: false, message: 'Method Not Allowed' })
137
 
 
338
  });
339
 
340
  app.get('/fetch-page', async (req, res) => {
341
+ const targetUrl = req.query.url;
342
+
343
+ if (!targetUrl) {
344
+ return res.status(400).json({
345
+ developer: "KyoukaDev",
346
+ status: false,
347
+ message: 'Parameter "url" dibutuhkan',
348
+ });
349
+ }
350
+
351
+ const baseUrl = new URL(targetUrl).origin;
352
+
353
  const browser = await playwright.chromium.launch({
354
+ headless: true,
355
+ executablePath: '/usr/bin/chromium', // pastikan path ini valid
356
+ args: ['--no-sandbox']
357
+ });
358
+
359
  const context = await browser.newContext({
360
  extraHTTPHeaders: {
361
  'accept': '*/*',
362
  'accept-language': 'en-US,en;q=0.9,id;q=0.8',
363
  'cache-control': 'no-cache',
364
+ 'origin': baseUrl,
365
  'pragma': 'no-cache',
366
+ 'referer': baseUrl,
367
  'sec-ch-ua': '"Not/A)Brand";v="8", "Chromium";v="126", "Google Chrome";v="126"',
368
  'sec-ch-ua-mobile': '?0',
369
  'sec-ch-ua-platform': '"Windows"',
 
374
  }
375
  });
376
 
377
+ try {
378
+ const page = await context.newPage();
379
+ await page.goto(targetUrl, { waitUntil: 'domcontentloaded', timeout: 60000 });
380
+ await page.waitForTimeout(8000);
381
+
382
+ const content = await page.content();
383
+
384
+ res.json({
385
+ developer: "KyoukaDev",
386
+ status: true,
387
+ data: {
388
+ results: [
389
+ { content }
390
+ ]
391
+ }
392
+ });
393
 
394
+ } catch (err) {
395
+ res.status(500).json({
396
+ developer: "KyoukaDev",
397
+ status: false,
398
+ message: 'Gagal fetch halaman',
399
+ error: err.message
400
+ });
401
+ } finally {
402
+ await browser.close();
403
+ }
404
  });
405
 
406
  const PORT = process.env.PORT || 7860