CAPSOLVER
Blog
Cách giải CAPTCHA bằng Python với Botasaurus và CapSolver (Hướng dẫn đầy đủ)

Cách giải CAPTCHAs bằng Python sử dụng Botasaurus và CapSolver (Hướng dẫn đầy đủ)

Logo of CapSolver

Anh Tuan

Data Science Expert

15-Dec-2025

TLDR: Hướng dẫn này minh họa cách kết hợp Botasaurus, khung phần mềm quét dữ liệu web bằng Python với các tính năng chống phát hiện tích hợp, và CapSolver, API giải CAPTCHA, để tự động vượt qua reCAPTCHA v2, reCAPTCHA v3 và Cloudflare Turnstile trong quá trình quét dữ liệu web quy mô lớn. Quy trình cốt lõi bao gồm thiết lập môi trường, sử dụng tiện ích mở rộng CapSolver để xác định tham số CAPTCHA, gọi API CapSolver thông qua hàm trợ giúp Python để nhận token giải pháp, và cuối cùng sử dụng Botasaurus để chèn token vào trang web để gửi biểu mẫu.

Cách giải CAPTCHA trong Python bằng Botasaurus và CapSolver (Hướng dẫn đầy đủ)

Việc quét dữ liệu web quy mô lớn thường gặp phải các CAPTCHA chặn truy cập tự động. Hướng dẫn này minh họa cách kết hợp Botasaurus, khung phần mềm quét dữ liệu web mạnh mẽ, với CapSolver để tự động giải các CAPTCHA reCAPTCHA v2, reCAPTCHA v3 và Cloudflare Turnstile.

Botasaurus là gì?

Botasaurus là khung phần mềm quét dữ liệu web bằng Python, đơn giản hóa tự động hóa trình duyệt với các tính năng chống phát hiện tích hợp. Nó cung cấp giao diện API dựa trên decorator cho các nhiệm vụ trình duyệt.

Tính năng chính:

  • Chống phát hiện: Tính năng ẩn danh tích hợp để tránh phát hiện bot
  • API đơn giản: Cách tiếp cận dựa trên decorator với @browser
  • Thực thi JavaScript: Chạy mã JavaScript tùy chỉnh trong ngữ cảnh trình duyệt
  • Lựa chọn phần tử: Thao tác DOM dễ dàng với các lựa chọn CSS

Cài đặt:

bash Copy
pip install botasaurus

Sử dụng cơ bản:

python Copy
from botasaurus.browser import browser, Driver

@browser()
def scrape_page(driver: Driver, data):
    driver.get("https://example.com")
    title = driver.get_text("h1")
    return {"title": title}

# Chạy trình quét
result = scrape_page()

CapSolver là gì?

CapSolver là dịch vụ giải CAPTCHA cung cấp API để giải các loại CAPTCHA bao gồm reCAPTCHA và Cloudflare Turnstile.

Các loại CAPTCHA được hỗ trợ:

  • reCAPTCHA v2 (hộp kiểm và không hiển thị)
  • reCAPTCHA v3 (dựa trên điểm số)
  • reCAPTCHA Enterprise
  • Cloudflare Turnstile
  • Và nhiều loại khác

Lấy khóa API của bạn:

  1. Tạo tài khoản tại Bảng điều khiển CapSolver
  2. Nạp tiền vào tài khoản của bạn
  3. Sao chép khóa API của bạn (bắt đầu bằng CAP-)

Thiết lập dự án

Cài đặt phụ thuộc

bash Copy
pip install botasaurus capsolver requests python-dotenv

Cấu hình môi trường

Tạo tệp .env trong thư mục gốc dự án:

env Copy
CAPSOLVER_API_KEY=CAP-YOUR_API_KEY_HERE

Module cấu hình chung

Tạo trình tải cấu hình chung:

python Copy
# shared/config.py
import os
from pathlib import Path
from dotenv import load_dotenv

# Tải tệp .env từ thư mục gốc dự án
ROOT_DIR = Path(__file__).parent.parent
load_dotenv(ROOT_DIR / ".env")

