Cách vượt qua Cloudflare Turnstile bằng Python#

logoNextCaptcha
March 26,2026

Cloudflare Turnstile là gì?#

Cloudflare Turnstile là giải pháp thay thế CAPTCHA thông minh được thiết kế để xác minh người dùng mà không cần thử thách phiền toái. Khác với CAPTCHA truyền thống yêu cầu chọn hình ảnh hoặc nhập văn bản, Turnstile chạy các thử thách trình duyệt ẩn để xác định khách truy cập có phải là người thật hay không. Nó được sử dụng rộng rãi trên các trang web dùng dịch vụ Cloudflare và có thể là rào cản lớn cho việc thu thập dữ liệu web và các quy trình tự động hóa.

Yêu cầu trước khi bắt đầu#

Trước khi bắt đầu, hãy đảm bảo bạn đã cài đặt Python 3.7 trở lên. Bạn cũng cần khóa API NextCaptcha — đăng ký tại NextCaptcha để nhận tín dụng dùng thử miễn phí. Sau đó cài đặt NextCaptcha Python SDK:
pip install nextcaptcha-python

Bắt đầu nhanh với NextCaptcha SDK#

Đầu tiên, tạo một instance NextCaptchaAPI với khóa API của bạn. Bạn có thể tìm client key trong bảng điều khiển NextCaptcha:
from nextcaptcha import NextCaptchaAPI
 
api = NextCaptchaAPI(client_key="YOUR_CLIENT_KEY")
Sau đó gọi phương thức turnstile với URL trang web mục tiêu và khóa site Turnstile. Khóa site có thể tìm thấy trong thuộc tính data-sitekey của widget Turnstile trên trang mục tiêu:
result = api.turnstile(
    website_url="https://example.com",
    website_key="0x4XXXXXXXXXXXXXXXXX"
)
 
if result["status"] == "ready":
    token = result["solution"]["token"]
    print(f"Turnstile token: {token}")

Ví dụ hoàn chỉnh với xử lý lỗi#

Đây là ví dụ sẵn sàng cho production với xử lý lỗi và hỗ trợ biến môi trường:
import os
import sys
from nextcaptcha import NextCaptchaAPI
 
CLIENT_KEY = os.getenv("NEXTCAPTCHA_KEY", "YOUR_CLIENT_KEY")
WEBSITE_URL = "https://example.com"
WEBSITE_KEY = "0x4XXXXXXXXXXXXXXXXX"
 
api = NextCaptchaAPI(client_key=CLIENT_KEY)
 
try:
    result = api.turnstile(
        website_url=WEBSITE_URL,
        website_key=WEBSITE_KEY
    )
 
    if result["status"] == "ready":
        token = result["solution"]["token"]
        print(f"Turnstile solved successfully!")
        print(f"Token: {token[:50]}...")
    else:
        print(f"Failed to solve: {result.get('errorDescription', 'Unknown error')}")
        sys.exit(1)
 
except Exception as e:
    print(f"Error: {e}")
    sys.exit(1)

Sử dụng API trực tiếp (không dùng SDK)#

Nếu bạn không muốn dùng SDK, có thể gọi trực tiếp API NextCaptcha bằng thư viện requests. Cách này cho phép bạn kiểm soát hoàn toàn các yêu cầu HTTP:
import requests
import time
 
API_KEY = "YOUR_API_KEY"
WEBSITE_URL = "https://example.com"
WEBSITE_KEY = "0x4XXXXXXXXXXXXXXXXX"
 
# Step 1: Create task
response = requests.post("https://api.nextcaptcha.com/createTask", json={
    "clientKey": API_KEY,
    "task": {
        "type": "TurnstileTaskProxyless",
        "websiteURL": WEBSITE_URL,
        "websiteKey": WEBSITE_KEY
    }
})
 
data = response.json()
if data.get("errorId", 0) != 0:
    print(f"Error creating task: {data.get('errorDescription')}")
    exit()
 
task_id = data["taskId"]
print(f"Task created: {task_id}")
 
# Step 2: Poll for result
while True:
    time.sleep(3)
    result = requests.post("https://api.nextcaptcha.com/getTaskResult", json={
        "clientKey": API_KEY,
        "taskId": task_id
    }).json()
 
    if result["status"] == "ready":
        token = result["solution"]["token"]
        print(f"Solved! Token: {token[:50]}...")
        break
    elif result["status"] == "failed":
        print(f"Failed: {result.get('errorDescription')}")
        break
    else:
        print("Waiting for solution...")
Cách này cần hai lệnh gọi API: createTask để gửi thử thách Turnstile, và getTaskResult để truy vấn kết quả. Khuyến nghị khoảng thời gian truy vấn 3 giây để tránh giới hạn tốc độ.

Tổng kết#

Trong hướng dẫn này, chúng tôi đã trình bày hai phương pháp vượt qua Cloudflare Turnstile bằng Python: SDK NextCaptcha cho cách tiếp cận đơn giản, và API trực tiếp để kiểm soát hoàn toàn. NextCaptcha tự động giải quyết thử thách Turnstile và trả về token hợp lệ. Để biết thêm chi tiết, xem các liên kết bên dưới: