Join And Get Free Trial!

コード例を使用して Python で reCaptcha v3 をバイパスする方法#

logoNextCaptcha
August 01,2024

概要#

ウェブサイトのインタラクションを自動化すると、テストや反復的なタスクを大幅に効率化できます。ただし、人間のユーザーとボットを区別することを目的とした reCAPTCHA 認識が頻繁に問題になります。このガイドでは、Python と NextCaptcha サービスを使用して reCAPTCHA v3 の課題を解決する方法を説明します。NextCaptcha サービスは、人間のソルバーを使用してこれらの CAPTCHA を倫理的かつ合法的に処理します。

準備#

始める前に、次のことを行う必要があります。
  • NextCaptchaアカウントにサインアップ: NextCaptcha にアクセスし、サインアップして API キーを取得してください。

  • 必要なPythonパッケージをインストールする: 必ず requests インストールされています。まだインストールしていない場合は、pip を使用してインストールできます。

      pip install requests

サイトキーを見つける#

reCAPTCHA を解決するには、reCAPTCHA が使用されているページの HTML に埋め込まれているサイト キーが必要です。見つける方法は次のとおりです。
  • reCAPTCHAのあるページに移動します.

  • ページのソースを調べる: ページを右クリックして、「検査」または「ページ ソースの表示」を選択します。

  • サイトキーを検索: 探してください data-sitekey HTML の属性。次のようになります。

      <div class="g-recaptcha" data-sitekey="YOUR_SITE_KEY"></div>

    これをコピー YOUR_SITE_KEY 価値.

キャプチャを解読する#

サイト キーを取得したら、NextCaptcha API を使用して reCAPTCHA チャレンジを解決できます。
  • reCAPTCHA v3を解決するためにNextCaptchaにリクエストを送信します:

    import requests
     
    # Your NextCaptcha API key
    API_KEY = 'YOUR_NextCAPTCHA_API_KEY'
     
    # The URL of the page with the reCAPTCHA
    url = 'URL_OF_THE_PAGE_WITH_RECAPTCHA'
     
    # The site key for reCAPTCHA v3
    site_key = 'YOUR_SITE_KEY'
     
    # Requesting the reCAPTCHA solution
    response = requests.post('https://api.nextcaptcha.com/createTask', data={
        "clientKey": API_KEY,
        "task": {
            "type":"RecaptchaV3TaskProxyless",
            "websiteURL":url,
            "websiteKey":site_key
        }
    })
     
    request_id = response.json().get('taskId')
     

  • 解決策を求める投票:

    import time
     
    solution = None
    while solution is None:
        time.sleep(1)  # Wait a few seconds before checking again
        response = requests.post('https://api.nextcaptcha.com/getTaskResult', data={
    		  "clientKey": "api key",
    		  "taskId": request_id
    		})
        if response.json().get('errorId') == 0:
            solution = response.json().get('solution')
     
    # The reCAPTCHA token
    recaptcha_token = solution["gRecaptchaResponse"]
    print(f'reCAPTCHA token: {recaptcha_token}')
     

解決したキャプチャを送信する#

reCAPTCHA トークンを取得したら、CAPTCHA ソリューションを必要とするフォームまたはリクエストと一緒に送信できます。フォームを送信する方法の例を次に示します。
# URL where the form is submitted
form_submit_url = 'URL_TO_SUBMIT_FORM'
 
# Form data including the reCAPTCHA token
form_data = {
    'some_form_field': 'value',
    'g-recaptcha-response': recaptcha_token
}
 
# Submit the form
response = requests.post(form_submit_url, data=form_data)
print(response.text)
 

自動 reCaptcha 解決の完全なコード#

すべてのステップを組み合わせた完全なコードは次のとおりです。:

import requests
import time
 
# Your NextCaptcha API key
API_KEY = 'YOUR_NextCAPTCHA_API_KEY'
 
# The URL of the page with the reCAPTCHA
url = 'URL_OF_THE_PAGE_WITH_RECAPTCHA'
 
# The site key for reCAPTCHA v3
site_key = 'YOUR_SITE_KEY'
 
# Requesting the reCAPTCHA solution
response = requests.post('https://api.nextcaptcha.com/createTask', data={
    "clientKey": API_KEY,
    "task": {
        "type":"RecaptchaV3TaskProxyless",
        "websiteURL":url,
        "websiteKey":site_key
    }
})
 
task_id = response.json().get('taskId')
 
solution = None
while solution is None:
    time.sleep(1)  # Wait a few seconds before checking again
    response = requests.post('https://api.nextcaptcha.com/getTaskResult', data={
		  "clientKey": "api key",
		  "taskId": task_id
		})
    if response.json().get('errorId') == 0:
        solution = response.json().get('solution')
 
# The reCAPTCHA token
recaptcha_token = solution["gRecaptchaResponse"]
print(f'reCAPTCHA token: {recaptcha_token}')
 
# URL where the form is submitted
form_submit_url = 'URL_TO_SUBMIT_FORM'
 
# Form data including the reCAPTCHA token
form_data = {
    'some_form_field': 'value',
    'g-recaptcha-response': recaptcha_token
}
 
# Submit the form
response = requests.post(form_submit_url, data=form_data)
print(response.text)
このガイドに従うことで、やり取りするサイトの利用規約を遵守しながら、reCAPTCHA v3 チャレンジを解決するプロセスを自動化できます。