Join And Get Free Trial!

2024年にRecaptchaソルバーを使用してWebスクレイピング時にRecaptchaを解決する方法#

logoNextCaptcha
May 20,2024

reCAPTCHAの概要#

reCAPTCHA は、Google が提供する無料のサービスで、ウェブサイトをスパムや不正使用から保護するのに役立ちます。高度なリスク分析技術と適応型チャレンジを使用して、人間とボットを区別します。「CAPTCHA」という用語は、「コンピューターと人間を区別するための完全に自動化された公開チューリング テスト」の略です。 これまで、reCAPTCHA にはいくつかのバージョンがありました。
  • reCAPTCHA v1: これは、歪んだテキストをユーザーに提示し、ユーザーがそれを解読してボックスに入力するというオリジナルバージョンでした。これは書籍やその他の印刷物をデジタル化するのに便利でしたが、人間が解読するのは困難な場合が多かったです。

    • nextcaptcha recaptcha-badge

  • reCAPTCHA v2: このバージョンでは、ユーザーがクリックするよう求められる「私はロボットではありません」チェックボックスが導入されました。システムがユーザーが人間かどうか確信できない場合、画像内のオブジェクトの識別など、追加の課題が提示されます。

    • nextcaptcha RecaptchaLogo

  • reCAPTCHA v3: このバージョンはバックグラウンドで実行され、チャレンジでユーザーを邪魔することはありません。代わりに、Web サイトとのやり取りに基づいて各訪問者にリスク スコアを割り当てます。Web サイトの所有者は、このスコアを使用して、訪問者の対応方法 (ブロック、チャレンジの提示など) を決定できます。

    • nextcaptcha solve-recaptcha-enterprise

reCAPTCHA の解決#

前提条件#

  • ライブラリをリクエスト
    • サンプルコードにはPythonリクエストを使用します
  • 次へCaptchaクライアントキー

ダッシュボードからNextCaptchaクライアントキーを取得します#

NextCaptcha に サインアップ して、無料の API キーと無料トライアル クレジットをすぐに取得してください。

reCAPTCHA を解決するための Python コード#

# create task
    """
        Create NextCaptcha CAPTCHA solver task.
 
        :param task: task of captcha dict.
        :param client_key: the client key form nextcaptcha dashboard.
        :param solft_id: Optional. The value of the 'solft_id'.
        :param callback_url: Optional. callback when the captcha task finish.
        :return: A dictionary containing the solution of the reCAPTCHA.
      """
    def send_task(task, client_key, solft_id, callback_url):
        HOST = "https://api.nextcaptcha.com"
        session = requests.session()
        data = {
            "clientKey": client_key,
            "solftId": solft_id,
            "callbackUrl": callback_url,
            "task": task,
        }
        resp = session.post(url=HOST + "/createTask", json=data)
        if resp.status_code != 200:
            return resp.json()
        resp = resp.json()
        task_id = resp.get("taskId")
 
        start_time = time.time()
        while True:
            if time.time() - start_time > TIMEOUT:
                return {"errorId": 12, "errorDescription": "Timeout", "status": "failed"}
 
            resp = session.post(url=HOST + "/getTaskResult",
                                     json={"clientKey": client_key, "taskId": task_id})
            if resp.status_code != 200:
                return resp.json()
            status = resp.json().get("status")
            if status == READY_STATUS:
                return resp.json()
            if status == FAILED_STATUS:
                return resp.json()
            time.sleep(1)
 

reCAPTCHA v2 を解決するための Python サンプル コード#

  def recaptchav2(self, website_url: str, website_key: str, recaptcha_data_s_value: str = "",
                    is_invisible: bool = False, api_domain: str = "", page_action: str = "") -> dict:
        """
        Solve reCAPTCHA v2 challenge.
 
        :param website_url: The URL of the website where the reCAPTCHA is located.
        :param website_key: The sitekey of the reCAPTCHA.
        :param recaptcha_data_s_value: Optional. The value of the 'data-s' parameter if present.
        :param is_invisible: Optional. Whether the reCAPTCHA is invisible or not.
        :param api_domain: Optional. The domain of the reCAPTCHA API if different from the default.
        :return: A dictionary containing the solution of the reCAPTCHA.
        """
        task = {
            "type": "RecaptchaV2TaskProxyless",
            "websiteURL": website_url,
            "websiteKey": website_key,
            "recaptchaDataSValue": recaptcha_data_s_value,
            "isInvisible": is_invisible,
            "apiDomain": api_domain,
            "pageAction": page_action,
        }
        return send_task(task)

