Cách giải CAPTCHA trong Quy trình đa tác nhân của CrewAI

Anh Tuan
Data Science Expert
28-Jul-2026
CrewAI điều phối nhiều trợ lý AI làm việc cùng nhau trên các nhiệm vụ phức tạp — nghiên cứu, thu thập dữ liệu, tạo nội dung và tự động hóa quy trình. Khi bất kỳ trợ lý nào trong Crew gặp phải thách thức CAPTCHA trong tương tác web, toàn bộ quy trình đa trợ lý sẽ bị dừng lại. Gói capsolver-agent của CapSolver tích hợp trực tiếp vào quy trình của CrewAI, cung cấp cho các trợ lý khả năng giải reCAPTCHA, Cloudflare Turnstile và các thách thức xác minh khác mà không làm gián đoạn luồng thực thi hợp tác.
TL;DR
- Các quy trình đa trợ lý CrewAI bị treo khi bất kỳ thành viên nào gặp CAPTCHA trong nhiệm vụ web
- CapSolver cung cấp các giao diện công cụ tương thích với hệ thống đăng ký công cụ tùy chỉnh của CrewAI
- Executor
capsolver-agentxử lý giải quyết thông qua dịch vụ AI của CapSolver và trả về kết quả có cấu trúc - Hỗ trợ reCAPTCHA v2/v3 (bao gồm cả phiên bản Doanh nghiệp) và Cloudflare Turnstile
- Việc tích hợp chỉ cần dưới 15 dòng mã sử dụng
create_executor()và ghi chú@toolcủa CrewAI
Tại sao các trợ lý CrewAI cần giải CAPTCHA
CrewAI cho phép các nhóm trợ lý chuyên biệt hợp tác trên các nhiệm vụ yêu cầu nhiều khả năng. Một nhóm điển hình có thể bao gồm một trợ lý nghiên cứu duyệt web, một trợ lý phân tích xử lý dữ liệu và một trợ lý viết báo cáo. Khi trợ lý nghiên cứu gặp CAPTCHA trên trang web mục tiêu, nó không thể tiếp tục — và vì các trợ lý CrewAI truyền dữ liệu theo trình tự, toàn bộ quy trình của nhóm sẽ dừng lại.
Vấn đề này trở nên nghiêm trọng hơn trong CrewAI vì nhiều trợ lý có thể cần truy cập web. Một nhóm tăng cường thông tin liên lạc có thể có một trợ lý thu thập dữ liệu công ty và một trợ lý xác minh thông tin liên hệ — cả hai đều gặp CAPTCHA trên các trang khác nhau cùng lúc. Nếu không có cơ chế giải quyết, các nhóm sản xuất cần sự giám sát của con người liên tục, làm mất đi mục đích của việc điều phối đa trợ lý tự động.
Theo dữ liệu sản xuất của CapSolver, khoảng 30% các nhiệm vụ web của trợ lý gặp phải các thách thức xác minh. Đối với một nhóm CrewAI thực hiện 10 nhiệm vụ phụ thuộc vào web, điều này có nghĩa là 3 điểm có thể gây treo mỗi lần chạy — mỗi điểm đều cần can thiệp thủ công nếu không có giải pháp tự động.
Những gì bạn cần trước khi bắt đầu
Cài đặt các gói cần thiết:
bash
# Động cơ CapSolver (phụ thuộc bắt buộc)
pip install git+https://github.com/capsolver-ai/capsolver-core.git
# Công cụ CapSolver cho trợ lý
pip install git+https://github.com/capsolver-ai/capsolver-agent.git
# Khung CrewAI
pip install crewai crewai-tools
Thiết lập biến môi trường:
bash
export CAPSOLVER_API_KEY="your-capsolver-api-key"
export OPENAI_API_KEY="your-openai-api-key"
Đảm bảo bạn có tài khoản CapSolver với tín dụng API đã nạp. Trang giá cả của CapSolver hiển thị mức giá hiện tại cho từng loại CAPTCHA.
Bước 1 — Tạo Công cụ Giải CAPTCHA cho CrewAI
Điều gì cần làm
CrewAI sử dụng các công cụ tùy chỉnh được định nghĩa bằng ghi chú @tool. Bao bọc executor của CapSolver vào một công cụ tương thích với CrewAI:
python
import asyncio
from crewai import Agent, Task, Crew
from crewai.tools import tool
from capsolver_agent.schema import create_executor
# Tạo executor của CapSolver
executor = create_executor(api_key="YOUR_CAPSOLVER_API_KEY")
@tool("Giải CAPTCHA")
def solve_captcha(captcha_type: str, website_url: str, website_key: str) -> str:
"""Giải thách thức CAPTCHA và trả về token.
Sử dụng công cụ này khi bạn gặp CAPTCHA trên trang web.
Args:
captcha_type: Loại CAPTCHA - 'reCaptchaV2', 'reCaptchaV3' hoặc 'cloudflare'
website_url: URL đầy đủ của trang có CAPTCHA
website_key: Mã trang (giá trị thuộc tính data-sitekey)
Returns:
Token CAPTCHA đã giải để gửi cùng biểu mẫu
"""
result = asyncio.run(executor.execute("solve_captcha", {
"captcha_type": captcha_type,
"website_url": website_url,
"website_key": website_key
}))
if result["success"]:
return f"CAPTCHA đã được giải thành công. Token: {result['solution']['token']}"
else:
return f"Giải CAPTCHA thất bại: {result['error']}"
Công cụ này tuân theo mẫu tiêu chuẩn của CrewAI — ghi chú @tool đăng ký nó với tên và mô tả mà LLM của trợ lý sử dụng để quyết định khi nào gọi nó.
Tại sao điều này quan trọng
Các trợ lý CrewAI chọn công cụ dựa trên mô tả của chúng. Một công cụ giải CAPTCHA được mô tả rõ ràng cho phép trợ lý tự động nhận ra khi cần giải và gọi công cụ với các tham số chính xác. Định dạng đầu ra có cấu trúc cung cấp phản hồi rõ ràng cho trợ lý về thành công hoặc thất bại.
Những sai lầm phổ biến cần tránh
- Sử dụng async trực tiếp trong công cụ CrewAI: Thực thi công cụ của CrewAI là đồng bộ. Bao bọc các cuộc gọi CapSolver async bằng
asyncio.run()bên trong hàm công cụ. - Mô tả công cụ mơ hồ: LLM cần mô tả rõ ràng để biết khi nào sử dụng công cụ. Bao gồm tên cụ thể của loại CAPTCHA và giải thích tham số.
Bước 2 — Xây dựng Trợ lý CrewAI với Khả năng Giải CAPTCHA
Điều gì cần làm
Tạo một trợ lý CrewAI có khả năng giải CAPTCHA như một trong những công cụ có sẵn:
python
from crewai import Agent
# Trợ lý nghiên cứu với khả năng giải CAPTCHA
researcher = Agent(
role="Chuyên gia Nghiên cứu Web",
goal="Thu thập dữ liệu từ các trang web, xử lý mọi thách thức CAPTCHA gặp phải",
backstory="""Bạn là chuyên gia nghiên cứu web thu thập dữ liệu từ nhiều nguồn trực tuyến.
Khi bạn gặp thách thức CAPTCHA trên một trang web, bạn sử dụng công cụ solve_captcha để vượt qua nó
và tiếp tục nghiên cứu của mình. Bạn biết cách nhận diện các loại CAPTCHA: reCaptchaV2 (hộp kiểm hoặc ẩn), reCaptchaV3
(dựa trên điểm số), và cloudflare (widget Turnstile).""",
tools=[solve_captcha],
verbose=True
)
Đối với các nhóm cần nhiều trợ lý có quyền truy cập web, cung cấp công cụ CAPTCHA cho mỗi trợ lý có thể gặp xác minh:
python
# Trợ lý thu thập dữ liệu
data_collector = Agent(
role="Chuyên gia Thu thập Dữ liệu",
goal="Trích xuất dữ liệu có cấu trúc từ các trang web mục tiêu",
backstory="Bạn thu thập dữ liệu từ các nguồn web và xử lý các thách thức CAPTCHA bằng công cụ solve_captcha.",
tools=[solve_captcha],
verbose=True
)
# Trợ lý xác minh
verifier = Agent(
role="Chuyên gia Xác minh Dữ liệu",
goal="Xác minh dữ liệu thu thập được với các nguồn chính thống",
backstory="Bạn xác minh độ chính xác của dữ liệu bằng cách kiểm tra các nguồn chính thức, giải CAPTCHA khi cần thiết.",
tools=[solve_captcha],
verbose=True
)
Bước 3 — Gom Nhóm với Nhiệm Vụ Có Khả Năng Giải CAPTCHA
Điều gì cần làm
Định nghĩa các nhiệm vụ có thể yêu cầu giải CAPTCHA và gom chúng thành một nhóm:
python
from crewai import Task, Crew, Process
# Nhiệm vụ có thể gặp CAPTCHA
research_task = Task(
description="""Nghiên cứu trang web mục tiêu tại {url}.
Nếu bạn gặp thách thức CAPTCHA, xác định loại và mã trang,
sau đó sử dụng công cụ solve_captcha để lấy token.
Trang này sử dụng reCAPTCHA v2 với mã trang: {site_key}.
Thu thập dữ liệu cần thiết sau khi giải CAPTCHA.""",
expected_output="Dữ liệu đã thu thập từ trang web mục tiêu với token CAPTCHA nếu cần",
agent=researcher
)
# Nhiệm vụ phân tích (phụ thuộc vào kết quả nghiên cứu)
analysis_task = Task(
description="Phân tích dữ liệu thu thập bởi nhà nghiên cứu và sản xuất báo cáo tóm tắt.",
expected_output="Báo cáo phân tích có cấu trúc về dữ liệu đã thu thập",
agent=data_collector
)
# Tạo nhóm
crew = Crew(
agents=[researcher, data_collector],
tasks=[research_task, analysis_task],
process=Process.sequential,
verbose=True
)
# Chạy nhóm
result = crew.kickoff(inputs={
"url": "https://example.com/data",
"site_key": "6LeIxAcTAAAAAJcZVRqyHh71UMIEGNQ_MXjiZKhI"
})
print(result)
Quy trình tuần tự đảm bảo nhà nghiên cứu hoàn thành (bao gồm giải CAPTCHA) trước khi nhà phân tích bắt đầu. Đối với thực thi song song, mỗi trợ lý xử lý CAPTCHA độc lập trên các trang được giao.
Tại sao điều này quan trọng
Sức mạnh của CrewAI là hợp tác đa trợ lý. Bằng cách cung cấp khả năng giải CAPTCHA cho các trợ lý cần thiết, nhóm hoạt động tự động từ đầu đến cuối. Không cần can thiệp của con người khi xuất hiện các thách thức xác minh — trợ lý nhận ra tình huống, gọi công cụ và tiếp tục.
Bước 4 — Xử Lý Nhiều Loại CAPTCHA trong CrewAI
Các trang web khác nhau sử dụng các hệ thống CAPTCHA khác nhau. Tạo các công cụ chuyên dụng cho các tình huống phổ biến:
python
@tool("Giải reCAPTCHA v3")
def solve_recaptcha_v3(website_url: str, website_key: str, page_action: str = "verify") -> str:
"""Giải thách thức reCAPTCHA v3 với token điểm số cao.
Sử dụng khi trang sử dụng reCAPTCHA v3 ẩn (dựa trên điểm số, không có hộp kiểm hiển thị).
Args:
website_url: URL đầy đủ của trang
website_key: Mã trang reCAPTCHA
page_action: Tên hành động cho điểm số v3 (mặc định: 'verify')
"""
result = asyncio.run(executor.execute("solve_captcha", {
"captcha_type": "reCaptchaV3",
"website_url": website_url,
"website_key": website_key,
"page_action": page_action,
"min_score": 0.7
}))
if result["success"]:
return f"reCAPTCHA v3 đã được giải. Token: {result['solution']['token']}"
return f"Thất bại: {result['error']}"
@tool("Giải Cloudflare Turnstile")
def solve_turnstile(website_url: str, website_key: str) -> str:
"""Giải thách thức Cloudflare Turnstile.
Sử dụng khi trang được bảo vệ bởi Cloudflare và hiển thị widget Turnstile.
Args:
website_url: URL đầy đủ của trang
website_key: Mã trang Turnstile (bắt đầu bằng 0x)
"""
result = asyncio.run(executor.execute("solve_captcha", {
"captcha_type": "cloudflare",
"website_url": website_url,
"website_key": website_key
}))
if result["success"]:
return f"Turnstile đã được giải. Token: {result['solution']['token']}"
return f"Thất bại: {result['error']}"
| Loại CAPTCHA | Công cụ để sử dụng | Thời gian giải trung bình | Thường gặp ở |
|---|---|---|---|
| reCAPTCHA v2 | solve_captcha | 5-12 giây | Trang đăng nhập, biểu mẫu |
| reCAPTCHA v3 | solve_recaptcha_v3 | 3-8 giây | APIs, bảo vệ ẩn |
| Cloudflare Turnstile | solve_turnstile | 2-5 giây | SaaS hiện đại, Shopify |
Chỉ dẫn reCAPTCHA của CapSolver và chỉ dẫn Cloudflare Turnstile cung cấp thêm thông tin về các tham số và hành vi của từng loại CAPTCHA.
Mã khuyến mãi của bạn: Sử dụng mã WEBS tại Bảng điều khiển CapSolver để nhận thêm 5% khuyến mãi cho mỗi lần nạp tiền. Lý tưởng cho các nhóm chạy các quy trình đa trợ lý CrewAI quy mô lớn.
Bước 5 — Mẫu Sản xuất cho CrewAI + CapSolver
Điều gì cần làm
Đối với triển khai CrewAI sản xuất, thêm xử lý lỗi và logic thử lại:
python
@tool("Giải CAPTCHA với Thử lại")
def solve_captcha_robust(captcha_type: str, website_url: str, website_key: str) -> str:
"""Giải CAPTCHA với thử lại tự động khi thất bại.
Thử giải tối đa 3 lần trước khi báo cáo thất bại.
"""
for attempt in range(3):
result = asyncio.run(executor.execute("solve_captcha", {
"captcha_type": captcha_type,
"website_url": website_url,
"website_key": website_key
}))
if result["success"]:
return f"Giải thành công ở lần thử {attempt + 1}. Token: {result['solution']['token']}"
if attempt < 2:
import time
time.sleep(3)
return f"Thất bại sau 3 lần thử: {result.get('error', 'Lỗi không xác định')}"
Đối với các nhóm xử lý nhiều trang, triển khai kiểm tra số dư trước khi bắt đầu:
python
@tool("Kiểm tra Số dư Giải CAPTCHA")
def check_balance() -> str:
"""Kiểm tra số dư còn lại cho tín dụng giải CAPTCHA."""
result = asyncio.run(executor.execute("get_balance", {}))
if result["success"]:
return f"Số dư: ${result['balance']:.2f}"
return "Không thể kiểm tra số dư"
Tài liệu web scraping của CapSolver đề cập đến các mẫu bổ sung cho thu thập dữ liệu quy mô lớn áp dụng cho các trợ lý nghiên cứu CrewAI. Đối với các trợ lý sử dụng tự động hóa trình duyệt, phần mở rộng CapSolver giúp xác định các tham số CAPTCHA trong quá trình phát triển.
Kết luận
Việc tích hợp giải CAPTCHA vào các quy trình đa trợ lý CrewAI yêu cầu bao bọc executor của CapSolver trong các hàm @tool tương thích với CrewAI, gán các công cụ này cho các trợ lý thực hiện nhiệm vụ web, và gom các nhóm có thể hoạt động tự động qua các thách thức xác minh. CapSolver cung cấp cơ sở hạ tầng giải CAPTCHA dựa trên AI giúp các luồng đa trợ lý của bạn chạy mà không cần can thiệp của con người.
Bắt đầu bằng cách tạo một công cụ giải CAPTCHA đơn, kiểm tra với một trợ lý, sau đó mở rộng sang các nhóm đầy đủ với nhiều trợ lý tương tác web. Cách tiếp cận dựa trên công cụ nghĩa là các trợ lý quyết định khi giải dựa trên bối cảnh — không cần logic phát hiện CAPTCHA được mã hóa cứng.
FAQ
Nhiều trợ lý CrewAI có thể giải CAPTCHA đồng thời không?
Có. Mỗi trợ lý có công cụ giải CAPTCHA có thể gọi nó độc lập. API của CapSolver hỗ trợ gửi nhiệm vụ song song mà không bị giới hạn tốc độ, vì vậy thực thi nhóm song song hoạt động mà không có xung đột. Mỗi lần giải được theo dõi với ID yêu cầu duy nhất để gỡ lỗi.
CrewAI biết khi nào trợ lý cần giải CAPTCHA như thế nào?
Trợ lý LLM suy luận tình huống dựa trên mô tả công cụ và bối cảnh nhiệm vụ. Khi nhiệm vụ liên quan đến tài nguyên được bảo vệ bằng CAPTCHA, trợ lý nhận ra nhu cầu và gọi công cụ giải với tham số phù hợp. Bạn cũng có thể bao gồm chi tiết CAPTCHA trong mô tả nhiệm vụ để hướng dẫn rõ ràng.
Điều gì xảy ra nếu giải CAPTCHA thất bại trong quy trình CrewAI?
Công cụ trả về thông báo thất bại cho trợ lý. Trợ lý sau đó có thể thử lại, thử tham số khác hoặc báo cáo thất bại trong đầu ra nhiệm vụ của nó. Xử lý lỗi của CrewAI cho phép nhóm tiếp tục với các nhiệm vụ còn lại ngay cả khi một nhiệm vụ gặp CAPTCHA không thể giải.
CapSolver có tương thích với chế độ xử lý phân cấp của CrewAI không?
Có. Trong chế độ xử lý phân cấp, trợ lý quản lý phân công nhiệm vụ cho các thành viên nhóm. Nếu nhiệm vụ được phân công yêu cầu giải CAPTCHA, trợ lý được gán sẽ sử dụng công cụ của nó độc lập. Trợ lý quản lý nhận kết quả hoàn thành mà không cần hiểu chi tiết giải CAPTCHA.
Chi phí giải CAPTCHA cho mỗi lần chạy CrewAI là bao nhiêu?
Chi phí phụ thuộc vào số lượng CAPTCHA gặp phải và loại của chúng. reCAPTCHA v2 chi phí khoảng 2-3 USD trên 1.000 lần giải, reCAPTCHA v3 chi phí 1-2 USD trên 1.000 và Cloudflare Turnstile chi phí 1-2 USD trên 1.000. Một nhóm nghiên cứu CrewAI thông thường gặp 3-5 CAPTCHA mỗi lần chạy chi phí khoảng 0,005-0,015 USD mỗi lần thực thi.
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

