webforai
Version:
A library that provides a web interface for AI
77 lines (76 loc) • 2.92 kB
JavaScript
;
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
});