class Config:
    """Lớp cấu hình cho tích hợp CapSolver."""

    # Khóa API CapSolver
    CAPSOLVER_API_KEY: str = os.getenv("CAPSOLVER_API_KEY", "")

    # Các điểm cuối API CapSolver
    CAPSOLVER_API_URL = "https://api.capsolver.com"
    CREATE_TASK_ENDPOINT = f"{CAPSOLVER_API_URL}/createTask"
    GET_RESULT_ENDPOINT = f"{CAPSOLVER_API_URL}/getTaskResult"

    @classmethod
    def validate(cls) -> bool:
        """Kiểm tra xem cấu hình có hợp lệ không."""
        if not cls.CAPSOLVER_API_KEY:
            print("Lỗi: CAPSOLVER_API_KEY chưa được thiết lập!")
            return False
        return True

Xác định tham số CAPTCHA với tiện ích mở rộng CapSolver

Trước khi tích hợp với API, bạn cần xác định các tham số chính xác cho CAPTCHA mục tiêu. Tiện ích mở rộng CapSolver cung cấp cách dễ dàng để phát hiện tự động tất cả các tham số cần thiết.

Cài đặt

Cài đặt tiện ích mở rộng CapSolver từ Chrome Web Store.

Sử dụng bộ phát hiện CAPTCHA

  1. Nhấn F12 để mở công cụ phát triển
  2. Điều hướng đến tab Capsolver Captcha Detector
  3. Giữ bảng điều khiển mở trong khi truy cập trang web mục tiêu
  4. Kích hoạt CAPTCHA trên trang

Lưu ý: Không đóng bảng điều khiển CapSolver trước khi kích hoạt CAPTCHA, vì việc đóng nó sẽ xóa thông tin đã phát hiện trước đó.

Tham số đã phát hiện

Tiện ích mở rộng tự động xác định tất cả các tham số reCAPTCHA cần thiết:

  • URL trang web
  • Khóa trang web
  • pageAction (cho v3)
  • isInvisible
  • isEnterprise
  • Api Domain

Bộ phát hiện cung cấp đầu ra JSON được định dạng sẵn sàng cho tích hợp API, giúp dễ dàng sao chép các tham số chính xác cần thiết cho các nhiệm vụ giải CAPTCHA của bạn.

Để biết thêm chi tiết, xem hướng dẫn đầy đủ về việc xác định tham số CAPTCHA.


Giải reCAPTCHA v2 bằng API CapSolver

reCAPTCHA v2 là CAPTCHA hộp kiểm "Tôi không phải là robot" cổ điển. Nó có thể hiển thị các thử thách chọn hình ảnh cho người dùng.

Tìm khóa trang web

Bạn có thể sử dụng bộ phát hiện tiện ích mở rộng CapSolver (được mô tả ở trên) hoặc tìm khóa trang web thủ công:

Tìm trong mã HTML trang:

html Copy
<div class="g-recaptcha" data-sitekey="6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-"></div>

Hoặc trong JavaScript:

javascript Copy
grecaptcha.render('container', {'sitekey': '6Le-xxxxx...'});

Hàm trợ giúp

python Copy
# utils/capsolver_helper.py
import time
import requests
from shared.config import Config

