Cách giải CAPTCHA với TinyFish AgentQL – Hướng dẫn từng bước sử dụng CapSolver

Nikolai Smirnov
Software Development Lead
05-Aug-2026
Khi tự động hóa web được hỗ trợ bởi AI của bạn gặp phải bức tường CAPTCHA, toàn bộ quy trình sẽ bị đình trệ. Các trang web không thể tải, các biểu mẫu không thể gửi, và việc trích xuất dữ liệu sẽ dừng lại — tất cả đều do một bài kiểm tra được thiết kế để chặn bot. TinyFish AgentQL là bộ công cụ mạnh mẽ để kết nối AI với web, bao gồm các truy vấn ngôn ngữ tự nhiên, tích hợp Playwright, và trích xuất dữ liệu có cấu trúc ở quy mô doanh nghiệp. Tuy nhiên, giống như bất kỳ khung tự động hóa trình duyệt nào khác, nó cũng bị mắc kẹt bởi CAPTCHA.
CapSolver thay đổi hoàn toàn điều này. Bằng cách tải tiện ích mở rộng CapSolver Chrome vào ngữ cảnh trình duyệt được cung cấp bởi Playwright của AgentQL, CAPTCHA sẽ được giải quyết tự động và không nhìn thấy được ở nền. Không cần giải quyết thủ công. Không cần điều phối API phức tạp từ phía bạn. Các kịch bản tự động hóa của bạn sẽ tiếp tục chạy như thể không có CAPTCHA.
Điều tốt nhất? Các truy vấn và kịch bản AgentQL của bạn không cần bất kỳ dòng mã nào liên quan đến CAPTCHA. Tiện ích mở rộng xử lý toàn bộ quá trình phát hiện, giải quyết và chèn token mà không cần sự can thiệp của bạn, trong khi trợ lý của bạn tập trung vào việc trích xuất dữ liệu và tự động hóa quy trình.
TinyFish AgentQL là gì?
TinyFish AgentQL là bộ công cụ cấp doanh nghiệp để kết nối các trợ lý AI và LLM với môi trường web trực tiếp. Được phát triển bởi TinyFish, nó cung cấp ngôn ngữ truy vấn được hỗ trợ bởi AI cho phép bạn tìm các phần tử trang và trích xuất dữ liệu có cấu trúc bằng ngôn ngữ tự nhiên — không cần các lựa chọn CSS hoặc XPaths mong manh.
Tính năng chính
- Ngôn ngữ truy vấn được hỗ trợ bởi AI: Tìm các phần tử một cách trực quan dựa trên nội dung trang. Các truy vấn tự phục hồi khi giao diện thay đổi theo thời gian.
- Tích hợp Playwright: Các SDK Python và JavaScript tích hợp liền mạch với Playwright để tự động hóa trình duyệt nâng cao.
- Trích xuất dữ liệu có cấu trúc: Xác định hình dạng đầu ra và nhận dữ liệu sạch, có cấu trúc từ bất kỳ trang nào — công khai hoặc riêng tư, tĩnh hoặc động.
- API REST: Thực hiện truy vấn mà không cần SDK thông qua điểm cuối REST.
- Trình gỡ lỗi trình duyệt: Tiện ích mở rộng Chrome để kiểm tra và tinh chỉnh truy vấn theo thời gian thực.
- Khả năng chịu đựng đa trang: Hoạt động trên các trang web tương tự mà không cần thay đổi, thích ứng động với các thay đổi trên trang.
- Quy mô doanh nghiệp: Được xây dựng cho các khối lượng công việc có lưu lượng cao, chạy hàng trăm tác vụ song song.
AgentQL hoạt động trên bất kỳ trang nào — bao gồm nội dung được xác thực và các trang được tạo động — làm cho nó lý tưởng cho tự động hóa web quy mô lớn, thu thập dữ liệu và quy trình trợ lý AI.
CapSolver là gì?
CapSolver là dịch vụ giải CAPTCHA được hỗ trợ bởi AI hàng đầu, tự động giải các thách thức CAPTCHA đa dạng. Với thời gian phản hồi nhanh và khả năng tương thích rộng, CapSolver tích hợp liền mạch vào các quy trình tự động hóa.
Loại CAPTCHA được hỗ trợ
- reCAPTCHA v2 (hộp kiểm và ẩn)
- reCAPTCHA v3 & v3 Doanh nghiệp
- Cloudflare Turnstile
- Cloudflare 5 giây thách thức
- AWS WAF CAPTCHA
- Và nhiều hơn nữa
Tại sao tích hợp này khác biệt?
Hầu hết các tích hợp giải CAPTCHA yêu cầu bạn viết mã mẫu: tạo nhiệm vụ, kiểm tra kết quả, chèn token vào các trường ẩn. Đó là cách tiếp cận tiêu chuẩn với các kịch bản Playwright hoặc Puppeteer nguyên bản.
AgentQL + CapSolver tiếp cận một cách hoàn toàn khác:
| Truyền thống (dựa trên mã) | AgentQL + Extension CapSolver |
|---|---|
| Viết lớp dịch vụ CapSolver | Tải tiện ích mở rộng trong ngữ cảnh Playwright |
Gọi createTask() / getTaskResult() |
Tiện ích mở rộng xử lý mọi thứ tự động |
Chèn token thông qua page.evaluate() |
Việc chèn token không nhìn thấy được |
| Xử lý lỗi, thử lại, thời gian chờ trong mã | Tiện ích mở rộng quản lý thử lại bên trong |
| Mã khác nhau cho mỗi loại CAPTCHA | Hoạt động cho tất cả các loại tự động |
Điểm nhận thức chính: Tiện ích mở rộng CapSolver chạy bên trong ngữ cảnh trình duyệt Playwright của AgentQL. Khi AgentQL điều hướng đến trang có CAPTCHA, tiện ích mở rộng phát hiện nó, giải nó ở nền, và chèn token — tất cả trước khi kịch bản của bạn tương tác với biểu mẫu. Mã tự động hóa của bạn vẫn sạch sẽ, tập trung và không có CAPTCHA.
Yêu cầu tiên quyết
Trước khi thiết lập tích hợp, hãy đảm bảo bạn có:
- TinyFish AgentQL đã cài đặt (SDK Python hoặc SDK JavaScript)
- Tài khoản CapSolver với khóa API (đăng ký tại đây)
- Node.js 16+ và Python 3.8+ (tùy thuộc vào lựa chọn SDK của bạn)
- Playwright đã cài đặt với Chromium
Quan trọng: Tiện ích mở rộng Chrome chỉ hoạt động trong Chromium với các ngữ cảnh bền vững trong Playwright. Đây là yêu cầu của Playwright, không phải giới hạn của AgentQL.
Hướng dẫn cài đặt từng bước
Bước 1: Cài đặt AgentQL
SDK Python:
bash
pip install agentql
playwright install chromium
SDK JavaScript:
bash
npm install agentql
npx playwright install chromium
Bước 2: Tải xuống tiện ích mở rộng CapSolver Chrome
Tải tiện ích mở rộng CapSolver Chrome và giải nén nó vào một thư mục chuyên dụng:
- Truy cập phiên bản tiện ích mở rộng CapSolver Chrome v1.17.0
- Tải xuống
CapSolver.Browser.Extension-chrome-v1.17.0.zip - Giải nén zip:
bash
mkdir -p ~/capsolver-extension
unzip CapSolver.Browser.Extension-chrome-v*.zip -d ~/capsolver-extension/
- Xác minh việc giải nén đã thành công:
bash
ls ~/capsolver-extension/manifest.json
Bạn nên thấy manifest.json — điều này xác nhận tiện ích mở rộng ở đúng vị trí.
Bước 3: Cấu hình khóa API CapSolver của bạn
Mở tệp cấu hình tiện ích mở rộng tại ~/capsolver-extension/assets/config.js và thay giá trị apiKey bằng khóa của bạn:
javascript
export const defaultConfig = {
apiKey: 'CAP-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX', // ← khóa của bạn ở đây
useCapsolver: true,
// ... phần còn lại của cấu hình
};
Bạn có thể nhận khóa API từ bảng điều khiển CapSolver.
Bước 4: Khởi động AgentQL với tiện ích mở rộng CapSolver
Bước quan trọng là khởi động Chromium của Playwright với một ngữ cảnh bền vững tải tiện ích mở rộng CapSolver.
Ví dụ Python:
python
import agentql
from playwright.sync_api import sync_playwright
import time
import os
# Đường dẫn đến tiện ích mở rộng CapSolver
CAPSOLVER_EXTENSION_PATH = os.path.expanduser("~/capsolver-extension")
def main():
with sync_playwright() as p:
# Khởi động Chromium với ngữ cảnh bền vững và tiện ích mở rộng CapSolver
context = p.chromium.launch_persistent_context(
user_data_dir="./browser-data",
headless=False, # Tiện ích mở rộng yêu cầu chế độ có giao diện
args=[
f"--disable-extensions-except={CAPSOLVER_EXTENSION_PATH}",
f"--load-extension={CAPSOLVER_EXTENSION_PATH}",
],
)
# Bao bọc trang bằng AgentQL để truy vấn AI
page = agentql.wrap(context.pages[0])
# Điều hướng đến trang mục tiêu
page.goto("https://example.com/protected-page")
# Chờ CapSolver phát hiện và giải CAPTCHA
time.sleep(30)
# Tìm và nhấn nút gửi bằng truy vấn ngôn ngữ tự nhiên của AgentQL
response = page.query_elements("""
{
submit_button
}
""")
# Nhấn nút gửi — CAPTCHA đã được giải!
response.submit_button.click()
# Trích xuất dữ liệu sau khi gửi
result = page.query_data("""
{
confirmation_message
}
""")
print(f"Kết quả: {result['confirmation_message']}")
context.close()
if __name__ == "__main__":
main()
Ví dụ JavaScript:
javascript
const { chromium } = require('playwright');
const agentql = require('agentql');
const path = require('path');
const os = require('os');
const CAPSOLVER_EXTENSION_PATH = path.join(os.homedir(), 'capsolver-extension');
(async () => {
// Khởi động Chromium với ngữ cảnh bền vững và tiện ích mở rộng CapSolver
const context = await chromium.launchPersistentContext('./browser-data', {
headless: false, // Tiện ích mở rộng yêu cầu chế độ có giao diện
args: [
`--disable-extensions-except=${CAPSOLVER_EXTENSION_PATH}`,
`--load-extension=${CAPSOLVER_EXTENSION_PATH}`,
],
});
// Lấy trang đầu tiên và bao bọc bằng AgentQL
const page = agentql.wrap(context.pages()[0]);
// Điều hướng đến trang mục tiêu
await page.goto('https://example.com/protected-page');
// Chờ CapSolver xử lý bất kỳ CAPTCHA nào
await page.waitForTimeout(30000);
// Sử dụng truy vấn AgentQL để tương tác — CAPTCHA đã được giải
const response = await page.queryElements(`{
submit_button
}`);
await response.submit_button.click();
// Trích xuất dữ liệu kết quả
const result = await page.queryData(`{
confirmation_message
}`);
console.log('Kết quả:', result.confirmation_message);
await context.close();
})();
Bước 5: Xác minh tiện ích mở rộng đã được tải
Sau khi khởi động trình duyệt, bạn có thể xác minh tiện ích mở rộng CapSolver đang hoạt động bằng cách truy cập chrome://extensions trong cửa sổ trình duyệt. Bạn nên thấy tiện ích mở rộng CapSolver được liệt kê và kích hoạt.
Ngoài ra, kiểm tra bảng điều khiển trình duyệt để xem các thông báo ghi nhật ký của CapSolver cho thấy dịch vụ worker đang chạy.
Cách sử dụng
Sau khi cài đặt hoàn tất, sử dụng CapSolver với AgentQL là đơn giản.
Quy tắc vàng
Không viết mã cụ thể cho CAPTCHA. Chỉ cần thêm thời gian chờ trước khi tương tác với các biểu mẫu được bảo vệ bởi CAPTCHA, và để tiện ích mở rộng thực hiện công việc của nó.
Ví dụ 1: Gửi biểu mẫu sau reCAPTCHA
python
page.goto("https://example.com/contact")
# Điền biểu mẫu bằng truy vấn AgentQL
response = page.query_elements("""
{
contact_form {
name_field
email_field
message_field
submit_button
}
}
""")
response.contact_form.name_field.fill("John Doe")
response.contact_form.email_field.fill("john@example.com")
response.contact_form.message_field.fill("Hello, I have a question about your services.")
# Chờ CapSolver giải CAPTCHA
time.sleep(30)
# Gửi — token CAPTCHA đã được chèn
response.contact_form.submit_button.click()
Ví dụ 2: Trang đăng nhập với Cloudflare Turnstile
python
page.goto("https://example.com/login")
# Chờ CapSolver giải quyết thách thức Turnstile
time.sleep(25)
# Tìm các phần tử biểu mẫu đăng nhập với AgentQL
response = page.query_elements("""
{
login_form {
email_input
password_input
login_button
}
}
""")
# Điền biểu mẫu — Turnstile đã được xử lý
response.login_form.email_input.fill("me@example.com")
response.login_form.password_input.fill("mypassword123")
# Nhấn nút đăng nhập
response.login_form.login_button.click()
Ví dụ 3: Trích xuất dữ liệu từ trang được bảo vệ
python
page.goto("https://example.com/data")
# Chờ CAPTCHA được giải
time.sleep(30)
# Trích xuất dữ liệu có cấu trúc với AgentQL
data = page.query_data("""
{
products[] {
name
price
rating
availability
}
}
""")
for product in data['products']:
print(f"{product['name']}: ${product['price']} ({product['rating']} sao)")
Thời gian chờ được khuyến nghị
| Loại CAPTCHA | Thời gian giải điển hình | Thời gian chờ được khuyến nghị |
|---|---|---|
| reCAPTCHA v2 (hộp kiểm) | 5-15 giây | 30-60 giây |
| reCAPTCHA v2 (ẩn) | 5-15 giây | 30 giây |
| reCAPTCHA v3 | 3-10 giây | 20-30 giây |
| Cloudflare Turnstile | 3-10 giây | 20-30 giây |
Lời khuyên: Khi không chắc, hãy sử dụng 30 giây. Tốt hơn là chờ lâu hơn một chút thay vì gửi quá sớm. Thời gian bổ sung không ảnh hưởng đến kết quả.
Cách hoạt động phía sau
Đây là những gì xảy ra khi AgentQL chạy với tiện ích mở rộng CapSolver được tải:
Kịch bản AgentQL của bạn
───────────────────────────────────────────────────
page.goto("https://...") ──► Chromium tải trang
│
▼
┌─────────────────────────────┐
│ Trang có widget CAPTCHA │
│ │
│ Tiện ích mở rộng CapSolver: │
│ 1. Script nội dung phát hiện │
│ CAPTCHA trên trang │
│ 2. Service worker gọi │
│ API CapSolver │
│ 3. Token nhận được │
│ 4. Token chèn vào trường ẩn │
└─────────────────────────────┘
│
▼
time.sleep(30) Tiện ích mở rộng giải CAPTCHA...
│
▼
page.query_elements(...) AgentQL tìm thấy các phần tử biểu mẫu
submit_button.click() Biểu mẫu gửi với token hợp lệ
│
▼
"Xác minh thành công!"
Cách tiện ích mở rộng được tải
Khi Playwright khởi động Chromium với cờ --load-extension:
- Chromium bắt đầu với tiện ích mở rộng CapSolver đã được tải
- Tiện ích mở rộng kích hoạt — service worker bắt đầu và các script nội dung được chèn vào mọi trang
- Trên các trang có CAPTCHA — script nội dung phát hiện widget, gọi API CapSolver và chèn token giải pháp vào trang
- AgentQL hoạt động bình thường — các truy vấn, nhấp chuột và trích xuất dữ liệu hoạt động như bình thường, với CAPTCHA đã được xử lý
Tham chiếu cấu hình đầy đủ
Đây là một thiết lập Python đầy đủ với tất cả các tùy chọn cấu hình cho tích hợp AgentQL + CapSolver:
python
import agentql
from playwright.sync_api import sync_playwright
import os
# Cấu hình
CAPSOLVER_EXTENSION_PATH = os.path.expanduser("~/capsolver-extension")
USER_DATA_DIR = "./browser-data"
with sync_playwright() as p:
context = p.chromium.launch_persistent_context(
user_data_dir=USER_DATA_DIR,
headless=False,
args=[
f"--disable-extensions-except={CAPSOLVER_EXTENSION_PATH}",
f"--load-extension={CAPSOLVER_EXTENSION_PATH}",
],
)
page = agentql.wrap(context.pages[0])
# ... mã tự động hóa của bạn ở đây
context.close()
Tùy chọn cấu hình
| Tùy chọn | Mô tả |
|---|---|
user_data_dir |
Thư mục để lưu trữ dữ liệu hồ sơ trình duyệt (cookie, phiên). Bắt buộc cho ngữ cảnh bền vững. |
headless |
Phải là False — tiện ích mở rộng Chrome không hoạt động trong chế độ không giao diện. |
--disable-extensions-except |
Giới hạn các tiện ích mở rộng có thể tải (ngăn xung đột). |
--load-extension |
Đường dẫn đến thư mục mở rộng CapSolver chưa nén. |
CAPSOLVER_EXTENSION_PATH |
Đường dẫn đầy đủ đến thư mục mở rộng CapSolver đã giải nén chứa manifest.json. |
Khóa API của CapSolver được cấu hình trực tiếp trong tệp assets/config.js của mở rộng (xem Bước 3 ở trên).
Sử dụng CapSolver với TinyFish Browser
Toàn bộ nội dung trên giả định bạn đang chạy Chromium của riêng mình, cục bộ, với bối cảnh Playwright duy trì để mở rộng CapSolver có thể được tải. Tuy nhiên, không phải mọi cấu hình nào cũng cho phép bạn kiểm soát quá trình Chromium như vậy — nếu tự động hóa của bạn chạy chống lại TinyFish Browser, dịch vụ phiên bản trình duyệt từ xa, theo yêu cầu, bạn không quản lý quá trình Chromium trực tiếp, do đó không thể tải mở rộng chưa nén vào đó theo cách tương tự.
Trong trường hợp này, CapSolver có thể được tích hợp thông qua API của nó, trực tiếp trong đoạn mã của bạn: bạn yêu cầu một phiên bản trình duyệt từ xa từ TinyFish Browser, kết nối với nó qua CDP bằng Playwright, giải CAPTCHA bằng SDK CapSolver, và chèn token kết quả vào trang web của riêng bạn. Đây là cách tiếp cận "truyền thống", dựa trên mã được mô tả trước đó trong bài viết — nhưng đây là công cụ đúng đắn khi không thể tải mở rộng vào phiên bản trình duyệt bạn đang điều khiển.
Trước khi bắt đầu, cài đặt SDK CapSolver:
bash
pip install capsolver
Đoạn mã sau cho thấy cách sử dụng CapSolver để giải reCAPTCHA trong một phiên bản TinyFish Browser:
python
import time
import requests
import capsolver
from playwright.sync_api import sync_playwright
TINYFISH_API_KEY = "KHÓA API TINYFISH CỦA BẠN"
capsolver.api_key = "KHÓA API CAPSOLVER CỦA BẠN"
website_url = "https://www.google.com/recaptcha/api2/demo"
website_key = "6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-"
captcha_type = "ReCaptchaV2TaskProxyLess"
def create_tinyfish_browser(url):
resp = requests.post(
"https://api.browser.tinyfish.ai",
headers={
"X-API-Key": TINYFISH_API_KEY,
"Content-Type": "application/json",
},
json={
"url": url,
"timeout_seconds": 300,
},
timeout=90,
)
resp.raise_for_status()
return resp.json()
def close_tinyfish_browser(session_id):
try:
requests.delete(
f"https://api.browser.tinyfish.ai/{session_id}",
headers={"X-API-Key": TINYFISH_API_KEY},
timeout=30,
)
except Exception as exc:
print(" Không thể đóng phiên bản trình duyệt TinyFish:", repr(exc))
def solve_recaptcha_v2():
print("3. Giải reCAPTCHA bằng CapSolver")
solution = capsolver.solve({
"type": captcha_type,
"websiteURL": website_url,
"websiteKey": website_key,
})
token = solution.get("gRecaptchaResponse")
if not token:
raise RuntimeError(f"CapSolver không trả về token reCAPTCHA: {solution}")
print(" Nhiệm vụ CapSolver đã được giải: ", token)
return token
def inject_recaptcha_token(page, token):
page.evaluate(
"""
(token) => {
const textarea = document.getElementById('g-recaptcha-response');
if (textarea) {
textarea.value = token;
}
}
""",
token,
)
print(" Token CapSolver đã được chèn")
page.click('input[type="submit"]')
print(" Nút gửi đã được nhấn")
def main():
session_id = None
try:
print("1. Tạo phiên bản trình duyệt TinyFish")
session = create_tinyfish_browser(website_url)
session_id = session["session_id"]
cdp_url = session["cdp_url"]
print(" ID phiên bản TinyFish:", session_id)
print(" URL CDP của TinyFish:", cdp_url)
with sync_playwright() as p:
print("2. Kết nối với trình duyệt TinyFish qua CDP")
browser = p.chromium.connect_over_cdp(cdp_url)
context = browser.contexts[0]
page = context.pages[0] if context.pages else context.new_page()
page.wait_for_load_state("domcontentloaded", timeout=60000)
print(" URL trang hiện tại:", page.url)
token = solve_recaptcha_v2()
print("4. Chèn token CapSolver")
inject_recaptcha_token(page, token)
page.wait_for_load_state("domcontentloaded", timeout=30000)
time.sleep(3)
body_text = page.locator("body").inner_text(timeout=10000)
print("5. Kết quả trang:", " ".join(body_text.split()))
print("6. Đóng phiên bản trình duyệt")
browser.close()
finally:
if session_id:
close_tinyfish_browser(session_id)
if __name__ == "__main__":
main()
Dù bạn chọn cách nào phù hợp với cấu hình của mình — tải mở rộng CapSolver vào bối cảnh Playwright cục bộ, duy trì, hoặc gọi API CapSolver trực tiếp vào phiên bản TinyFish Browser từ xa — mục tiêu là giống nhau: tự động hóa AgentQL của bạn không bao giờ cần mang theo logic xử lý CAPTCHA riêng.
Xử lý sự cố
Mở rộng không được tải
Triệu chứng: CAPTCHA không được giải tự động.
Nguyên nhân: Bạn có thể đang sử dụng bối cảnh trình duyệt thông thường thay vì bối cảnh duy trì, hoặc đang chạy ở chế độ không đầu.
Giải pháp: Mở rộng trong Playwright yêu cầu bối cảnh duy trì và chế độ có đầu:
python
# ✅ Đúng — bối cảnh duy trì, chế độ có đầu
context = p.chromium.launch_persistent_context(
user_data_dir="./browser-data",
headless=False,
args=[...các tham số mở rộng...]
)
# ❌ Sai — bối cảnh thông thường (mở rộng sẽ không được tải)
browser = p.chromium.launch()
context = browser.new_context()
CAPTCHA không được giải (Form thất bại)
Nguyên nhân có thể:
- Thời gian chờ quá ngắn — Tăng lên 60 giây
- Khóa API không hợp lệ — Kiểm tra bảng điều khiển CapSolver của bạn
- Số dư không đủ — Nạp tiền tài khoản CapSolver của bạn
- Mở rộng không được tải — Xem "Mở rộng không được tải" ở trên
Chế độ không đầu không được hỗ trợ
Triệu chứng: Script chạy nhưng không có mở rộng xuất hiện.
Nguyên nhân: Mở rộng Chrome không hoạt động trong chế độ không đầu.
Giải pháp: Sử dụng chế độ có đầu với màn hình ảo trên máy chủ:
bash
# Cài đặt Xvfb
sudo apt-get install xvfb
# Bắt đầu màn hình ảo
Xvfb :99 -screen 0 1280x720x24 &
# Thiết lập DISPLAY
export DISPLAY=:99
Tương thích với Chrome 137+
Triệu chứng: Cờ mở rộng bị bỏ qua mà không có thông báo.
Nguyên nhân: Chrome 137+ đã loại bỏ hỗ trợ cho --load-extension trong các phiên bản được thương mại hóa.
Giải pháp: Sử dụng Chromium của Playwright (được khuyến nghị) hoặc Chrome for Testing:
bash
# Cài đặt Chromium của Playwright (được khuyến nghị)
npx playwright install chromium
# Hoặc tải xuống Chrome for Testing
# Truy cập: https://googlechromelabs.github.io/chrome-for-testing/
Nguyên tắc tốt nhất
-
Luôn sử dụng thời gian chờ dài. Thời gian chờ dài hơn luôn an toàn hơn. CAPTCHA thường được giải trong 5-20 giây, nhưng độ trễ mạng, thách thức phức tạp hoặc thử lại có thể làm tăng thời gian. 30-60 giây là khoảng thời gian lý tưởng.
-
Giữ mã tự động hóa sạch sẽ. Không thêm logic xử lý CAPTCHA vào truy vấn AgentQL của bạn. Mở rộng xử lý mọi thứ — mã của bạn nên tập trung hoàn toàn vào việc trích xuất dữ liệu và tương tác.
-
Theo dõi số dư CapSolver của bạn. Mỗi lần giải CAPTCHA tốn tiền. Kiểm tra số dư tại capsolver.com/dashboard thường xuyên để tránh gián đoạn.
-
Luôn sử dụng bối cảnh duy trì. Luôn khởi động bằng
launch_persistent_context()khi bạn cần mở rộng. Điều này cũng bảo tồn cookie và dữ liệu phiên giữa các lần chạy, có thể giảm tần suất CAPTCHA. -
Sử dụng Xvfb trên máy chủ không đầu. Mở rộng Chrome yêu cầu bối cảnh màn hình. Thiết lập Xvfb cho các môi trường máy chủ nơi không có màn hình vật lý.
-
Phù hợp tích hợp với môi trường của bạn. Sử dụng cách tiếp cận dựa trên mở rộng mỗi khi bạn kiểm soát quá trình Chromium trực tiếp và có thể khởi động bối cảnh duy trì. Sử dụng cách tiếp cận dựa trên API với SDK CapSolver mỗi khi bạn kết nối với trình duyệt mà bạn không kiểm soát việc khởi động — như phiên bản TinyFish Browser từ xa qua CDP.
Kết luận
Tích hợp TinyFish AgentQL + CapSolver mang đến giải pháp CAPTCHA không nhìn thấy cho một trong những bộ công cụ tự động hóa web mạnh mẽ nhất hiện có. Thay vì viết mã xử lý CAPTCHA phức tạp, bạn chỉ cần:
- Tải xuống mở rộng CapSolver và cấu hình khóa API của bạn
- Khởi động trình duyệt Playwright của AgentQL với mở rộng được tải qua bối cảnh duy trì
- Viết đoạn mã tự động hóa như bình thường — chỉ cần thêm thời gian chờ trước khi gửi biểu mẫu
Mở rộng CapSolver xử lý phần còn lại — phát hiện CAPTCHA, giải chúng qua API CapSolver và chèn token vào trang. Các đoạn mã AgentQL của bạn không bao giờ cần biết về CAPTCHA.
Và khi tự động hóa của bạn chạy trên phiên bản từ xa thay vì Chromium cục bộ — như TinyFish Browser — SDK và API của CapSolver cho phép bạn đạt được kết quả tương tự với vài dòng mã thêm: yêu cầu phiên bản, kết nối qua CDP, giải và chèn.
Đây là cách giải CAPTCHA khi kết hợp tự động hóa web dựa trên AI với giải pháp CAPTCHA dựa trên AI: không nhìn thấy, tự động và không cần mã.
Sẵn sàng bắt đầu chưa? Đăng ký CapSolver và sử dụng mã thưởng AGENTQL để nhận thêm 6% cho lần nạp tiền đầu tiên!

