Changing window.navigator within puppeteer to bypass antibot system Changing window.navigator within puppeteer to bypass antibot system selenium selenium

Changing window.navigator within puppeteer to bypass antibot system


Try this,

First, remove the definition, it will not work if you define and delete from prototype.

Object.defineProperty(navigator, 'webdriver', ()=>{}) // <-- delete this part

Replace your code with this one.

delete navigator.__proto__.webdriver;

Result:enter image description here

Why does it work?

Removing directly just remove the instance of the object rather than the actual definition. The getter and setter is still there, so browser can find it.

enter image description here

However if you remove from the actual prototype, it will not exist at all in any instance anymore.

enter image description here

Additional Tips

You mentioned you want to make your app undetectable, there are many plugins which achieve the same, for example this package called puppeteer-extra-plugin-stealth includes some cool anti-bot detection techniques. Sometimes it's better to just reuse some packages than to re-create a solution over and over again.

PS: I might be wrong above the above explanation, feel free to guide me so I can improve the answer.