web-dev-qa-db-ja.com

Puppeteer DeleteNavigator.Webdriver

操り人形師を使ってこすります。 navigator.webdriver property = falseを渡すことはできますが、その小道具を完全に削除する必要があります。

https://bot.sannysoft.com/

Falseをnavigator.webdriverに渡してみました。このトリックは受け継がれます https://intoli.com/blog/not-possible-to-block-chrome-headless/chrome-headless-test.html

しかし https://bot.sannysoft.com/ カント。

これがウェブページテストボットです。このテストでは、ナビゲーターオブジェクトに「webdriver」プロップがあるかどうかを探しています。その真か偽かは気にしません。このwebdriverpropをブラウザから削除する必要があります。

6

コメントできないので、答えを残しておきます。

私も同じ質問をしました、そして@Nodariusの答えは私のために働きました。あなたはそれを受け入れなかったので、私はあなたの問題がまだ続いていると思います。

これはおそらく、実行したとしても、ページが読み込まれる前(またはWebサイトが変数にアクセスする前)にそのコードを実行する必要があるためです。

これは、ページが読み込まれる前にスクリプトを読み込むプロキシ( https://mitmproxy.org/ )を使用して実現しました。

それが役に立てば幸い。

1
Rui Costa

これは動作します

await page.evaluateOnNewDocument(() => {
  window.navigator = {}
})
0
Havish Netla