puppeteer-extra-plugin-stealth
Version:
Stealth mode: Applies various techniques to make detection of headless puppeteer harder.
48 lines (39 loc) • 1.22 kB
JavaScript
const { PuppeteerExtraPlugin } = require('puppeteer-extra-plugin')
const argsToIgnore = [
'--disable-extensions',
'--disable-default-apps',
'--disable-component-extensions-with-background-pages'
]
/**
* A CDP driver like puppeteer can make use of various browser launch arguments that are
* adversarial to mimicking a regular browser and need to be stripped when launching the browser.
*/
class Plugin extends PuppeteerExtraPlugin {
constructor(opts = {}) {
super(opts)
}
get name() {
return 'stealth/evasions/defaultArgs'
}
get requirements() {
return new Set(['runLast']) // So other plugins can modify launch options before
}
async beforeLaunch(options = {}) {
options.ignoreDefaultArgs = options.ignoreDefaultArgs || []
if (options.ignoreDefaultArgs === true) {
// that means the user explicitly wants to disable all default arguments
return
}
argsToIgnore.forEach(arg => {
if (options.ignoreDefaultArgs.includes(arg)) {
return
}
options.ignoreDefaultArgs.push(arg)
})
}
}
module.exports = function (pluginConfig) {
return new Plugin(pluginConfig)
}
module.exports.argsToIgnore = argsToIgnore