Câu hỏi thường gặp
Tôi có cần viết mã đặc biệt cho CAPTCHA trong các đoạn mã AgentQL không?
Không. Mở rộng CapSolver hoạt động hoàn toàn ở chế độ nền trong bối cảnh trình duyệt Playwright. Chỉ cần thêm time.sleep() hoặc waitForTimeout() trước khi gửi biểu mẫu, và mở rộng xử lý phát hiện, giải và chèn token tự động.
Tại sao tôi cần bối cảnh duy trì?
Playwright chỉ hỗ trợ mở rộng Chrome khi sử dụng launch_persistent_context(). Đây là yêu cầu kiến trúc của Playwright. Các bối cảnh trình duyệt thông thường được tạo qua browser.new_context() không thể tải mở rộng.
Tôi có thể chạy ở chế độ không đầu không?
Không. Mở rộng Chrome yêu cầu trình duyệt có đầu. Đối với các máy chủ không có màn hình, sử dụng Xvfb (X Virtual Framebuffer) để tạo màn hình ảo.
Nếu tôi đang sử dụng phiên bản TinyFish Browser từ xa thay vì Chromium cục bộ của mình?
Vì bạn không kiểm soát việc khởi động trình duyệt trực tiếp, bạn không thể tải mở rộng CapSolver vào phiên bản TinyFish Browser. Thay vào đó, sử dụng SDK CapSolver để giải CAPTCHA và chèn token kết quả vào trang web của bạn thông qua page.evaluate() sau khi kết nối qua CDP, như được hiển thị trong phần "Sử dụng CapSolver với TinyFish Browser" ở trên.
CapSolver hỗ trợ loại CAPTCHA nào?
CapSolver hỗ trợ reCAPTCHA v2 (hộp kiểm và ẩn), reCAPTCHA v3, Cloudflare Turnstile, AWS WAF CAPTCHA và nhiều hơn nữa. Mở rộng tự động phát hiện loại CAPTCHA và giải nó tương ứng.
Chi phí của CapSolver là bao nhiêu?
CapSolver cung cấp giá cả cạnh tranh dựa trên loại CAPTCHA và khối lượng. Truy cập capsolver.com để xem giá cả hiện tại.
TinyFish AgentQL có miễn phí không?
AgentQL cung cấp cả các gói miễn phí và trả phí. SDK và ngôn ngữ truy vấn có sẵn cho phát triển và kiểm thử. Truy cập tinyfish.ai để biết chi tiết giá cả.
Tôi nên chờ bao lâu để CAPTCHA được giải?
Đối với phần lớn CAPTCHA, 30-60 giây là đủ. Thời gian giải thực tế thường là 5-20 giây, nhưng thêm thời gian dự phòng đảm bảo độ tin cậy. Nếu không chắc, hãy sử dụng 30 giây.
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 với TinyFish AgentQL – Hướng dẫn từng bước sử dụng CapSolver
Học cách tích hợp CapSolver với TinyFish AgentQL để giải CAPTCHAs như reCAPTCHA và Cloudflare Turnstile tự động. Hướng dẫn từng bước với ví dụ SDK Python và JavaScript cho tự động hóa web dựa trên AI liền mạch.

