UNPKG

puppeteer-pro

Version:

A simple puppeteer wrapper to enable useful plugins with ease

131 lines 5.06 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.connect = connect; exports.launch = launch; const tslib_1 = require("tslib"); const events = tslib_1.__importStar(require("events")); // Puppeteer Defaults const Puppeteer = tslib_1.__importStar(require("puppeteer")); async function connect(options) { const browser = await Puppeteer.connect(options || {}); return createBrowser(browser); } async function launch(options) { if (!options) options = {}; process.env.PUPPETEER_DISABLE_HEADLESS_WARNING = 'true'; const browser = await Puppeteer.launch({ defaultViewport: undefined, ...options }); return createBrowser(browser); } async function createBrowser(puppeteerBrowser) { const browser = puppeteerBrowser; const _close = browser.close; browser.close = async () => { await _close.apply(browser); browser.browserEvents.emit('close'); }; const _createBrowserContext = browser.createBrowserContext; browser.createBrowserContext = async (options) => { const context = await _createBrowserContext.apply(browser, options); return createBrowserContext(context); }; const _newPage = browser.newPage; browser.newPage = async () => { const page = await _newPage.apply(browser); return newPage(page); }; addPluginSupport(browser); return browser; } async function createBrowserContext(puppeteerBrowserContext) { const browser = puppeteerBrowserContext; const _close = browser.close; browser.close = async () => { await _close.apply(browser); browser.browserEvents.emit('close'); }; const _newPage = browser.newPage; browser.newPage = async () => { const page = await _newPage.apply(browser); return newPage(page); }; addPluginSupport(browser); return browser; } function newPage(oldPage) { const page = oldPage; page.waitAndClick = async (selector, waitOptions, clickOptions) => { await page.waitForSelector(selector, waitOptions); await page.click(selector, clickOptions); }; page.waitAndType = async (selector, text, waitOptions, typeOptions) => { await page.waitForSelector(selector, waitOptions); await page.type(selector, text, typeOptions); }; page.withLoader = async (fn, loadingSelector, visibleWaitOptions, hiddenWaitOptions) => { const loadingVisible = page.waitForSelector(loadingSelector, visibleWaitOptions); const ret = await fn(); await loadingVisible; await page.waitForSelector(loadingSelector, hiddenWaitOptions || { hidden: true }); return ret; }; return page; } function addPluginSupport(browser) { browser.plugins = []; browser.browserEvents = new events.EventEmitter(); browser.interceptions = 0; browser.addPlugin = async (plugin) => { browser.plugins.push(plugin); await plugin.init(browser); }; browser.clearPlugins = () => { browser.plugins.forEach(async (plugin) => { await plugin.stop(); }); browser.plugins = []; }; browser.anonymizeUserAgent = async () => { const plugin = new anonymize_user_agent_1.AnonymizeUserAgentPlugin(); await browser.addPlugin(plugin); return plugin; }; browser.avoidDetection = async (options) => { const plugin = new avoid_detection_1.AvoidDetectionPlugin(options); await browser.addPlugin(plugin); return plugin; }; browser.blockResources = async (...resources) => { const plugin = new block_resources_1.BlockResourcesPlugin(resources); await browser.addPlugin(plugin); return plugin; }; browser.disableDialogs = async (logMessages = false) => { const plugin = new disable_dialogs_1.DisableDialogsPlugin(logMessages); await browser.addPlugin(plugin); return plugin; }; browser.manageCookies = async (opts) => { const plugin = new manage_cookies_1.ManageCookiesPlugin(opts); await browser.addPlugin(plugin); return plugin; }; browser.manageLocalStorage = async (opts) => { const plugin = new manage_localstorage_1.ManageLocalStoragePlugin(opts); await browser.addPlugin(plugin); return plugin; }; browser.solveRecaptchas = async (accessToken) => { const plugin = new solve_recaptchas_1.SolveRecaptchasPlugin(accessToken); await browser.addPlugin(plugin); return plugin; }; } const anonymize_user_agent_1 = require("./plugins/anonymize.user.agent"); const avoid_detection_1 = require("./plugins/avoid.detection"); const block_resources_1 = require("./plugins/block.resources"); const disable_dialogs_1 = require("./plugins/disable.dialogs"); const manage_cookies_1 = require("./plugins/manage.cookies"); const manage_localstorage_1 = require("./plugins/manage.localstorage"); const solve_recaptchas_1 = require("./plugins/solve.recaptchas"); //# sourceMappingURL=index.js.map