UNPKG

webforai

Version:

A library that provides a web interface for AI

77 lines (76 loc) 2.92 kB
"use strict"; var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __hasOwnProp = Object.prototype.hasOwnProperty; var __export = (target, all) => { for (var name in all) __defProp(target, name, { get: all[name], enumerable: true }); }; var __copyProps = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } return to; }; var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); var playwright_exports = {}; __export(playwright_exports, { loadHtml: () => loadHtml }); module.exports = __toCommonJS(playwright_exports); var import_playwright_core = require("playwright-core"); const SUPER_BYPASS_DEVICE = { userAgent: "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36", viewport: { width: 1920, height: 1080 }, deviceScaleFactor: 1, hasTouch: false, isMobile: false, javaScriptEnabled: true, locale: "en-US", timezoneId: "America/New_York" }; const loadHtml = async (url, options) => { const { browser, waitUntil, timeout, superBypassMode } = options ?? {}; const _browser = browser ?? await import_playwright_core.chromium.launch({ headless: true }); const context = await _browser.newContext(superBypassMode ? SUPER_BYPASS_DEVICE : import_playwright_core.devices["Desktop Chrome"]); if (superBypassMode) { await context.addInitScript(() => { Object.defineProperty(navigator, "webdriver", { get: () => void 0 }); Object.defineProperty(navigator, "languages", { get: () => ["en-US", "en"] }); Object.defineProperty(navigator, "plugins", { get: () => [1, 2, 3, 4, 5] }); }); } const page = await context.newPage(); if (superBypassMode) { await page.route("**/*.js", (route) => { if (route.request().url().includes("captcha-delivery")) { return route.abort(); } return route.continue(); }); } await page.goto(url, { waitUntil: waitUntil ?? "load", timeout }); await page.evaluate(() => { const elements = document.querySelectorAll("*"); for (const element of elements) { const rect = element.getBoundingClientRect(); element.setAttribute("data-rwidth", rect.width.toString()); element.setAttribute("data-rheight", rect.height.toString()); } }); const html = await page.content(); await page.close(); if (browser) { await context.close(); } else { await _browser.close(); } return html; }; // Annotate the CommonJS export names for ESM import in node: 0 && (module.exports = { loadHtml });