def solve_recaptcha_v2(
    website_url: str,
    website_key: str,
    is_invisible: bool = False,
    timeout: int = 120
) -> dict:
    """
    Giải reCAPTCHA v2 bằng API CapSolver.

    Args:
        website_url: URL của trang có CAPTCHA
        website_key: Khóa trang web reCAPTCHA
        is_invisible: Có phải là reCAPTCHA v2 không hiển thị không
        timeout: Thời gian tối đa chờ giải pháp (giây)

    Returns:
        dict với 'gRecaptchaResponse' token
    """

    if not Config.validate():
        raise Exception("Cấu hình không hợp lệ - kiểm tra khóa API của bạn")

    # Xây dựng nhiệm vụ
    task = {
        "type": "ReCaptchaV2TaskProxyLess",
        "websiteURL": website_url,
        "websiteKey": website_key,
    }

    if is_invisible:
        task["isInvisible"] = True

    payload = {
        "clientKey": Config.CAPSOLVER_API_KEY,
        "task": task
    }

    # Tạo nhiệm vụ
    response = requests.post(Config.CREATE_TASK_ENDPOINT, json=payload)
    result = response.json()

    if result.get("errorId") and result.get("errorId") != 0:
        raise Exception(f"Không thể tạo nhiệm vụ: {result.get('errorDescription')}")

    task_id = result.get("taskId")

    # Kiểm tra kết quả
    start_time = time.time()
    while time.time() - start_time < timeout:
        time.sleep(2)

        result_payload = {
            "clientKey": Config.CAPSOLVER_API_KEY,
            "taskId": task_id
        }

        response = requests.post(Config.GET_RESULT_ENDPOINT, json=result_payload)
        result = response.json()

        if result.get("status") == "ready":
            return result.get("solution", {})

        elif result.get("status") == "failed":
            raise Exception(f"Nhận nhiệm vụ thất bại: {result.get('errorDescription')}")

    raise Exception(f"Đã hết thời gian sau {timeout} giây")

Ví dụ hoàn chỉnh giải reCAPTCHA v2

python Copy
from botasaurus.browser import browser, Driver
from shared.config import Config
from utils.capsolver_helper import solve_recaptcha_v2

DEMO_URL = "https://www.google.com/recaptcha/api2/demo"
DEMO_SITEKEY = "6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-"

@browser(headless=False)
def solve_recaptcha_v2_with_api(driver: Driver, data: dict):
    """Giải reCAPTCHA v2 bằng API CapSolver và chèn token."""

    url = data.get("url", DEMO_URL)
    site_key = data.get("site_key", DEMO_SITEKEY)

    # Bước 1: Tải trang
    driver.get(url)
    driver.sleep(2)

    # Bước 2: Trích xuất khóa trang từ trang (tùy chọn)
    extracted_key = driver.run_js("""
        const recaptchaDiv = document.querySelector('.g-recaptcha');
        return recaptchaDiv ? recaptchaDiv.getAttribute('data-sitekey') : null;
    """)

    if extracted_key:
        site_key = extracted_key

    # Bước 3: Giải CAPTCHA qua API CapSolver
    solution = solve_recaptcha_v2(
        website_url=url,
        website_key=site_key
    )

    token = solution.get("gRecaptchaResponse")

    # Bước 4: Chèn token vào trang
    driver.run_js(f"""
        // Đặt giá trị trường văn bản ẩn
        const responseField = document.querySelector('[name="g-recaptcha-response"]');
        if (responseField) {{
            responseField.value = "{token}";
        }}

        // Kích hoạt callback nếu có sẵn
        if (typeof ___grecaptcha_cfg !== 'undefined') {{
            try {{
                const clients = ___grecaptcha_cfg.clients;
                for (const key in clients) {{
                    const client = clients[key];
                    if (client && client.callback) {{
                        client.callback("{token}");
                    }}
                }}
            }} catch (e) {{}}
        }}
    """)

    # Bước 5: Gửi biểu mẫu
    submit_button = driver.select('input[type="submit"]')
    if submit_button:
        submit_button.click()
        driver.sleep(2)

    return {"success": True, "token_length": len(token)}

# Chạy demo
result = solve_recaptcha_v2_with_api(data={"url": DEMO_URL, "site_key": DEMO_SITEKEY})

Giải reCAPTCHA v3 bằng API CapSolver

reCAPTCHA v3 là không hiển thị và hoạt động bằng cách phân tích hành vi người dùng để tạo điểm số từ 0.0 đến 1.0.

Khác biệt chính so với v2: reCAPTCHA v3 yêu cầu tham số pageAction.

Tìm pageAction

Cách dễ nhất để tìm pageAction là sử dụng bộ phát hiện tiện ích mở rộng CapSolver. Ngoài ra, tìm trong JavaScript trang:

