puppet

Puppeteer script for anything
Log | Files | Refs

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 })();