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

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
pip install botasaurus
Sử dụng cơ bản:
python
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:
- Tạo tài khoản tại Bảng điều khiển CapSolver
- Nạp tiền vào tài khoản của bạn
- 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
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
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
# 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
- Nhấn F12 để mở công cụ phát triển
- Điều hướng đến tab Capsolver Captcha Detector
- Giữ bảng điều khiển mở trong khi truy cập trang web mục tiêu
- 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
<div class="g-recaptcha" data-sitekey="6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-"></div>
Hoặc trong JavaScript:
javascript
grecaptcha.render('container', {'sitekey': '6Le-xxxxx...'});
Hàm trợ giúp
python
# 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
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
grecaptcha.execute('siteKey', {action: 'login'})
// 'login' là pageAction của bạn
Hàm trợ giúp
python
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
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ảigRecaptchaResponse) - 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
<div class="cf-turnstile" data-sitekey="0x4AAAAAAABS7vwvV6VFfMcD"></div>
Hàm trợ giúp
python
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
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
# 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
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
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
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ố
websiteURLvàwebsiteKey - reCAPTCHA v3 yêu cầu thêm tham số
pageAction - Cloudflare Turnstile trả về trường
tokenthay 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 websiteURL và websiteKey, 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 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.

Anh Tuan
15-Dec-2025

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.

Anh Tuan
12-Dec-2025

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.

Lucas Mitchell
12-Dec-2025

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.

Emma Foster
12-Dec-2025

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...

Nikolai Smirnov
11-Dec-2025

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à.

Anh Tuan
09-Dec-2025