javascript Copy
grecaptcha.execute('siteKey', {action: 'login'})
// 'login' là pageAction của bạn

Hàm trợ giúp

python Copy
def solve_recaptcha_v3(
    website_url: str,
    website_key: str,
    page_action: str,
    timeout: int = 120
) -> dict:
    """
    Giải reCAPTCHA v3 bằng API CapSolver.

    Args:
        website_url: URL của trang có CAPTCHA
        website_key: Khóa trang web reCAPTCHA
        page_action: Tham số hành động (BẮT Buộc cho v3)
        timeout: Thời gian tối đa chờ giải pháp (giây)

    Returns:
        dict với 'gRecaptchaResponse' token
    """

    if not Config.validate():
        raise Exception("Cấu hình không hợp lệ - kiểm tra khóa API của bạn")

    if not page_action:
        raise Exception("pageAction là BẮT Buộc cho reCAPTCHA v3")

    # Xây dựng nhiệm vụ
    task = {
        "type": "ReCaptchaV3TaskProxyLess",
        "websiteURL": website_url,
        "websiteKey": website_key,
        "pageAction": page_action,  # BẮT Buộc cho v3
    }

    payload = {
        "clientKey": Config.CAPSOLVER_API_KEY,
        "task": task
    }

    # Tạo nhiệm vụ
    response = requests.post(Config.CREATE_TASK_ENDPOINT, json=payload)
    result = response.json()

    if result.get("errorId") and result.get("errorId") != 0:
        raise Exception(f"Không thể tạo nhiệm vụ: {result.get('errorDescription')}")

    task_id = result.get("taskId")

    # Kiểm tra kết quả
    start_time = time.time()
    while time.time() - start_time < timeout:
        time.sleep(2)

        result_payload = {
            "clientKey": Config.CAPSOLVER_API_KEY,
            "taskId": task_id
        }

        response = requests.post(Config.GET_RESULT_ENDPOINT, json=result_payload)
        result = response.json()

        if result.get("status") == "ready":
            return result.get("solution", {})

        elif result.get("status") == "failed":
            raise Exception(f"Nhận nhiệm vụ thất bại: {result.get('errorDescription')}")

    raise Exception(f"Đã hết thời gian sau {timeout} giây")

Ví dụ hoàn chỉnh giải reCAPTCHA v3

python Copy
from botasaurus.browser import browser, Driver
from shared.config import Config
from utils.capsolver_helper import solve_recaptcha_v3

DEMO_URL = "https://recaptcha-demo.appspot.com/recaptcha-v3-request-scores.php"
DEMO_SITEKEY = "6LdyC2cUAAAAACGuDKpXeDorzUDWXmdqeg-xy696"
PAGE_ACTION = "examples/v3scores"

@browser(headless=False)
def solve_recaptcha_v3_with_api(driver: Driver, data: dict):
    """Giải reCAPTCHA v3 bằng API CapSolver và chèn token."""

    url = data.get("url", DEMO_URL)
    site_key = data.get("site_key", DEMO_SITEKEY)
    page_action = data.get("page_action", PAGE_ACTION)

    # Bước 1: Tải trang
    driver.get(url)
    driver.sleep(2)

    # Bước 2: Giải CAPTCHA qua API CapSolver
    solution = solve_recaptcha_v3(
        website_url=url,
        website_key=site_key,
        page_action=page_action
    )

    token = solution.get("gRecaptchaResponse")

    # Bước 3: Chèn token vào trang
    driver.run_js(f"""
        const token = "{token}";

        // Đặt trường ẩn nếu tồn tại
        const responseField = document.querySelector('[name="g-recaptcha-response"]');
        if (responseField) {{
            responseField.value = token;
        }}

        // Tạo trường ẩn nếu biểu mẫu tồn tại nhưng trường không tồn tại
        const forms = document.querySelectorAll('form');
        forms.forEach(form => {{
            let field = form.querySelector('[name="g-recaptcha-response"]');
            if (!field) {{
                field = document.createElement('input');
                field.type = 'hidden';
                field.name = 'g-recaptcha-response';
                form.appendChild(field);
            }}
            field.value = token;
        }});
    """)

    # Bước 4: Gửi hoặc xác minh
    buttons = driver.select_all("button")
    for button in buttons:
        if "verify" in button.text.lower() or "submit" in button.text.lower():
            button.click()
            driver.sleep(2)
            break

    return {"success": True, "token_length": len(token)}

