CAPSOLVER
Blog
Cách giải reCAPTCHA trong LangChain

Cách giải reCAPTCHA trong LangChain

Logo of CapSolver

Anh Tuan

Data Science Expert

08-Jul-2026

reCAPTCHA là thách thức xác minh phổ biến nhất mà các tác nhân AI gặp phải khi lướt web. Các tác nhân LangChain thực hiện thu thập dữ liệu, gửi biểu mẫu hoặc quy trình nhiều bước thường gặp các hộp kiểm tra reCAPTCHA v2 và các thách thức không hiển thị trên trang đăng nhập, kết quả tìm kiếm và nội dung được bảo vệ. Hướng dẫn này minh họa cách giải reCAPTCHA v2 cụ thể trong LangChain bằng gói capsolver-agent của CapSolver, với các ví dụ mã hoàn chỉnh cho cả chế độ Token và chế độ Trình duyệt.

Tóm tắt

  • reCAPTCHA v2 là loại CAPTCHA phổ biến nhất mà các tác nhân web của LangChain gặp phải
  • Các công cụ LangChain của CapSolver giải reCAPTCHA v2 (hộp kiểm tra và không hiển thị) trong 5-12 giây trung bình
  • Chế độ Token chỉ cần khóa trang web và URL - không cần trình duyệt
  • Chế độ Trình duyệt tự động phát hiện reCAPTCHA trên bất kỳ trang nào và điền token vào DOM
  • Gói capsolver-agent cung cấp các triển khai BaseTool bản địa cho các tác nhân ReAct của LangChain

Tại sao reCAPTCHA ngăn các tác nhân LangChain

reCAPTCHA v2 được triển khai trên hàng triệu trang web để phân biệt người dùng thực từ lưu lượng tự động. Khi một tác nhân LangChain truy cập trang được bảo vệ - dù để tăng cường thông tin liên hệ, trích xuất dữ liệu hay tự động hóa quy trình - động cơ phân tích rủi ro của Google đánh giá phiên bản. Các trình duyệt tự động, môi trường không đầu và các mô hình di chuyển nhanh kích hoạt thách thức reCAPTCHA, làm dừng thực thi tác nhân.

Thách thức xuất hiện ở hai dạng: hộp kiểm tra hiển thị ("Tôi không phải là robot") yêu cầu tương tác, và biến thể không hiển thị kích hoạt âm thầm dựa trên điểm rủi ro. Cả hai dạng đều yêu cầu gửi token hợp lệ để tiếp tục. Không có cơ chế giải quyết, tác nhân LangChain không thể tiếp tục nhiệm vụ và toàn bộ chuỗi sẽ thất bại.

Tài liệu reCAPTCHA của Google xác nhận hệ thống sử dụng phân tích rủi ro tiên tiến bao gồm kiểm tra môi trường trình duyệt, mô hình tương tác và hành vi lịch sử. Điều này khiến reCAPTCHA đặc biệt thách thức cho các tác nhân tự động thiếu các mô hình lướt web giống người thật.

Dịch vụ giải reCAPTCHA v2 của CapSolver tạo ra các token hợp lệ thông qua cơ sở hạ tầng đám mây của họ, vượt qua nhu cầu tương tác chính xác pixel hoặc nhận dạng hình ảnh trong phạm vi cửa sổ của tác nhân.

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 Copy
# Động cơ cốt lõi (phụ thuộc bắt buộc)
pip install git+https://github.com/capsolver-ai/capsolver-core.git

# Công cụ tác nhân với hỗ trợ LangChain
pip install "capsolver-agent[langchain] @ git+https://github.com/capsolver-ai/capsolver-agent.git"

# Môi trường chạy LangChain
pip install langchain-openai langgraph

Thiết lập biến môi trường:

bash Copy
export CAPSOLVER_API_KEY="your-capsolver-api-key"
export OPENAI_API_KEY="your-openai-api-key"

