Cách giải CAPTCHA trong các tác nhân LlamaIndex

Anh Tuan
Data Science Expert
31-Jul-2026
Các agent LlamaIndex điều phối quy trình truy xuất dữ liệu, lập chỉ mục và truy vấn trên nhiều nguồn khác nhau. Khi các agent này truy cập các nguồn dữ liệu dựa trên web được bảo vệ bởi các thử thách CAPTCHA, chúng cần cơ chế giải quyết để tiếp tục quá trình nhập dữ liệu. Gói capsolver-agent của CapSolver cung cấp các lược đồ công cụ tương thích với hệ thống FunctionTool của LlamaIndex, cho phép agent của bạn vượt qua các thử thách reCAPTCHA, Cloudflare Turnstile và các loại xác minh khác trong quy trình dữ liệu của nó.
TL;DR
- Các agent LlamaIndex bị treo khi nguồn dữ liệu web được bảo vệ bởi xác minh CAPTCHA
- CapSolver tích hợp thông qua bao bọc
FunctionToolcủa LlamaIndex với giải quyết bất đồng bộ - Bộ xử lý
capsolver-agentxử lý giải quyết và trả về kết quả có cấu trúc cho vòng lập suy luận của agent - Hỗ trợ reCAPTCHA v2/v3 và Cloudflare Turnstile — các loại xác minh phổ biến nhất trên web
- Tích hợp mất dưới 15 dòng bằng cách sử dụng
create_executor()vàFunctionTool.from_defaults()
Tại sao các agent LlamaIndex cần giải quyết CAPTCHA
LlamaIndex xuất sắc trong việc xây dựng các agent truy xuất, lập chỉ mục và truy vấn dữ liệu từ nhiều nguồn. Khi các nguồn này bao gồm trang web, API hoặc cơ sở dữ liệu được bảo vệ bởi hệ thống CAPTCHA, quy trình nhập dữ liệu của agent sẽ bị gián đoạn. Một agent RAG cần lập chỉ mục tài liệu từ trang web bị CAPTCHA, hoặc một agent nghiên cứu truy vấn nhiều nguồn web, không thể tiếp tục mà không có xác minh được xóa bỏ.
Vấn đề đặc biệt nghiêm trọng đối với hệ sinh thái kết nối dữ liệu của LlamaIndex. Các kết nối dựa trên web lấy trang để lập chỉ mục gặp CAPTCHA sau nhiều lần truy cập. Không có công cụ giải quyết, agent sẽ bỏ qua nguồn (dữ liệu không đầy đủ) hoặc thất bại hoàn toàn (quy trình bị gián đoạn).
Tích hợp công cụ của CapSolver tuân theo mô hình tiêu chuẩn của LlamaIndex: định nghĩa một hàm, bao bọc nó thành FunctionTool, và thêm vào danh sách công cụ của agent. Động cơ suy luận của agent quyết định khi nào gọi giải quyết dựa trên bối cảnh nhiệm vụ.
Những gì bạn cần trước khi bắt đầu
bash
# Gói CapSolver
pip install git+https://github.com/capsolver-ai/capsolver-core.git
pip install git+https://github.com/capsolver-ai/capsolver-agent.git
# LlamaIndex
pip install llama-index llama-index-llms-openai
bash
export CAPSOLVER_API_KEY="your-capsolver-api-key"
export OPENAI_API_KEY="your-openai-api-key"
Bước 1 — Tạo FunctionTool giải quyết CAPTCHA
python
import asyncio
from llama_index.core.tools import FunctionTool
from capsolver_agent.schema import create_executor
executor = create_executor(api_key="YOUR_CAPSOLVER_API_KEY")
def solve_captcha(captcha_type: str, website_url: str, website_key: str) -> str:
"""Giải quyết thử thách CAPTCHA và trả về token xác minh.
Sử dụng khi truy cập tài nguyên web được bảo vệ bởi xác minh CAPTCHA.
Args:
captcha_type: 'reCaptchaV2', 'reCaptchaV3' hoặc 'cloudflare'
website_url: URL đầy đủ của trang bị CAPTCHA
website_key: khóa trang (giá trị thuộc tính data-sitekey)
Returns:
Chuỗi token đã giải hoặc thông báo lỗi
"""
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 đã giải. Token: {result['solution']['token']}"
return f"Thất bại: {result['error']}"
# Bao bọc thành FunctionTool của LlamaIndex
captcha_tool = FunctionTool.from_defaults(
fn=solve_captcha,
name="solve_captcha",
description="Giải quyết các thử thách CAPTCHA (reCAPTCHA v2/v3, Cloudflare Turnstile) trên các trang web được bảo vệ"
)
Bước 2 — Xây dựng agent LlamaIndex với khả năng giải CAPTCHA
python
from llama_index.core.agent import ReActAgent
from llama_index.llms.openai import OpenAI
# Tạo LLM
llm = OpenAI(model="gpt-4o", temperature=0)
# Tạo agent với công cụ giải CAPTCHA
agent = ReActAgent.from_tools(
tools=[captcha_tool],
llm=llm,
verbose=True
)
# Chạy agent
response = agent.chat(
"Tôi cần truy cập https://example.com/data có reCAPTCHA v2. "
"Khóa trang là 6LeIxAcTAAAAAJcZVRqyHh71UMIEGNQ_MXjiZKhI. "
"Giải nó và cung cấp token."
)
print(response)
Bước 3 — Tích hợp với các kết nối dữ liệu LlamaIndex
Đối với các agent nhập dữ liệu web, kết hợp giải CAPTCHA với việc tải dữ liệu:
python
from llama_index.core import VectorStoreIndex, Document
def fetch_protected_page(url: str, site_key: str) -> str:
"""Lấy trang bị CAPTCHA bằng cách giải trước."""
# Giải CAPTCHA
token = solve_captcha("reCaptchaV2", url, site_key)
if "Thất bại" in token:
return ""
# Sử dụng token để truy cập trang
import requests
response = requests.post(url, data={"g-recaptcha-response": token.split("Token: ")[1]})
return response.text
# Tạo công cụ tùy chỉnh cho việc nhập dữ liệu bị bảo vệ
protected_fetch_tool = FunctionTool.from_defaults(
fn=fetch_protected_page,
name="fetch_protected_page",
description="Lấy nội dung từ trang web bị bảo vệ bằng cách giải xác minh trước"
)
# Agent với khả năng giải và tải dữ liệu
data_agent = ReActAgent.from_tools(
tools=[captcha_tool, protected_fetch_tool],
llm=llm,
verbose=True
)
Bước 4 — Mẫu sản xuất
python
def solve_captcha_with_retry(captcha_type: str, website_url: str, website_key: str, max_retries: int = 3) -> str:
"""Giải CAPTCHA với logic thử lại cấp độ sản xuất."""
for attempt in range(max_retries):
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 (lần thử {attempt+1}). Token: {result['solution']['token']}"
if attempt < max_retries - 1:
import time
time.sleep(3)
return f"Thất bại sau {max_retries} lần thử: {result.get('error')}"
# Công cụ sản xuất với thử lại
production_captcha_tool = FunctionTool.from_defaults(
fn=solve_captcha_with_retry,
name="solve_captcha",
description="Giải CAPTCHA với thử lại tự động khi thất bại"
)
| Loại CAPTCHA | Tham số | Thời gian giải | Chi phí mỗi 1K |
|---|---|---|---|
| reCAPTCHA v2 | reCaptchaV2 |
5-12s | $2-3 |
| reCAPTCHA v3 | reCaptchaV3 |
3-8s | $1-2 |
| Cloudflare Turnstile | cloudflare |
2-5s | $1-2 |
Nhận mã thưởng của bạn: Sử dụng mã WEBS tại Bảng điều khiển CapSolver để nhận thêm 5% thưởng cho mỗi lần nạp tiền.
Tài liệu API CapSolver bao gồm các tham số bổ sung. Để xác định loại CAPTCHA, sử dụng phần mở rộng CapSolver. Hướng dẫn quét web CapSolver bao gồm các mẫu thu thập dữ liệu áp dụng cho các kết nối dữ liệu LlamaIndex.
Kết luận
Việc tích hợp giải CAPTCHA vào các agent LlamaIndex yêu cầu bao bọc executor của CapSolver trong FunctionTool và thêm vào danh sách công cụ của agent ReAct. Vòng lập suy luận của agent quyết định khi nào gọi giải quyết dựa trên bối cảnh nhiệm vụ. CapSolver cung cấp cơ sở hạ tầng giải quyết xử lý reCAPTCHA và Cloudflare Turnstile qua API thống nhất, giữ cho các quy trình dữ liệu LlamaIndex hoạt động liên tục.
Câu hỏi thường gặp
CapSolver có hoạt động với agent bất đồng bộ của LlamaIndex không?
Có. Bộ xử lý capsolver-agent hoàn toàn bất đồng bộ. Đối với agent bất đồng bộ của LlamaIndex, sử dụng await executor.execute() trực tiếp thay vì bao bọc bằng asyncio.run().
Tôi có thể sử dụng điều này với các kết nối đọc web của LlamaIndex không?
Có. Kết hợp công cụ giải CAPTCHA với các trình đọc web tùy chỉnh xử lý xác minh trước khi lấy nội dung trang. Agent có thể giải CAPTCHA trước, sau đó truyền token cho trình đọc web để truy cập có xác thực.
Nếu agent LlamaIndex của tôi gặp loại CAPTCHA không xác định thì sao?
Công cụ get_supported_captchas trả về danh sách các loại được hỗ trợ. Nếu agent gặp loại không hỗ trợ, nó sẽ nhận được thông báo lỗi rõ ràng và có thể báo cáo cho người dùng thay vì thất bại im lặng.
So sánh với việc sử dụng capsolver-mcp với LlamaIndex thì sao?
capsolver-mcp dành cho khách hàng MCP (Claude Desktop, Cursor). Đối với agent LlamaIndex chạy trong mã, sử dụng capsolver-agent với FunctionTool — nó cung cấp kiểm soát chương trình trực tiếp trong khung LlamaIndex.
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

