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の応答を返している場合ています。