
Anh Tuan
Data Science Expert

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.
TL;DR - Lỗi hết thời gian CAPTCHA của trợ lý AI cần có ngân sách riêng cho sự sẵn sàng trang, vận chuyển công cụ, xử lý CAPTCHA và xác nhận ứng dụng. - Kết quả muộn phải bị loại bỏ khi URL trang, ngữ cảnh trình duyệt, thách thức hoặc hành động được ủy quyền đã thay đổi. - Một lần thử lại có giới hạn có thể hợp lý cho lỗi vận chuyển tạm thời, nhưng các điểm kiểm tra lặp lại nên mở con đường xem xét lại. - Điều kiện vượt qua cuối cùng là trạng thái ứng dụng ban đầu, chứ không phải sự vắng mặt của ngoại lệ được ném ra. Giới thiệu

Một trình giải reCAPTCHA mcp rất hữu ích khi một nhiệm vụ AI được phép đã biết reCAPTCHA mà nó gặp phải và cần một cuộc gọi phục hồi có cấu trúc. CapSolver cung cấp công cụ `solve_captcha` chính thức thông qua `capsolver-mcp`, trong khi `detect_captchas` và `solve_on_page` hỗ trợ phục hồi được điều khiển bởi trình duyệt. Tích hợp nên giữ nguyên URL trang, phiên bản reCAPTCHA, khóa trang, phiên bản trình duyệt và hành động được ủy quyền như một điểm kiểm tra. Nó cũng nên dừng lại thay vì đoán whe