# Chạy demo
result = solve_recaptcha_v3_with_api(data={
    "url": DEMO_URL,
    "site_key": DEMO_SITEKEY,
    "page_action": PAGE_ACTION
})

Giải Cloudflare Turnstile bằng API CapSolver

Cloudflare Turnstile là một giải pháp CAPTCHA tập trung vào quyền riêng tư, được thiết kế để ít xâm nhập hơn so với các CAPTCHA truyền thống.

Khác biệt chính so với reCAPTCHA:

  • Loại nhiệm vụ là AntiTurnstileTaskProxyLess
  • Trường phản hồi là token (không phải gRecaptchaResponse)
  • Khóa trang web thường bắt đầu bằng 0x4

Tìm khóa trang web

Tìm trong mã HTML trang:

html Copy
<div class="cf-turnstile" data-sitekey="0x4AAAAAAABS7vwvV6VFfMcD"></div>

Hàm trợ giúp

python Copy
def solve_turnstile(
    website_url: str,
    website_key: str,
    action: str = None,
    cdata: str = None,
    timeout: int = 120
) -> dict:
    """
Giải quyết Cloudflare Turnstile bằng API CapSolver.

    Args:
        website_url: Địa chỉ URL của trang web chứa Turnstile
        website_key: Khóa trang web Turnstile (bắt đầu bằng 0x4)
        action: Hành động tùy chọn từ thuộc tính data-action
        cdata: Cdata tùy chọn từ thuộc tính data-cdata
        timeout: Thời gian chờ tối đa để nhận giải pháp (giây)

    Returns:
        dict với trường 'token'
    """

    if not Config.validate():
        raise Exception("Cấu hình không hợp lệ - kiểm tra khóa API của bạn")

    # Xây dựng dữ liệu nhiệm vụ
    task = {
        "type": "AntiTurnstileTaskProxyLess",
        "websiteURL": website_url,
        "websiteKey": website_key,
    }

    # Thêm thông tin tùy chọn
    metadata = {}
    if action:
        metadata["action"] = action
    if cdata:
        metadata["cdata"] = cdata

    if metadata:
        task["metadata"] = metadata

    payload = {
        "clientKey": Config.CAPSOLVER_API_KEY,
        "task": task
    }

    # Tạo nhiệm vụ
    response = requests.post(Config.CREATE_TASK_ENDPOINT, json=payload)
    result = response.json()

    if result.get("errorId") and result.get("errorId") != 0:
        raise Exception(f"Không thể tạo nhiệm vụ: {result.get('errorDescription')}")

    task_id = result.get("taskId")

    # Kiểm tra kết quả
    start_time = time.time()
    while time.time() - start_time < timeout:
        time.sleep(2)

        result_payload = {
            "clientKey": Config.CAPSOLVER_API_KEY,
            "taskId": task_id
        }

        response = requests.post(Config.GET_RESULT_ENDPOINT, json=result_payload)
        result = response.json()

        if result.get("status") == "ready":
            return result.get("solution", {})

        elif result.get("status") == "failed":
            raise Exception(f"Nhiệm vụ thất bại: {result.get('errorDescription')}")

    raise Exception(f"Đã hết thời gian sau {timeout} giây")

Ví dụ Turnstile Hoàn chỉnh

python Copy
from botasaurus.browser import browser, Driver
from shared.config import Config
from utils.capsolver_helper import solve_turnstile

DEMO_URL = "https://peet.ws/turnstile-test/non-interactive.html"
DEMO_SITEKEY = "0x4AAAAAAABS7vwvV6VFfMcD"