Bạn cũng cần khóa trang web reCAPTCHA từ trang đích. Sử dụng tiện ích mở rộng CapSolver để xác định nó, hoặc kiểm tra mã nguồn trang để tìm thuộc tính data-sitekey. Hướng dẫn xác định reCAPTCHA tại đây giải thích cách phân biệt giữa các phiên bản v2 hộp kiểm tra, v2 không hiển thị và v3.

Bước 1 — Xác định thông số reCAPTCHA v2 trên trang đích

Điều cần làm

Tìm khóa trang web reCAPTCHA trên trang đích của bạn. Mở công cụ phát triển trình duyệt và tìm mã nguồn trang:

html Copy
<!-- reCAPTCHA v2 hiển thị (hộp kiểm tra) -->
<div class="g-recaptcha" data-sitekey="6LeIxAcTAAAAAJcZVRqyHh71UMIEGNQ_MXjiZKhI"></div>

<!-- reCAPTCHA v2 không hiển thị -->
<div class="g-recaptcha" data-sitekey="6LeIxAcT..." data-size="invisible"></div>

Ghi lại ba giá trị: data-sitekey, URL trang đầy đủ và xem nó có hiển thị hay không (kiểm tra data-size="invisible").

Đối với phát hiện chương trình sử dụng SDK CapSolver:

python Copy
from capsolver_core import create_capsolver
from playwright.async_api import async_playwright

async def detect_recaptcha(url: str):
    cap = create_capsolver(api_key="YOUR_API_KEY")
    async with async_playwright() as p:
        browser = await p.chromium.launch()
        page = await browser.new_page()
        await page.goto(url)
        
        # Phát hiện tự động tất cả CAPTCHAs trên trang
        infos = await cap.get_captcha_info(page)
        for info in infos:
            print(f"Loại: {info.type}, Khóa: {info.website_key}")
        
        await browser.close()
    await cap.aclose()

Tại sao điều này quan trọng

Khóa trang là tham số thiết yếu để giải reCAPTCHA. Không có nó, dịch vụ giải không thể tạo token hợp lệ cho trang cụ thể. Các trang khác nhau trên cùng một miền có thể sử dụng khóa trang khác nhau, vì vậy luôn kiểm tra từng trang.

Những sai lầm phổ biến cần tránh

  • Sử dụng khóa thử nghiệm trong môi trường sản xuất: Google cung cấp khóa thử nghiệm (như 6LeIxAcT...) luôn thành công. Các trang thực tế sử dụng khóa duy nhất yêu cầu giải thực tế.
  • Nhầm lẫn giữa v2 và v3: reCAPTCHA v3 sử dụng loại nhiệm vụ khác và yêu cầu page_action. Kiểm tra nguồn script - v3 được tải qua ?render=SITE_KEY thay vì phần tử div.

Bước 2 — Giải reCAPTCHA v2 với Công cụ LangChain (Chế độ Token)

Điều cần làm

Sử dụng các công cụ LangChain của capsolver-agent để giải reCAPTCHA v2 trong quy trình tác nhân của bạn:

python Copy
import asyncio
from langchain_openai import ChatOpenAI
from langgraph.prebuilt import create_react_agent
from capsolver_agent.langchain import get_langchain_tools

async def solve_recaptcha_with_agent():
    # Lấy công cụ LangChain của CapSolver
    tools = get_langchain_tools(api_key="YOUR_CAPSOLVER_API_KEY")
    
    # Tạo tác nhân ReAct
    llm = ChatOpenAI(model="gpt-4o", temperature=0)
    agent = create_react_agent(llm, tools=tools)
    
    # Yêu cầu tác nhân giải reCAPTCHA
    result = await agent.ainvoke({
        "messages": [("user", 
            "Giải reCAPTCHA v2 trên https://example.com/login. "
            "Khóa trang là 6LeIxAcTAAAAAJcZVRqyHh71UMIEGNQ_MXjiZKhI. "
            "Trả lại token tôi có thể sử dụng để gửi biểu mẫu."
        )]
    })
    
    print(result["messages"][-1].content)

