UNPKG

rebrowser-playwright-core

Version:

A drop-in replacement for playwright-core patched with rebrowser-patches. It allows to pass modern automation detection tests.

131 lines (130 loc) 5.2 kB
"use strict"; var __create = Object.create; var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __getProtoOf = Object.getPrototypeOf; 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 __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( // If the importer is in node compatibility mode or this is not an ESM // file that has been converted to a CommonJS file using a Babel- // compatible transform (i.e. "__esModule" has not been set), then set // "default" to the CommonJS "module.exports" for node compatibility. isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, mod )); var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); var crServiceWorker_exports = {}; __export(crServiceWorker_exports, { CRServiceWorker: () => CRServiceWorker }); module.exports = __toCommonJS(crServiceWorker_exports); var import_page = require("../page"); var import_crExecutionContext = require("./crExecutionContext"); var import_crNetworkManager = require("./crNetworkManager"); var import_browserContext = require("../browserContext"); var network = __toESM(require("../network")); class CRServiceWorker extends import_page.Worker { constructor(browserContext, session, url) { super(browserContext, url); this._session = session; this._browserContext = browserContext; if (!!process.env.PW_EXPERIMENTAL_SERVICE_WORKER_NETWORK_EVENTS) this._networkManager = new import_crNetworkManager.CRNetworkManager(null, this); session.once("Runtime.executionContextCreated", (event) => { this._createExecutionContext(new import_crExecutionContext.CRExecutionContext(session, event.context)); }); if (this._networkManager && this._isNetworkInspectionEnabled()) { this.updateRequestInterception(); this.updateExtraHTTPHeaders(); this.updateHttpCredentials(); this.updateOffline(); this._networkManager.addSession( session, void 0, true /* isMain */ ).catch(() => { }); } if (process.env["REBROWSER_PATCHES_RUNTIME_FIX_MODE"] === "0") { session.send("Runtime.enable", {}).catch((e) => { }); } session.send("Runtime.runIfWaitingForDebugger").catch((e) => { }); session.on("Inspector.targetReloadedAfterCrash", () => { session._sendMayFail("Runtime.runIfWaitingForDebugger", {}); }); } didClose() { this._networkManager?.removeSession(this._session); this._session.dispose(); super.didClose(); } async updateOffline() { if (!this._isNetworkInspectionEnabled()) return; await this._networkManager?.setOffline(!!this._browserContext._options.offline).catch(() => { }); } async updateHttpCredentials() { if (!this._isNetworkInspectionEnabled()) return; await this._networkManager?.authenticate(this._browserContext._options.httpCredentials || null).catch(() => { }); } async updateExtraHTTPHeaders() { if (!this._isNetworkInspectionEnabled()) return; await this._networkManager?.setExtraHTTPHeaders(this._browserContext._options.extraHTTPHeaders || []).catch(() => { }); } async updateRequestInterception() { if (!this._isNetworkInspectionEnabled()) return; await this._networkManager?.setRequestInterception(this.needsRequestInterception()).catch(() => { }); } needsRequestInterception() { return this._isNetworkInspectionEnabled() && !!this._browserContext._requestInterceptor; } reportRequestFinished(request, response) { this._browserContext.emit(import_browserContext.BrowserContext.Events.RequestFinished, { request, response }); } requestFailed(request, _canceled) { this._browserContext.emit(import_browserContext.BrowserContext.Events.RequestFailed, request); } requestReceivedResponse(response) { this._browserContext.emit(import_browserContext.BrowserContext.Events.Response, response); } requestStarted(request, route) { this._browserContext.emit(import_browserContext.BrowserContext.Events.Request, request); if (route) { const r = new network.Route(request, route); if (this._browserContext._requestInterceptor?.(r, request)) return; r.continue({ isFallback: true }).catch(() => { }); } } _isNetworkInspectionEnabled() { return this._browserContext._options.serviceWorkers !== "block"; } } // Annotate the CommonJS export names for ESM import in node: 0 && (module.exports = { CRServiceWorker });