@browser(headless=False)
def solve_turnstile_with_api(driver: Driver, data: dict):
    """Giải quyết Cloudflare Turnstile bằng API CapSolver và chèn token."""

    url = data.get("url", DEMO_URL)
    site_key = data.get("site_key", DEMO_SITEKEY)

    # Bước 1: Tải trang
    driver.get(url)
    driver.sleep(3)

    # Bước 2: Trích xuất khóa trang từ trang (tùy chọn)
    extracted_params = driver.run_js("""
        const turnstileDiv = document.querySelector('.cf-turnstile, [data-sitekey]');
        if (turnstileDiv) {
            const key = turnstileDiv.getAttribute('data-sitekey');
            if (key && key.startsWith('0x')) {
                return {
                    sitekey: key,
                    action: turnstileDiv.getAttribute('data-action')
                };
            }
        }
        return null;
    """)

    if extracted_params and extracted_params.get("sitekey"):
        site_key = extracted_params["sitekey"]

    # Bước 3: Giải Turnstile qua API CapSolver
    solution = solve_turnstile(
        website_url=url,
        website_key=site_key,
        action=extracted_params.get("action") if extracted_params else None
    )

    token = solution.get("token")

    # Bước 4: Chèn token vào trang
    driver.run_js(f"""
        const token = "{token}";

        // Tìm và điền trường cf-turnstile-response
        const responseFields = [
            document.querySelector('[name="cf-turnstile-response"]'),
            document.querySelector('[name="cf_turnstile_response"]'),
            document.querySelector('input[name*="turnstile"]')
        ];

        for (const field of responseFields) {{
            if (field) {{
                field.value = token;
                break;
            }}
        }}

        // Tạo trường ẩn nếu form tồn tại nhưng trường không có
        const forms = document.querySelectorAll('form');
        forms.forEach(form => {{
            let field = form.querySelector('[name="cf-turnstile-response"]');
            if (!field) {{
                field = document.createElement('input');
                field.type = 'hidden';
                field.name = 'cf-turnstile-response';
                form.appendChild(field);
            }}
            field.value = token;
        }});
    """)

    # Bước 5: Gửi form
    submit_btn = driver.select('button[type="submit"], input[type="submit"]')
    if submit_btn:
        submit_btn.click()
        driver.sleep(2)

    return {"success": True, "token_length": len(token)}

# Chạy ví dụ
result = solve_turnstile_with_api(data={"url": DEMO_URL, "site_key": DEMO_SITEKEY})

Tham khảo Loại Nhiệm vụ

Loại Captcha Loại Nhiệm vụ Trường Phản hồi Tham số Bắt buộc
reCAPTCHA v2 ReCaptchaV2TaskProxyLess gRecaptchaResponse websiteURL, websiteKey
reCAPTCHA v2 Enterprise ReCaptchaV2EnterpriseTaskProxyLess gRecaptchaResponse websiteURL, websiteKey
reCAPTCHA v3 ReCaptchaV3TaskProxyLess gRecaptchaResponse websiteURL, websiteKey, pageAction
reCAPTCHA v3 Enterprise ReCaptchaV3EnterpriseTaskProxyLess gRecaptchaResponse websiteURL, websiteKey, pageAction
Cloudflare Turnstile AntiTurnstileTaskProxyLess token websiteURL, websiteKey

Đối với các trang chặn IP datacenter, sử dụng phiên bản có proxy (ví dụ: ReCaptchaV2Task) và cung cấp proxy cư dân của bạn.


Nguyên Tắc Tốt

1. Hạn sử dụng của token

Token Captcha hết hạn nhanh (thường trong khoảng 2 phút). Luôn sử dụng token ngay lập tức sau khi nhận được:

python Copy
# Nhận token
solution = solve_recaptcha_v2(url, site_key)
token = solution.get("gRecaptchaResponse")

# Sử dụng ngay lập tức - không lưu trữ để sử dụng sau
driver.run_js(f'document.querySelector("[name=g-recaptcha-response]").value = "{token}"')
driver.select('button[type="submit"]').click()

