index.js (2081B)
1 import puppeteer from 'puppeteer'; 2 import { readFile, writeFile } from 'fs/promises'; 3 import { setTimeout } from 'node:timers/promises'; 4 5 import { browseAndScreenshot } from './tasks.js'; 6 7 // Data 8 const args = process.argv.slice(2); 9 if (args.length != 1) { 10 console.log('No url provided.'); 11 process.exit(1); 12 } 13 const url = args[0]; 14 //const url = ''; 15 const useragent = 'Mozilla/5.0 (X11; Linux x86_64; rv:147.0) Gecko/20100101 Firefox/147.0'; 16 const viewport = { width: 1680, height: 900, deviceScaleFactor: 1 }; 17 const cookies = JSON.parse(await readFile('files/cookies.json', 'utf8')); 18 const model = 'llamabot'; 19 20 const shenanigans = async ({ browser, url, useragent, viewport, cookies, task }) => { 21 22 const context = await browser.createBrowserContext(); 23 console.log('Creating new page...'); 24 const page = await context.newPage(); 25 26 await page.setUserAgent(useragent); 27 await page.setViewport(viewport); 28 await page.setCookie(...cookies); 29 30 console.log(`Loading page ${url}...`); 31 await page.goto(url, { waitUntil: 'networkidle2' }); 32 //await page.reload({ waitUntil: "networkidle2" }); 33 34 const title = await page.title(); 35 console.log(`Page title: ${title}\n` + 36 `Waiting an extra 5 seconds...\n`); 37 await setTimeout(5000); 38 //const html = await page.content(); 39 40 const result = await task(page); 41 42 await context.close(); 43 return result; 44 }; 45 46 (async () => { 47 // Launching puppeteer 48 console.log('Launching puppeteer...'); 49 const browser = await puppeteer.launch({ 50 headless: false, 51 args: [ '--no-sandbox', '--disable-setuid-sandbox', '--autoplay-policy=user-gesture-required'/*, '--proxy-server=socks5://127.0.0.1:9050'*/ ] 52 }); 53 54 //const [initialPage] = await browser.pages(); 55 //if (initialPage) await initialPage.close(); 56 57 //const results = await Promise.all([ 58 // shenanigans({ browser: browser, url: url, useragent: useragent, viewport: viewport, cookies: cookies, task: task, model: model }) 59 //]); 60 61 await shenanigans({ browser: browser, url: url, useragent: useragent, viewport: viewport, cookies: cookies, task: browseAndScreenshot }); 62 63 await browser.close(); 64 })();