IOTTECH

新しいテクノロジーを世の中に認知してもらうためのブログです。

Web Scraping ~screen scraping, data parsing and other related things~

この記事では、google reCaptcha v2.0を解決するための2captchaサービスへの自動接続のコードを示したいと思います。ずいぶん前、googleはユーザー行動reCaptcha(v2.0)を大幅に複雑化しました。このオンラインサービスは、それを解決する方法を提供します。

 

このサービスが使用する簡単なアルゴリズムは次のとおりです。

ターゲットサイトの公開資格情報(recaptchaの「サイトキー」、サイトURL、オプション:プロキシIP)は、お客様(クライアント)によってコピーされ、2captchaサービスに送信されます。シンプルなWeb開発ツールを使用してそれらを見つけることができます。
サービス終了時の作業者は、提供された資格情報でreCaptchaを解決します。
トークンとして回答を要求し ます。
このトークンは、recaptchaでターゲットサイトフォームの内部で使用 します。


注意:これらのすべての手順は、HTTPのGETおよびPOSTリクエストだけでブラウザを真似せずに行うことができます。
説明の目的のために、我々はrecaptchaでテストの場を作った。

資格情報を取得する
2captchaサービスでは、次のパラメータを提供する必要があります。

リクエストパラメータ 値
キー SERVICE_KEY(2つのキャプチャサービスキー)
googlekey g-recaptchaブロック要素のdata-sitekey属性値
ページング http://testing-ground.scraping.pro/recaptcha(recaptchaを使用したターゲットページのURL)
方法 userrecaptcha

今度はサイトのページに行き、Web開発ツールのrecaptcha htmlコードを調べます(F12を押す)。g-recaptchaブロックでdata-sitekey属性値 を見つけて取得し ます。その値は、単一のサイトの定数です 。googleが提供するsite_key値です。下のショットに青で強調表示されている値を参照してください。2captcha-get-site-key

それを選択して右クリックしてコピーします。

これでgooglekey パラメータ(サイトのGoogle サイトキー )を取得しました 。

次のリクエストのSERVICE_KEYは、2captchaアカウント設定から取得されます。

 

recaptchaソリューションのリクエストを処理するために提出する
上記のパラメータを使用して、2captchaサービス(in.phpエンドポイント)に対してGETまたはPOSTリクエストを行います。

 


Googleトークンをフォームに送信する
これで、g-recaptcha-responseトークンを使用してフォームを送信します。

ターゲットサイト(サーバー側)で、このトークンがチェックされます。サイトのスクリプトは、 g-recaptcha-responseトークンの有効性を確認する要求をgoogleに送信します。それが真であるかどうかは、そのサイトに関係しているかどうかなどです 。Captchaのテスト場では、このトークンはフォームの提出前にチェックされます。これは、ためにアヤックス(XHR)リクエストを通じてトークンを渡すことによって行われますproxy.php今度は、グーグルの問い合わせは、サイトが確認され、Googleの応答を返している場合ています。