web-dev-qa-db-ja.com

Google reCAPTCHA v2はどのように舞台裏で動作しますか?

この投稿はGoogle ReCaptcha v2に関するものです(最新版ではありません)

最近グーグルはユーザーがそれをクリックするだけで "キャプチャ"に合格することを可能にする簡単な "キャプチャ"検証システム( video )を導入した。

しかし、クリックだけでボットと人を区別することができるのでしょうか。

この答え 、(同様の実装を仮定して)、最初に "recaptcha"は隠しキーを生成してそれを隠し入力要素に結びつけ、またチェックボックス(実際のチェックボックスinputではなくdiv)を遅延レンダリングします。クリックされたとき、それを有効な確認キー(すなわち、フォームが提出されたときに確認されなければならないキー)としてそれをマークするためにグーグルバックエンドサーバーに非同期要求(XHR)を送ります)。

しかし、なぜボットがそのクリックを自動化できないのですか(少なくともブラウザベースのボット)。

これはどのように機能するのでしょうか。

287
everlasto

これは憶測ですが、Googleが使用している「リスク分析エンジン」に対するGoogleの言及に基づいています( http://googleonlinesecurity.blogspot.com/2014/12/are-you-robot-introducing-no-captcha.html

私はそれがあなたがクリックする前にどのように振る舞ったか、あなたのカーソルがどのようにチェックまで移動したか(有機的なパス/アクセラレーション)、チェックされました。指紋、GoogleのCookie、コンテンツ、指紋やアカウントに関連付けられたクリック位置の履歴が検出された場合など.

継続的に学習するパターン検出エンジンをだますような方法で「有機的」な振る舞いを偽造することはかなり困難です。よくわからない場合でも、実際のCAPTCHA文字列と一致するように要求されます。

190
AgmLauncher

ReCAPTCHAに対するいくつかのテストを含む新しい論文がリリースされました。

https://www.blackhat.com/docs/asia-16/materials/asia-16-Sivakorn-Im-Not-a-Human-Breaking-the-Google-reCAPTCHA-wp.pdf

ハイライト:

  • (Googleのリソースでサイトを閲覧することによって)+ 9日間クッキーをアクティブにしておくことで、チェックボックスをクリックするだけでreCAPTCHAを渡すことができます。
  • IPごとの要求に基づく制限はありません。
  • ブラウザのユーザーエージェントは本物でなければならず、Googleはユーザーエージェントと一致することを確認するためにあなたの環境に対してテストを実行します。
  • Googleはブラウザがキャンバスをレンダリングできるかどうかをテストします。
  • 画面の解像度とマウスイベントは結果に影響しません。

グーグルはすでにクッキーの脆弱性を修正しており、おそらくIPに基づく行動を制限している。

もう1つの 興味深い発見 は、GoogleがJavaScriptでVMを実行しているため、reCAPTCHAのコードと動作の多くが難読化されていることを示しています。このVMはボットガードとして知られており、reCAPTCHA以外の他のサービスを保護するために使用されます。

https://github.com/neuroradiology/InsideReCaptcha

UPDATE 2017

最近の論文(8月から)がWOOT 2017に掲載され、noCAPTCHA reCAPTCHAオーディオの課題を85%の精度で解決しました。

http://uncaptcha.cs.umd.edu/papers/uncaptcha_woot17.pdf

UPDATE 2018

GoogleはreCAPTCHA v3を導入しています。これは、Webサイトごとに調整された「ヒューマンスコア予測エンジン」のようです。それはreCAPTCHAとウェブサイトの所有者がreCAPTCHAを埋める前に人間対ボットの行動を理解するのを助けるためにウェブサイトの異なるページ(Google Analyticsスクリプトのように働いている)にインストールすることができます。

https://www.google.com/recaptcha/intro/v3beta.html

67
barbolo

私のボットはReCaptchaに対してうまく動いています。

これが私の解決策です。

あなたのボットにこのステップをやらせてください:

まず、マウスをBスプラインのように動かすHuman Mouse Move Functionを書いてください(ソースコードを要求)。これが最も重要なポイントです。

https://www.purevpn.com のようなより良い結果を得るためにもVPNを使用してください

すべてのRecpatchaに対して、次の手順を実行してください。

  1. VPNスイッチIPを最初に使用する場合

  2. ブラウザのCookieをすべて消去する

  3. ブラウザキャッシュをすべてクリアする

  4. これらのUseragentsのいずれかをランダムに設定します。

    a。 Mozilla/5.0(互換; MSIE 9.0; Windows NT 6.1; Trident/5.0)

    b。 Mozilla/5.0(Windows NT 6.1; WOW64; rv:44.0)Gecko/20100101 Firefox/44.0

5人間と一緒にあなたのマウスを動かす

  1. その間にランダムな遅れでクリックしてください

    WM_LBUTTONDOWN

    そして

    WM_LBUTTONUP

  2. Image Captchaからスクリーンショットを撮る

  3. スクリーンショットをに送る

    http://www.deathbycaptcha.com

    または

    https://2captcha.com

そしてそれらを解決させてください。

  1. Captchaソルバーからクリックcooridinatesを受信したら、Human Mouse move Funktionを使用して移動します。

  2. あなたのHuman Mouse Move Funktionを使って移動し、Recaptcha Verifyボタンをクリックしてください。

75%の確率でRecaptchaは解決します

グーグル

トム

20
Ingo

これはオープンテクノロジーではないので、私の推測を提示してください。

グーグルは、人間とロボットを区別するために、前、最中、後からの情報を組み合わせることについて述べている。しかし、私はチェックボックスの最後のクリックについてもっと興味があります。

たとえば、POSTデータ(解決されたCAPTCHA)には、Fingerprintというユーザーの行動から計算された文字列というフィールドがあります。そのチェックボックスの場所についてのフィールドがあるかもしれないと思います。このチェックボックスは、Googleバックエンドによってランダムに生成され、私のサイトの公開鍵によって暗号化された座標系になっていると思います。そのため、ロボットがこのボックスの位置を「推測/計算」する可能性がありますが、サイトの所有者が秘密キーを使用してGETクエリを実行してユーザーの身元を確認すると、Googleによって座標系が復号化されます。そのため、Googleとサイトの所有者だけが所有するこのランダムな座標系で、右クリック(オフセットはいくつかありますが、四角い箱)場所は1回だけです。

3
hakunami