Rianofc commited on
Commit
412fb79
·
verified ·
1 Parent(s): 694f71c

Create kontol.js

Browse files
Files changed (1) hide show
  1. kontol.js +70 -0
kontol.js ADDED
@@ -0,0 +1,70 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ const express = require('express');
2
+ const { chromium } = require('playwright');
3
+
4
+ const app = express();
5
+ const PORT = 7060;
6
+
7
+ app.get('/scrape', async (req, res) => {
8
+ const url = req.query.url;
9
+ if (!url) return res.status(400).json({ error: 'URL is required' });
10
+
11
+ try {
12
+ const browser = await chromium.launch({ headless: true });
13
+ const context = await browser.newContext({
14
+ userAgent: 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36',
15
+ viewport: { width: 1280, height: 720 },
16
+ bypassCSP: true
17
+ });
18
+
19
+ const page = await context.newPage();
20
+ await page.goto(url, { waitUntil: 'domcontentloaded', timeout: 60000 });
21
+ await page.waitForSelector('body');
22
+
23
+ const content = await page.content();
24
+ await browser.close();
25
+
26
+ res.json({ html: content });
27
+ } catch (error) {
28
+ res.status(500).json({ error: 'Failed to scrape the website', details: error.message });
29
+ }
30
+ });
31
+
32
+ app.get('/bypass-cf-media', async (req, res) => {
33
+ const url = req.query.url;
34
+ if (!url) return res.status(400).json({ error: 'URL is required' });
35
+
36
+ try {
37
+ const browser = await chromium.launch({ headless: true });
38
+ const context = await browser.newContext({
39
+ userAgent: 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36',
40
+ viewport: { width: 1280, height: 720 },
41
+ bypassCSP: true
42
+ });
43
+
44
+ const page = await context.newPage();
45
+ await page.goto(url, { waitUntil: 'load', timeout: 60000 });
46
+ await page.waitForSelector('body');
47
+
48
+ const mediaElement = await page.$('img, video, audio, source');
49
+ if (!mediaElement) {
50
+ await browser.close();
51
+ return res.status(404).json({ error: 'No media found' });
52
+ }
53
+
54
+ const buffer = await mediaElement.screenshot() || await mediaElement.evaluate(el => el.src);
55
+ await browser.close();
56
+
57
+ if (typeof buffer === 'string') {
58
+ return res.redirect(buffer);
59
+ }
60
+
61
+ res.setHeader('Content-Type', 'image/png');
62
+ res.send(buffer);
63
+ } catch (error) {
64
+ res.status(500).json({ error: 'Failed to bypass CF or get media', details: error.message });
65
+ }
66
+ });
67
+
68
+ app.listen(PORT, () => {
69
+ console.log(`Server running on http://localhost:${PORT}`);
70
+ });