這兩天開始看puppeteer,發現竟然也能被某數的前端js檢測出來!?
github的issue區找了找,原來puppeteer啓動的chrome裏面,是有navigator.webdriver屬性的,搞什麼搞麼,老外真是作那啥還要立牌坊……javascript
issue區裏看到的解決方案:前端
await this.page.evaluateOnNewDocument(() => { Object.defineProperty(navigator, 'webdriver', { get: () => undefined, }); }
可是說實話這個仍是有點問題的,由於用"webdriver" in navigator
仍是能檢測出來。java
想找找到底哪一個環節把"webdriver"屬性加上的,可是文本搜索發現puppeteer源碼中並無……
後來chrome中用chrome:version看了下命令行啓動參數,結果發現了這個:"--enable-automation"……
一看就有問題,爲了確認特地搜了一下這個命令行參數的說明:git
--enable-automation: Inform users that their browser is being controlled by an automated test.
媽蛋純粹是立牌坊用的,其它毛用沒有……github
確認了就能夠幹掉它了,啓動chrome時加個忽略默認參數便可:web
const browser = await puppeteer.launch({ignoreDefaultArgs: ["--enable-automation"]});