2. Xử lý lỗi

Luôn thực hiện xử lý lỗi phù hợp cho các lỗi API:

python Copy
try:
    solution = solve_recaptcha_v2(url, site_key)
except Exception as e:
    print(f"Giải quyết Captcha thất bại: {e}")
    # Triển khai logic thử lại hoặc phương án dự phòng

3. Giới hạn tốc độ

Thêm khoảng thời gian chờ giữa các yêu cầu để tránh kích hoạt các biện pháp chống bot:

python Copy
driver.sleep(2)  # Chờ sau khi tải trang
# ... giải Captcha ...
driver.sleep(1)  # Chờ trước khi gửi form

4. Xác minh cấu hình

Luôn xác minh khóa API của bạn trước khi gửi yêu cầu:

python Copy
if not Config.validate():
    raise Exception("Vui lòng cấu hình khóa API trong tệp .env")

Kết luận

Kết hợp Botasaurus với CapSolver cung cấp giải pháp mạnh mẽ để xử lý Captcha trong các dự án web scraping. Cách tiếp cận dựa trên API giúp bạn kiểm soát toàn bộ quy trình giải quyết và hoạt động đáng tin cậy trên nhiều loại Captcha khác nhau.

Tăng ngân sách tự động hóa của bạn ngay lập tức!
Sử dụng mã khuyến mãi CAPN khi nạp tiền vào tài khoản CapSolver để nhận thêm 5% khuyến mãi cho mỗi lần nạp — không giới hạn.
Nhận mã khuyến mãi ngay bây giờ trong bảng điều khiển CapSolver của bạn [https://dashboard.capsolver.com/dashboard/overview/?utm_source=blog&utm_medium=article&utm_campaign=botsaurus-capsolver]

Những điểm chính

  • Botasaurus cung cấp tự động hóa trình duyệt với tính năng chống phát hiện tích hợp
  • API CapSolver cung cấp cách giải quyết đa dạng Captcha một cách tự động
  • reCAPTCHA v2 yêu cầu các tham số websiteURLwebsiteKey
  • reCAPTCHA v3 yêu cầu thêm tham số pageAction
  • Cloudflare Turnstile trả về trường token thay vì gRecaptchaResponse
  • Token hết hạn nhanh (~2 phút), vì vậy hãy sử dụng ngay lập tức sau khi nhận được

Câu hỏi Thường Gặp (FAQ)

Làm thế nào để giải quyết reCAPTCHA và Cloudflare Turnstile tự động trong web scraping bằng Python?

Phương pháp hiệu quả nhất là sử dụng khung tự động hóa trình duyệt mạnh mẽ như Botasaurus, xử lý chống phát hiện, và tích hợp với API giải Captcha chuyên dụng như CapSolver để nhận được các token giải quyết cần thiết.

Lợi ích của việc sử dụng Botasaurus cho web scraping chống phát hiện là gì?

Botasaurus đơn giản hóa tự động hóa trình duyệt với giao diện API dựa trên decorator sạch sẽ, đồng thời cung cấp các tính năng chống phát hiện cần thiết để giảm thiểu rủi ro bị phát hiện và chặn bởi các trang web mục tiêu.

Sự khác biệt giữa giải reCAPTCHA v2 và v3 bằng API CapSolver là gì?

Mặc dù cả hai đều yêu cầu websiteURLwebsiteKey, giải reCAPTCHA v3 (phiên bản ẩn, dựa trên điểm số) yêu cầu thêm tham số pageAction trong dữ liệu nhiệm vụ được gửi đến API CapSolver.

Điều gì xảy ra sau khi CapSolver trả về token Captcha?

Khi token (ví dụ: gRecaptchaResponse hoặc token) được nhận, nó phải được chèn ngay lập tức vào trường ẩn của trang web đích bằng lệnh thực thi JavaScript trước khi có thể gửi form thành công đến máy chủ.

Token CapSolver có thời gian sống bao lâu trước khi hết hạn?

Các token giải quyết từ CapSolver cho reCAPTCHA và Turnstile có thời gian sống rất ngắn, thường hết hạn sau khoảng 2 phút, do đó cần sử dụng ngay lập tức.

Tuyên bố Tuân thủ: Thông tin được cung cấp trên blog này chỉ mang tính chất tham khảo. CapSolver cam kết tuân thủ tất cả các luật và quy định hiện hành. Việc sử dụng mạng lưới CapSolver cho các hoạt động bất hợp pháp, gian lận hoặc lạm dụng là hoàn toàn bị cấm và sẽ bị điều tra. Các giải pháp giải captcha của chúng tôi nâng cao trải nghiệm người dùng trong khi đảm bảo tuân thủ 100% trong việc giúp giải quyết các khó khăn về captcha trong quá trình thu thập dữ liệu công khai. Chúng tôi khuyến khích việc sử dụng dịch vụ của chúng tôi một cách có trách nhiệm. Để biết thêm thông tin, vui lòng truy cập Điều khoản Dịch vụ và Chính sách Quyền riêng tư.

Thêm

Cách giải CAPTCHA trong Python bằng Botasaurus và CapSolver (Hướng dẫn đầy đủ)
Cách giải CAPTCHAs bằng Python sử dụng Botasaurus và CapSolver (Hướng dẫn đầy đủ)

Học cách tích hợp Botasaurus (khung phần mềm quét web Python) với API CapSolver để tự động giải reCAPTCHA v2/v3 và Turnstile.

web scraping
Logo of CapSolver

Anh Tuan

15-Dec-2025

Tabproxy
Tabproxy: Dịch vụ proxy nhà ở giá trị tốt cho khu vực nước ngoài

Trong bài viết này, chúng tôi sẽ giới thiệu cho bạn Tabproxy là gì và các dịch vụ mà họ cung cấp.

web scraping
Logo of CapSolver

Anh Tuan

12-Dec-2025

lỗi trích xuất dữ liệu từ web
Các lỗi 402, 403, 404 và 429 là gì trong việc quét web? Hướng dẫn toàn diện

Nắm vững xử lý lỗi quét web bằng cách hiểu các lỗi 402, 403, 404 và 429. Học cách sửa lỗi 403 Cấm, triển khai giải pháp xử lý lỗi 429 và xử lý mã trạng thái 402 Yêu cầu thanh toán mới xuất hiện.

web scraping
Logo of CapSolver

Lucas Mitchell

12-Dec-2025

Trích xuất dữ liệu từ web bằng Python
Web Scraping Với Python: 2026 Các Chiến Thuật Tốt Nhất

Học các chiến thuật hàng đầu về quét web bằng Python năm 2026, bao gồm xử lý nội dung JavaScript động, quản lý các luồng xác thực, giải CAPTCHAs, nhận diện các bẫy ẩn, mô phỏng hành vi của con người, tối ưu hóa các mẫu yêu cầu và giảm tiêu thụ tài nguyên trong các dự án quét web quy mô lớn.

web scraping
Logo of CapSolver

Emma Foster

12-Dec-2025

Giải quyết Captcha khi quét trang web
Thu thập dữ liệu web mà không bị chặn và cách giải Captcha

Quét web đã trở thành kỹ thuật phổ biến để trích xuất dữ liệu từ trang web. Tuy nhiên, nhiều trang web sử dụng các biện pháp chống quét web, bao gồm...

web scraping
Logo of CapSolver

Nikolai Smirnov

11-Dec-2025

Crawling web và Trích xuất dữ liệu web
Khác biệt cơ bản giữa Khám phá web và Trích xuất web

Khám phá sự khác biệt cơ bản giữa quét web và trích xuất dữ liệu web. Tìm hiểu mục đích khác nhau của chúng, 10 trường hợp sử dụng mạnh mẽ, và cách CapSolver giúp vượt qua các rào cản AWS WAF và CAPTCHA để thu thập dữ liệu mượt mà.

web scraping
Logo of CapSolver

Anh Tuan

09-Dec-2025