開い - recaptcha 3はどのように Selenium/Chrome ドライバーを使っているのですか?




selenium 開い て いる ブラウザ python (2)

Recaptcha v3のしくみに興味があります。 具体的にはブラウザのフィンガープリントです。

私がセレン/ chromedriverを通してクロムの例を始めて、ReCaptcha 3( https://recaptcha-demo.appspot.com/recaptcha-v3-request-scores.php )に対してテストするとき、私はいつもセレン/を使うとき0.1のスコアを得るクロームドライバー。

通常のインスタンスでシークレットを使用すると、0.3になります。

私は、JSを注入し、Webドライバオブジェクトを修正し、ソースからwebdriverを再コンパイルし、$ cdc_変数を修正することによって、他の検出システムに勝った。

難読化されたPOSTがサーバーに戻ってきたように見えるので、そこで調査を開始します。

私がセレン/クロムドライバーを走らせているかどうかを決定するために何を探しているのかということについて誰かが何かアドバイスや経験を最初に共有しても構わないと思ったかどうかをチェックしたいです。


キャプチャー

Webサイト はネットワークトラフィックを簡単に検出し、プログラムを BOT として識別できます。 Google は、新しいサイトを作成するときに選択できる 5つ(5つ)の reCAPTCHA をすでにリリースしています。 そのうち4つがアクティブで reCAPTCHA v1 がシャットダウン中です。

reCAPTCHAのバージョンと種類

  • reCAPTCHA v3 (スコアを使用して要求を検証する):reCAPTCHA v3を使用すると、ユーザーの操作なしで対話が正当であるかどうかを確認できます。 スコアを返す純粋なJavaScript APIで、サイトの状況に応じて行動を起こすことができます。たとえば、認証の追加要素、モデレートへの投稿の送信、コンテンツを削る可能性のあるボットの調整などが必要です。
  • reCAPTCHA v2 - "私はロボットではない"チェックボックス : "私はロボットではない"チェックボックスでは、ユーザーがロボットではないことを示すチェックボックスをクリックする必要があります。 これはユーザを即座に(No CAPTCHAを指定せずに)合格させるか、または彼らが人間であるかどうかを検証するように要求します。 これは統合するための最も単純なオプションであり、チェックボックスをレンダリングするために必要なのは2行のHTMLだけです。

  • reCAPTCHA v2 - 目に見えないreCAPTCHAバッジ :目に見えないreCAPTCHAバッジは、ユーザーがチェックボックスをクリックする必要はなく、ユーザーがサイト上の既存のボタンをクリックしたときに直接呼び出されるか、JavaScript API呼び出しを介して呼び出されます。 reCAPTCHA検証が完了したら、統合にはJavaScriptコールバックが必要です。 デフォルトでは、最も疑わしいトラフィックだけがキャプチャを解決するように促されます。 この動作を変更するには、詳細設定でサイトのセキュリティ設定を編集します。

  • reCAPTCHA v2 - Android :reCAPTCHA Androidライブラリは、Google PlayサービスSafetyNet APIの一部です。 このライブラリは、アプリに直接統合できるネイティブのAndroid APIを提供します。 reCAPTCHA APIを呼び出す前に、アプリでGoogle Playサービスを設定し、GoogleApiClientに接続する必要があります。 これはユーザを即座に通過させるか(CAPTCHAプロンプトなしで)、あるいは彼らが人間であるかどうかを検証するように彼らに挑戦するでしょう。
  • reCAPTCHA v1 :2018年3月からreCAPTCHA v1はシャットダウンされました。

溶液

ただし、Webスクレイピング中に検出されないようにするための一般的な方法がいくつかあります。

  • ウェブサイトがあなたのスクリプト/プログラムを決定することができる一番のそして最も重要な属性はあなたの モニターサイズ を通してあります。 そのため、従来の Viewport を使用し ない ことをお勧めします。
  • Webサイトに複数のリクエストを送信する必要がある場合は、リクエストごとに ユーザエージェント を変更し続けます。 ここでは 、SeleniumでGoogle Chromeユーザーエージェントを変更 する 方法 についての詳細なディスカッションを見つけることができます か?
  • 人間のような 振る舞いをシミュレートするには、 WebDriverWait や、 time.sleep(secs) 引き起こす time.sleep(secs) を超えてもスクリプトの実行を遅くする必要があるかもしれません。 ここでは 、pythonでミリ秒の間ウェブドライバをスリープ状態 にする 方法 に関する詳細な議論を見つけることができます。

アウトトロ

思考のためのいくつかの食べ物:


SeleniumとPuppeteerには、自動化されていないブラウザとは異なるブラウザ設定があります。 また、一部のJS関数は要素を操作するためにブラウザに挿入されるため、検出を回避するためにオーバーライドを作成する必要があります。

SeleniumとPuppeteerの検出が検出メカニズムのあるサイトで実行されている間の検出に関するいくつかの点を説明した優れた記事がいくつかあります。

Chromeヘッドレスの新しい技術の検出 - あなたのボットに防御コードを書くためにそれを使うことができます

ヘッドレスクロムを検出してブロックすることは 不可能です - 自動化されたソフトウェアによって起動されたブラウザと実際のものとの間でJSコードが検出できる違いと、それを偽造する方法の違いを明確かつ明確に説明します。

Github - headless-cat-n-mouse - puppeteer + pythonを使用して検出を回避する例





recaptcha-v3