asyncio.run(solve_recaptcha_with_agent())

Đối với thực thi trực tiếp mà không cần vòng lặp tác nhân (khi bạn muốn kiểm soát chương trình):

python Copy
from capsolver_agent.schema import create_executor

async def solve_recaptcha_direct():
    executor = create_executor(api_key="YOUR_CAPSOLVER_API_KEY")
    
    result = await executor.execute("solve_captcha", {
        "captcha_type": "reCaptchaV2",
        "website_url": "https://example.com/login",
        "website_key": "6LeIxAcTAAAAAJcZVRqyHh71UMIEGNQ_MXjiZKhI"
    })
    
    if result["success"]:
        token = result["solution"]["token"]
        print(f"reCAPTCHA đã được giải! Token: {token[:60]}...")
        # Gửi token này dưới dạng 'g-recaptcha-response' trong yêu cầu POST biểu mẫu
        return token
    else:
        print(f"Thất bại: {result['error']}")
        return None

Token trả về nên được gửi dưới dạng trường g-recaptcha-response trong yêu cầu POST biểu mẫu. Tài liệu giải reCAPTCHA v2 cung cấp thêm chi tiết về các mẫu gửi token.

Tại sao điều này quan trọng

Chế độ Token là phương pháp nhanh nhất cho reCAPTCHA v2 - thời gian giải trung bình là 5-12 giây mà không có chi phí trình duyệt. Đối với các tác nhân LangChain đã biết thông số trang đích, điều này cung cấp việc xóa CAPTCHA tức thì mà không cần khởi động phiên bản trình duyệt.

Những sai lầm phổ biến cần tránh

  • Không gửi token nhanh: Token reCAPTCHA hết hạn sau khoảng 120 giây. Gửi biểu mẫu ngay lập tức sau khi nhận token.
  • Bỏ qua cờ không hiển thị: Đối với reCAPTCHA v2 không hiển thị, cách giải giống nhau, nhưng bạn có thể cần kích hoạt hàm gọi lại gửi biểu mẫu sau khi chèn.

Bước 3 — Xử lý reCAPTCHA v2 không hiển thị

Điều cần làm

reCAPTCHA v2 không hiển thị hoạt động giống nhau về mặt API - cùng loại nhiệm vụ reCaptchaV2 xử lý cả hai biến thể:

python Copy
# reCAPTCHA v2 không hiển thị - gọi API giống nhau
result = await executor.execute("solve_captcha", {
    "captcha_type": "reCaptchaV2",
    "website_url": "https://example.com/checkout",
    "website_key": "6Ld_SITE_KEY_HERE"
    # Không cần cờ bổ sung - CapSolver xử lý không hiển thị tự động
})

Sự khác biệt nằm ở cách chèn token. reCAPTCHA không hiển thị thường liên kết với sự kiện nhấp vào nút hoặc gửi biểu mẫu. Sau khi nhận token, kích hoạt hàm gọi lại:

python Copy
# Trong bối cảnh Playwright/trình duyệt sau khi giải:
await page.evaluate(f"""() => {{
    document.getElementById('g-recaptcha-response').innerHTML = '{token}';
    // Kích hoạt hàm gọi lại liên kết
    if (typeof ___grecaptcha_cfg !== 'undefined') {{
        const clients = ___grecaptcha_cfg.clients;
        for (const key in clients) {{
            const client = clients[key];
            // Tìm và gọi hàm gọi lại
            if (client && client.L && client.L.L && client.L.L.callback) {{
                client.L.L.callback('{token}');
            }}
        }}
    }}
}}""")

Hướng dẫn xác định hàm gọi lại reCAPTCHA giải thích cách tìm hàm gọi lại chính xác cho bất kỳ trang nào.

Bước 4 — Sử dụng Chế độ Trình duyệt để Phát hiện và Giải tự động reCAPTCHA

Điều cần làm

