
Anh Tuan
Data Science Expert
Đã xuất bản Aug 12, 2026
Đã cập nhật Aug 12, 2026 · đọc tối thiểu

ready, failed và timeout qua các cạnh rõ ràng để agent không thể thử lại mãi mãi.Một trình giải CAPTCHA của LangGraph cung cấp cho quy trình AI một con đường phục hồi được kiểm soát khi một nhiệm vụ lướt web được ủy quyền gặp phải điểm kiểm tra xác minh được hỗ trợ. LangGraph vẫn chịu trách nhiệm về điều phối, trong khi CapSolver xử lý nhiệm vụ CAPTCHA chuyên biệt thông qua API hoặc công cụ agent.
Thiết kế hữu ích là một máy trạng thái nhỏ: lướt web, phát hiện, yêu cầu giải pháp, áp dụng token, xác minh kết quả trang và tiếp tục hoặc dừng lại. Điều này giữ cho việc xử lý CAPTCHA có thể quan sát được và ngăn mô hình tự ý định các tham số hoặc lặp lại các cuộc gọi mà không có giới hạn.
Sử dụng mẫu này chỉ trên các trang và môi trường kiểm thử mà bạn được ủy quyền để tự động hóa. Bạn cần một ứng dụng LangGraph, lớp điều khiển trình duyệt, tài khoản CapSolver và kho lưu trữ bí mật phía máy chủ cho CAPSOLVER_API_KEY. Bước trình duyệt phải có thể xác định loại thử thách và thu thập các tham số được tài liệu bởi CapSolver.
Hướng dẫn agent của CapSolver mô tả quy trình agent được hỗ trợ. Tài liệu SDK Core bao gồm giao diện lập trình, trong khi tài liệu Agent Tools mô tả cách sử dụng công cụ.
Trạng thái đồ thị nên chỉ mang theo các giá trị cần thiết cho định tuyến và xác minh:
from typing import Literal, TypedDict
class AgentState(TypedDict, total=False):
page_url: str
captcha_type: Literal["recaptcha_v2", "recaptcha_v3", "turnstile"]
website_key: str
action: str
task_id: str
token: str
captcha_status: Literal["not_found", "pending", "ready", "failed", "timeout"]
attempts: int
Giữ khóa API bên ngoài đối tượng này. Trạng thái đồ thị có thể được ghi lại hoặc điểm kiểm tra, vì vậy thông tin xác thực nên nằm trong biến môi trường hoặc quản lý bí mật được phê duyệt.
Nút giải quyết nên chuyển đổi trạng thái đã biết thành một nhiệm vụ CapSolver được hỗ trợ. Mã sau là một ranh giới minh họa; kết nối nó với SDK chính thức hoặc lược đồ REST mà dịch vụ của bạn sử dụng.
MAX_ATTEMPTS = 2
def solve_captcha(state: AgentState) -> AgentState:
attempts = state.get("attempts", 0)
if attempts >= MAX_ATTEMPTS:
return {**state, "captcha_status": "timeout"}
required = ("page_url", "website_key", "captcha_type")
if any(not state.get(key) for key in required):
return {**state, "captcha_status": "failed"}
result = capsolver_client.solve({
"type": state["captcha_type"],
"websiteURL": state["page_url"],
"websiteKey": state["website_key"],
"action": state.get("action"),
})
return {
**state,
"attempts": attempts + 1,
"token": result.get("token", ""),
"captcha_status": "ready" if result.get("token") else "failed",
}
Không để mô hình ngôn ngữ tạo ra websiteKey, loại thử thách hoặc hành động. Trích xuất các giá trị này từ trang hiện tại hoặc cấu hình ứng dụng, sau đó xác minh trước khi gọi công cụ.
Nhận mã thưởng CapSolver của bạn
Tăng ngân sách tự động hóa của bạn ngay lập tức!
Sử dụng mã thưởng CAP26 khi nạp tiền vào tài khoản CapSolver để nhận thêm 5% thưởng cho mỗi lần nạp tiền — không có giới hạn.
Nhận mã thưởng ngay bây giờ trong Bảng điều khiển CapSolver
LangGraph nên định tuyến dựa trên trạng thái quan sát được thay vì văn bản tự do của mô hình:
def route_after_detection(state: AgentState) -> str:
if state.get("captcha_status") == "pending":
return "solve_captcha"
return "continue_browser"
def route_after_solve(state: AgentState) -> str:
if state.get("captcha_status") == "ready":
return "apply_token"
return "stop_with_diagnostic"
Nút apply_token nên hoạt động trên cùng phiên lướt web đã phát hiện thử thách. Sau khi áp dụng, một nút xác minh riêng biệt nên kiểm tra phản hồi ứng dụng, điều hướng mong đợi hoặc xác nhận phía máy chủ. Một token đơn thuần không phải là bằng chứng cho thấy quy trình đã thành công.
Phân loại lỗi trước khi quyết định hành động. Các tham số bị thiếu là vấn đề cấu hình. Một token bị từ chối có thể cho thấy token hết hạn, URL trang không khớp, khóa trang, hành động hoặc ngữ cảnh trình duyệt. Một thời gian chờ dịch vụ là vấn đề vận hành và có thể biện minh cho một lần thử có giới hạn.
Ghi lại task_id, loại thử thách, thời gian đã trôi qua và mã lỗi đã được làm sạch. Không lưu trữ token, cookie, thông tin xác thực hoặc nội dung trang nhạy cảm trong nhật ký agent tổng thể. Gửi lỗi cho con người khi trang yêu cầu hành động không nên tự động.
Một tích hợp CAPTCHA đáng tin cậy với LangGraph là một nhánh hẹp, có thể quan sát với đầu vào rõ ràng và điều kiện dừng. Giữ điều phối trình duyệt trong LangGraph, giữ tham số CAPTCHA có cấu trúc và xác minh kết quả kinh doanh sau khi áp dụng token. CapSolver có thể cung cấp khả năng CAPTCHA chuyên biệt mà không biến toàn bộ agent thành một vòng phục hồi không minh bạch.
Câu hỏi: LangGraph có thể giải CAPTCHA một mình không?
Không. LangGraph điều phối các nút và trạng thái; một trình duyệt được ủy quyền và dịch vụ CAPTCHA riêng biệt thực hiện công việc chuyên biệt.
Câu hỏi: Loại CAPTCHA nào đồ thị nên hỗ trợ?
Bắt đầu chỉ với các loại được tài liệu bởi bề mặt agent CapSolver hiện tại, như reCAPTCHA v2, reCAPTCHA v3 và Cloudflare Turnstile.
Câu hỏi: Khóa API có nên được lưu trữ trong trạng thái LangGraph không?
Không. Lưu khóa API trong biến môi trường hoặc quản lý bí mật phía máy chủ vì trạng thái đồ thị có thể được lưu trữ hoặc ghi lại.
Câu hỏi: Nút nên thử lại bao nhiêu lần?
Sử dụng một hoặc hai lần thử có giới hạn và dừng lại khi bị từ chối lặp lại, tham số bị thiếu hoặc không chắc chắn về quyền truy cập.

Anh Tuan
Data Science Expert
Turning task outcomes into actionable insights.
GIỚI THIỆU TÁC GIẢ
So sánh cách trình duyệt xử lý CAPTCHA trong trình duyệt địa phương và đám mây, hiểu nơi nào CapSolver phù hợp, và chọn cài đặt thực tế cho quy trình của đại lý được ủy quyền.

Tìm CapSolver MCP trong Cơ sở dữ liệu MCP Chính thức, cài đặt phiên bản 0.1.3 bằng uvx hoặc pip, cấu hình một client cục bộ và kiểm tra các công cụ stdio.