reCAPTCHA v2 Enterprise を解決するための Python サンプル コード#

 
    def recaptchav2enterprise(self, website_url: str, website_key: str, enterprise_payload: dict = {},
                              is_invisible: bool = False, api_domain: str = "", page_action: str = "") -> dict:
        """
        Solve reCAPTCHA v2 Enterprise challenge.
 
        :param website_url: The URL of the website where the reCAPTCHA is located.
        :param website_key: The sitekey of the reCAPTCHA.
        :param enterprise_payload: Optional. Additional enterprise payload parameters.
        :param is_invisible: Optional. Whether the reCAPTCHA is invisible or not.
        :param api_domain: Optional. The domain of the reCAPTCHA API if different from the default.
        :return: A dictionary containing the solution of the reCAPTCHA.
        """
        task = {
            "type": "RecaptchaV2EnterpriseTaskProxyless",
            "websiteURL": website_url,
            "websiteKey": website_key,
            "enterprisePayload": enterprise_payload,
            "isInvisible": is_invisible,
            "apiDomain": api_domain,
            "pageAction": page_action,
        }
        return send_task(task)

reCAPTCHA v3 を解決するための Python サンプル コード#

    def recaptchav3(self, website_url: str, website_key: str, page_action: str = "", api_domain: str = "",
                    proxy_type: str = "", proxy_address: str = "", proxy_port: int = 0, proxy_login: str = "",
                    proxy_password: str = "") -> dict:
        """
        Solve reCAPTCHA v3 challenge.
 
        :param website_url: The URL of the website where the reCAPTCHA is located.
        :param website_key: The sitekey of the reCAPTCHA.
        :param page_action: Optional. The action parameter to use for the reCAPTCHA.
        :param api_domain: Optional. The domain of the reCAPTCHA API if different from the default.
        :param proxy_type: Optional. The type of the proxy (HTTP, HTTPS, SOCKS4, SOCKS5).
        :param proxy_address: Optional. The address of the proxy.
        :param proxy_port: Optional. The port of the proxy.
        :param proxy_login: Optional. The login for the proxy.
        :param proxy_password: Optional. The password for the proxy.
        :return: A dictionary containing the solution of the reCAPTCHA.
        """
        task = {
            "type": "RecaptchaV3TaskProxyless",
            "websiteURL": website_url,
            "websiteKey": website_key,
            "pageAction": page_action,
            "apiDomain": api_domain,
        }
        if proxy_address:
            task["type"] = "RecaptchaV3Task"
            task["proxyType"] = proxy_type
            task["proxyAddress"] = proxy_address
            task["proxyPort"] = proxy_port
            task["proxyLogin"] = proxy_login
            task["proxyPassword"] = proxy_password
        return send_task(task)
 

reCAPTCHA モバイルを解決するための Python サンプル コード#

 
    def recaptcha_mobile(self, app_key: str, app_package_name: str = "", app_action: str = "") -> dict:
        """
        Solve Mobile reCAPTCHA challenge.
 
        :param app_key: The app key of the Mobile reCAPTCHA.
        :param app_package_name: Optional. The package name of the mobile app.
        :param app_action: Optional. The action parameter to use for the Mobile reCAPTCHA.
        :return: A dictionary containing the solution of the Mobile reCAPTCHA.
        """
        task = {
            "type": "RecaptchaMobileProxyless",
            "appKey": app_key,
            "appPackageName": app_package_name,
            "appAction": app_action,
        }
        return send_task(task)
 

結論#

NextCaptcha 高度にメンテナンスされた、最新かつ最も安価なReCaptchaモバイルソルバーサービス、安定した24時間年中無休のサポート
データの取得を成功させるには、CAPTCHA を処理するために完全に信頼できる強力なツールが必要です。NextCaptcha は、すべてのボット対策の課題を克服できる、簡単にセットアップできる API を提供しており、今すぐ 無料で試用 できます。

もっと#