Join And Get Free Trial!

Cách bỏ qua reCaptcha v3 trong Python bằng ví dụ mã#

logoNextCaptcha
August 01,2024

Tổng quan#

Tự động hóa tương tác trang web có thể hợp lý hóa đáng kể việc thử nghiệm và các tác vụ lặp lại. Tuy nhiên, một vấn đề thường gặp là nhận dạng reCAPTCHA, nhằm mục đích phân biệt giữa người dùng là con người và bot. Hướng dẫn này sẽ chỉ cho bạn cách giải quyết các thách thức reCAPTCHA v3 bằng Python và dịch vụ NextCaptcha, sử dụng trình giải của con người để xử lý các CAPTCHA này theo cách hợp pháp và có đạo đức.

Sự chuẩn bị#

Trước khi bắt đầu, bạn cần phải:
  • Đăng ký tài khoản NextCaptcha: Truy cập NextCaptcha và đăng ký để nhận khóa API của bạn.

  • Cài đặt các gói Python cần thiết: Đảm bảo bạn có requests đã cài đặt. Bạn có thể cài đặt bằng pip nếu bạn chưa có:

      pip install requests

Tìm Sitekey#

Để giải quyết reCAPTCHA, bạn cần khóa trang web được nhúng trong HTML của trang nơi reCAPTCHA được sử dụng. Sau đây là cách bạn có thể tìm thấy khóa:
  • Điều hướng đến trang có reCAPTCHA.

  • Kiểm tra nguồn của trang: Nhấp chuột phải vào trang và chọn "Kiểm tra" hoặc "Xem nguồn trang".

  • Tìm kiếm khóa trang web: Tìm kiếm data-sitekey thuộc tính trong HTML. Nó sẽ trông giống như thế này:

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

    Sao chép cái này YOUR_SITE_KEY giá trị.

Giải quyết Captcha#

Bây giờ bạn đã có khóa trang web, bạn có thể sử dụng API NextCaptcha để giải quyết thử thách reCAPTCHA.
  • Gửi yêu cầu đến NextCaptcha để giải quyết reCAPTCHA v3:

    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')
     

  • Bình chọn cho giải pháp:

    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}')
     

Gửi Captcha đã giải quyết#

Sau khi có được mã thông báo reCAPTCHA, bạn có thể gửi nó cùng với biểu mẫu hoặc yêu cầu yêu cầu giải pháp CAPTCHA. Sau đây là ví dụ về cách bạn có thể gửi biểu mẫu:
# 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)
 

Mã đầy đủ để giải quyết reCaptcha tự động#

Kết hợp tất cả các bước, đây là mã hoàn chỉnh:

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)
Bằng cách làm theo hướng dẫn này, bạn có thể tự động hóa quy trình giải quyết các thử thách reCAPTCHA v3 theo cách tôn trọng các điều khoản dịch vụ của các trang web mà bạn tương tác.