UNPKG

puppeteer-extra-plugin-stealth

Version:

Stealth mode: Applies various techniques to make detection of headless puppeteer harder.

49 lines (42 loc) 1.18 kB
'use strict' const { PuppeteerExtraPlugin } = require('puppeteer-extra-plugin') const withUtils = require('../_utils/withUtils') /** * Pass the Languages Test. Allows setting custom languages. * * @param {Object} [opts] - Options * @param {Array<string>} [opts.languages] - The languages to use (default: `['en-US', 'en']`) */ class Plugin extends PuppeteerExtraPlugin { constructor(opts = {}) { super(opts) } get name() { return 'stealth/evasions/navigator.languages' } get defaults() { return { languages: [] // Empty default, otherwise this would be merged with user defined array override } } async onPageCreated(page) { await withUtils(page).evaluateOnNewDocument( (utils, { opts }) => { const languages = opts.languages.length ? opts.languages : ['en-US', 'en'] utils.replaceGetterWithProxy( Object.getPrototypeOf(navigator), 'languages', utils.makeHandler().getterValue(Object.freeze([...languages])) ) }, { opts: this.opts } ) } } module.exports = function (pluginConfig) { return new Plugin(pluginConfig) }