Hướng dẫn
Nhiệm vụ (Token)
Cloudflare Turnstile

Cloudflare: giải Turnstile

TIP

Tạo tác vụ bằng phương thức createTask và nhận kết quả bằng phương thức getTaskResult.

DANGER

ℹ️ Loại turnstile không yêu cầu proxy, vì vậy bạn chỉ cần sử dụng AntiTurnstileTaskProxyLess

Captcha Turnstile là một nỗ lực khác để thay thế reCaptcha. Chúng tôi tự động hỗ trợ các loại phụ này:

  • turnstile
    • Thủ công
    • Không tương tác
    • Vô hình

Không cần chỉ định loại phụ trong cuộc gọi của bạn. Chưa cần thiết phải cung cấp User-Agent tùy chỉnh của riêng bạn, chúng tôi sẽ bỏ qua tham số này.

Loại tác vụ type như sau

  • AntiTurnstileTaskProxyLess

Tạo tác vụ

Tạo tác vụ bằng phương thức createTask.

Trong quá trình sử dụng turnstile, chúng ta phải nhập websiteURLwebsiteKey, các tham số khác là tùy chọn.

Cấu trúc đối tượng tác vụ

Thuộc tínhKiểuBắt buộcMô tả
typeStringBắt buộcAntiTurnstileTaskProxyLess
websiteURLStringBắt buộcĐịa chỉ của trang đích.
websiteKeyStringBắt buộcKhóa trang web Turnstile.
metadataMap<String,String>Tùy chọnDữ liệu bổ sung của Turnstile. Tài liệu Turnstile
metadata.actionStringTùy chọnGiá trị của thuộc tính data-action của phần tử Turnstile nếu nó tồn tại.
metadata.cdataStringTùy chọnGiá trị của thuộc tính data-cdata của phần tử Turnstile nếu nó tồn tại.

Yêu cầu ví dụ

POST https://api.capsolver.com/createTask
Host: api.capsolver.com
Content-Type: application/json
{
  "clientKey": "YOUR_API_KEY",
  "task": {
    "type": "AntiTurnstileTaskProxyLess",
    "websiteURL": "https://www.yourwebsite.com",
    "websiteKey": "0x4XXXXXXXXXXXXXXXXX",
    "metadata": {
       "action": "login",  //optional
       "cdata": "0000-1111-2222-3333-example-cdata"  //optional
    }
  }
}

Phản hồi ví dụ

{
  "errorId": 0,
  "status": "idle",
  "taskId": "61138bb6-19fb-11ec-a9c8-0242ac110006"   // record taskId
}
 

Nhận kết quả

Sử dụng phương thức getTaskResult để nhận kết quả nhận dạng

Tùy thuộc vào tải hệ thống, bạn sẽ nhận được kết quả trong khoảng từ 1s đến 20s

Yêu cầu ví dụ

POST https://api.capsolver.com/getTaskResult
Host: api.capsolver.com
Content-Type: application/json
{
  "clientKey": "YOUR_API_KEY",
  "taskId": "61138bb6-19fb-11ec-a9c8-0242ac110006"
}

Phản hồi ví dụ

{
  "errorId": 0,
  "taskId": "61138bb6-19fb-11ec-a9c8-0242ac110006",
  "status": "ready",
  "errorCode": null,
  "errorDescription": null,
  "solution": {
    "token": "0.mF74FV8wEufAWOdvOak_xFaVy3lqIDel7SwNhw3GgpICSWwTjYfrQB8mRT1dAJJBEoP7N1sESdp6WH9cTS1T0catWLecG3ayNcjwxVtr3hWfS-dmcBGRTx4xYwI64sAVboYGpIyuDBeMIRC3W8dK35v1nDism9xa595Da5VlXKM7hk7pIXg69lodfiftasIkyD_KUGkxBwxvrmz7dBo10-Y5zvro9hD4QKRjOx7DYj9sumnkyYCDx0m4ImDIIkNswfVTWI2V22wlnpHdvMgdtKYgOIIAU28y9gtdrdDkpkH0GHcDyd15sxQGd9VjwhGZA_mpusUKMsEoGgst2rJ3zA.UWfZupqLlGvlATkPo3wdaw.38d55cd0163610d8ce8c42fcff7b62d8981495cc1afacbb2f14e5a23682a4e13",
    "type": "turnstile",
    "userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36"
  }
}

Sử dụng yêu cầu SDK

# pip install --upgrade capsolver
# export CAPSOLVER_API_KEY='...'
 
import capsolver
 
# capsolver.api_key = "..."
solution = capsolver.solve({
  "type": "AntiTurnstileTaskProxyLess",
  "websiteURL": "https://www.yourwebsite.com",
  "websiteKey": "0x4XXXXXXXXXXXXXXXXX",
  "metadata": {
	 "action": "login"  # optional
  }
})

Mã mẫu

# pip install requests
import requests
import time
 
api_key = "YOUR_API_KEY"  # your api key of capsolver
site_key = "0x4XXXXXXXXXXXXXXXXX"  # site key of your target site
site_url = "https://www.yourwebsite.com"  # page url of your target site
 
def capsolver():
    payload = {
        "clientKey": api_key,
        "task": {
            "type": 'AntiTurnstileTaskProxyLess',
            "websiteKey": site_key,
            "websiteURL": site_url,
            "metadata": {
                "action": ""  # optional
            }
        }
    }
    res = requests.post("https://api.capsolver.com/createTask", json=payload)
    resp = res.json()
    task_id = resp.get("taskId")
    if not task_id:
        print("Failed to create task:", res.text)
        return
    print(f"Got taskId: {task_id} / Getting result...")
 
    while True:
        time.sleep(1)  # delay
        payload = {"clientKey": api_key, "taskId": task_id}
        res = requests.post("https://api.capsolver.com/getTaskResult", json=payload)
        resp = res.json()
        status = resp.get("status")
        if status == "ready":
            return resp.get("solution", {}).get('token')
        if status == "failed" or resp.get("errorId"):
            print("Solve failed! response:", res.text)
            return
 
token = capsolver()
print(token)