Nikolai Smirnov
05-Aug-2026

Cách giải CAPTCHA trong các tác nhân LlamaIndex
Tích hợp giải CAPTCHA vào các tác nhân LlamaIndex bằng FunctionTool và CapSolver cho các pipeline tiếp nhận dữ liệu web.

Anh Tuan
31-Jul-2026

Cách giải CAPTCHA với MCP: Mô hình Bối cảnh Giao thức Dịch vụ CapSolver
Cài đặt dịch vụ CapSolver MCP để giải CAPTCHA mà không cần lập trình trên Claude Desktop, Cursor và bất kỳ khách hàng MCP nào.

Anh Tuan
31-Jul-2026

Cách giải reCAPTCHA v3 trong OpenAI Agents SDK
Tạo token reCAPTCHA v3 có điểm cao trong OpenAI Agents SDK bằng cách sử dụng công cụ hàm CapSolver.

Anh Tuan
30-Jul-2026

Cách giải quyết Cloudflare Turnstile trong agent CrewAI
Tích hợp việc giải quyết Cloudflare Turnstile vào các quy trình đa tác nhân của CrewAI bằng cách sử dụng CapSolver.

Anh Tuan
30-Jul-2026

Cách giải CAPTCHA trong các tác nhân AutoGen
Hướng dẫn đầy đủ về việc tích hợp giải CAPTCHA vào các cuộc trò chuyện đa tác nhân Microsoft AutoGen bằng cách sử dụng CapSolver với các hàm register_function và mô hình trò chuyện nhóm.

Anh Tuan
29-Jul-2026

