puppeteer-extra
puppeteer-extra copied to clipboard
Webdriver can be detected
There is a problem, the webdriver can be detected as following:
let usesWebdriver = navigator.__proto__.webdriver
and will evaluate to true
seems like adding delete navigator.__proto__.webdriver;
works to hide this fact
For example in: evasions\navigator.webdriver\index.js
async onPageCreated(page) {
await page.evaluateOnNewDocument(() => {
if (navigator.webdriver === false) {
// Post Chrome 89.0.4339.0 and already good
delete navigator.__proto__.webdriver;
} else if (navigator.webdriver === undefined) {
// Pre Chrome 89.0.4339.0 and already good
} else {
// Pre Chrome 88.0.4291.0 and needs patching
delete Object.getPrototypeOf(navigator).webdriver
}
})
}
@marcusdiy
I cannot get this to work.
> let usesWebdriver = navigator.__proto__.webdriver
< TypeError: The Navigator.webdriver getter can only be used on instances of Navigator
> usesWebdriver = Navigator.__proto__.webdriver
< ReferenceError: Cannot access uninitialized variable.
Can you help? Thanks