Khi tác nhân LangChain điều khiển trình duyệt và gặp reCAPTCHA động, sử dụng solve_on_page() để phát hiện và điền token tự động:

python Copy
import asyncio
from capsolver_core import create_capsolver
from playwright.async_api import async_playwright

async def auto_solve_recaptcha(target_url: str):
    """Phát hiện và giải reCAPTCHA trên bất kỳ trang nào."""
    cap = create_capsolver(api_key="YOUR_CAPSOLVER_API_KEY")
    
    async with async_playwright() as p:
        browser = await p.chromium.launch(headless=True)
        page = await browser.new_page()
        await page.goto(target_url)
        await page.wait_for_load_state("networkidle")
        
        # Một cuộc gọi xử lý mọi thứ: phát hiện → giải → điền lại
        results = await cap.solve_on_page(page)
        
        for r in results:
            if r.solution:
                print(f"Đã giải {r.info.type}: token={r.solution.token[:50]}...")
                print(f"Token đã được điền vào trang: {r.filled}")
            else:
                print(f"Không thể giải {r.info.type}: {r.error}")
        
        # Sau khi giải, trang sẵn sàng - gửi biểu mẫu
        submit_button = page.locator('button[type="submit"]')
        if await submit_button.count() > 0:
            await submit_button.click()
            await page.wait_for_navigation()
            print(f"Biểu mẫu đã được gửi. URL hiện tại: {page.url}")
        
        await browser.close()
    await cap.aclose()

asyncio.run(auto_solve_recaptcha("https://example.com/login"))

Chế độ Trình duyệt đặc biệt mạnh mẽ vì nó đọc thông số reCAPTCHA trực tiếp từ DOM sống - không cần trích xuất khóa trang thủ công. SDK xác định loại CAPTCHA, đọc data-sitekey, giải và viết token lại vào trường g-recaptcha-response tự động.

Nhận 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à phát triển LangChain xây dựng các tác nhân xử lý các thách thức reCAPTCHA.

Bước 5 — Xây dựng Tác nhân LangChain Sản xuất với Xử lý reCAPTCHA

Điều cần làm

Kết hợp giải reCAPTCHA với các công cụ khác cho quy trình sản xuất hoàn chỉnh:

python Copy
import asyncio
from langchain_openai import ChatOpenAI
from langgraph.prebuilt import create_react_agent
from capsolver_agent.langchain import get_langchain_tools

async def production_agent():
    capsolver_tools = get_langchain_tools(api_key="YOUR_CAPSOLVER_API_KEY")
    llm = ChatOpenAI(model="gpt-4o", temperature=0)
    agent = create_react_agent(llm, tools=capsolver_tools)
    
    # Nhiệm vụ đa bước yêu cầu giải reCAPTCHA
    result = await agent.ainvoke({
        "messages": [("user",
            "Tôi cần truy cập tài nguyên được bảo vệ. "
            "Đầu tiên, giải reCAPTCHA v2 tại https://example.com/gate "
            "(khóa trang: 6LeIxAcTAAAAAJcZVRqyHh71UMIEGNQ_MXjiZKhI), "
            "sau đó cho tôi biết token để tôi có thể tiếp tục yêu cầu của mình."
        )]
    })
    
    return result["messages"][-1].content

asyncio.run(production_agent())

Đối với các tác nhân cần xử lý nhiều phiên bản reCAPTCHA trên các trang khác nhau, các công cụ giống nhau xử lý cả v2 và v3 - chỉ cần thay đổi tham số captcha_type từ reCaptchaV2 thành reCaptchaV3.

Trang sản phẩm CapSolver liệt kê tất cả các loại CAPTCHA được hỗ trợ và mức giá của chúng, giúp bạn ước tính chi phí cho triển khai tác nhân LangChain.

Kết luận

Giải reCAPTCHA trong LangChain yêu cầu gói capsolver-agent với phần mở rộng LangChain, cung cấp các triển khai BaseTool bản địa. Chế độ Token xử lý các khóa trang đã biết trong 5-12 giây mà không cần trình duyệt, trong khi chế độ Trình duyệt phát hiện và điền token reCAPTCHA trên bất kỳ trang nào. CapSolver cung cấp cơ sở hạ tầng giải AI, hỗ trợ cả biến thể hộp kiểm tra và không hiển thị của reCAPTCHA qua giao diện thống nhất.

Bắt đầu bằng cách xác định khóa trang trên trang đích của bạn, sau đó tích hợp get_langchain_tools() vào tác nhân ReAct của bạn. Vòng lặp suy luận của tác nhân tự nhiên quyết định khi gọi giải reCAPTCHA, làm cho việc xử lý xác minh trở thành một phần trong quy trình tự động hóa của bạn.

Câu hỏi Thường Gặp

Tỷ lệ thành công khi giải reCAPTCHA v2 với CapSolver là bao nhiêu?

CapSolver đạt tỷ lệ thành công 95-99% cho các thách thức reCAPTCHA v2. Dịch vụ giải AI xử lý cả biến thể hộp kiểm tra và không hiển thị. Các lần thất bại không bị tính phí, và phản hồi lỗi có cấu trúc cho phép tác nhân tự động thử lại.

Thời gian giải reCAPTCHA v2 là bao lâu?

Thời gian giải trung bình cho reCAPTCHA v2 là 5-12 giây. Điều này bao gồm thời gian mạng đến dịch vụ CapSolver và quá trình nhận dạng AI. Đối với các quy trình nhạy cảm với thời gian, SDK hỗ trợ thời gian chờ có thể cấu hình và khoảng thời gian kiểm tra.

Công cụ LangChain có thể xử lý reCAPTCHA Enterprise không?

Có. Truyền enterprise: true trong tham số khi gọi solve_captcha. reCAPTCHA Enterprise sử dụng cùng loại nhiệm vụ v2/v3 nhưng có thể yêu cầu các tham số bổ sung như token s. Dịch vụ CapSolver xử lý các biến thể Enterprise một cách mượt mà.

Bạn có cần trình duyệt để giải reCAPTCHA trong LangChain không?

Không. Chế độ Token hoạt động mà không cần trình duyệt — bạn cung cấp khóa trang và URL, và nhận lại một token. Chế độ Trình duyệt (yêu cầu Playwright) là tùy chọn và được sử dụng khi bạn muốn phát hiện và điền tự động trên các trang đang chạy. Hầu hết tích hợp LangChain sử dụng Chế độ Token để đơn giản và nhanh chóng.

Làm thế nào để xử lý hết hạn token reCAPTCHA?

Token reCAPTCHA hết hạn sau khoảng 120 giây. Yêu cầu token gần thời điểm gửi biểu mẫu nhất có thể. Nếu quy trình của bạn có độ trễ giữa việc giải và gửi, hãy triển khai mẫu "giải ngay trước khi gửi" thay vì giải sớm trong quy trình.

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

Giải CAPTCHA bằng TinyFish AgentQ
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.

ai
Logo of CapSolver

Nikolai Smirnov

05-Aug-2026

Cách giải CAPTCHA trong các tác nhân LlamaIndex
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.

ai
Logo of CapSolver

Anh Tuan

31-Jul-2026

Làm thế nào để giải CAPTCHA với dịch vụ CapSolver MCP
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.

ai
Logo of CapSolver

Anh Tuan

31-Jul-2026

Cách giải quyết reCAPTCHA v3 trong OpenAI Agents SDK
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.

ai
Logo of CapSolver

Anh Tuan

30-Jul-2026

Cách giải quyết Cloudflare Turnstile trong các tác nhân CrewAI
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.

ai
Logo of CapSolver

Anh Tuan

30-Jul-2026

Làm thế nào để giải CAPTCHA trong các tác nhân AI AutoGen bằng CapSolver
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.

ai
Logo of CapSolver

Anh Tuan

29-Jul-2026