CAPSOLVER
Blog
Làm thế nào để giải Captcha trong Agno với tích hợp CapSolver

Cách giải Captcha trong Agno với tích hợp CapSolver

Logo of CapSolver

Anh Tuan

Data Science Expert

13-Jan-2026

Agno với tích hợp CapSolver

Khi tự động hóa dựa trên AI trở nên thực tế hơn trong các quy trình thực tế, Agno đã xuất hiện như một khung phần mềm nhanh và lấy quyền riêng tư làm trọng tâm để xây dựng các hệ thống đa tác nhân tự động. Khi các tác nhân này tương tác với các trang web thông qua việc quét, thu thập dữ liệu hoặc lướt web tự động, CAPTCHA thường trở thành một vấn đề.

CapSolver giúp giải quyết vấn đề này bằng cách cho phép các tác nhân Agno xử lý trang web được bảo vệ bởi CAPTCHA một cách đáng tin cậy mà không làm gián đoạn quy trình tự động hóa. Cùng nhau, Agno và CapSolver giúp xây dựng tự động hóa quy mô lớn, không cần can thiệp thủ công, hoạt động trên các trang web thực tế.


Agno là gì?

Agno là một khung phần mềm đa tác nhân mã nguồn mở và môi trường chạy để xây dựng các hệ thống AI chạy hoàn toàn trong cơ sở hạ tầng của bạn. Nó được thiết kế với hiệu suất và quyền riêng tư làm trọng tâm—không có máy chủ điều khiển bên ngoài và không có dữ liệu rời khỏi môi trường của bạn.

Tính năng chính của Agno

  • Hiệu suất cao: Nhanh hơn và hiệu quả bộ nhớ hơn nhiều so với nhiều khung phần mềm tác nhân
  • Lấy quyền riêng tư làm trọng tâm: Hoàn toàn tự lưu trữ, với kiểm soát hoàn toàn về dữ liệu và thực thi
  • Hệ thống tác nhân đa dạng: Các tác nhân có thể hợp tác, chuyên môn hóa và phối hợp nhiệm vụ
  • Tính linh hoạt về mô hình: Hỗ trợ OpenAI, Anthropic, Google và nhiều nhà cung cấp khác
  • Môi trường chạy sẵn sàng cho sản xuất: Bao gồm môi trường chạy dựa trên FastAPI để triển khai các tác nhân
  • Công cụ phong phú: Các công cụ tích hợp cho tự động hóa web, API, cơ sở dữ liệu và nhiều hơn nữa
  • Bộ nhớ bền vững: Các tác nhân có thể duy trì ngữ cảnh qua các phiên với RAG tác nhân và 20+ kho vector

Kiến trúc cốt lõi

Thành phần Mô tả
Tác nhân Các đơn vị AI tự động với bộ nhớ, công cụ và tích hợp mô hình
Nhóm Nhóm các tác nhân hợp tác trên các nhiệm vụ phức tạp
Quy trình làm việc Các ống dẫn được cấu trúc cho việc thực thi có tính dự đoán
AgentOS Môi trường chạy FastAPI cho triển khai sản xuất

CapSolver là gì?

CapSolver là dịch vụ giải CAPTCHA hàng đầu cung cấp các giải pháp dựa trên AI để vượt qua các thách thức CAPTCHA khác nhau. Với hỗ trợ cho nhiều loại CAPTCHA và thời gian phản hồi nhanh như chớp, CapSolver tích hợp liền mạch vào các quy trình tự động hóa.

Các loại CAPTCHA được hỗ trợ


Tại sao tích hợp CapSolver với Agno?

Khi xây dựng các tác nhân Agno tương tác với các trang web—dù là để thu thập dữ liệu, kiểm thử tự động hoặc tổng hợp nội dung—các thách thức CAPTCHA trở thành rào cản đáng kể. Để hiểu sâu hơn về cách giải CAPTCHA trong môi trường trình duyệt tự động, hãy xem hướng dẫn của chúng tôi về cách giải CAPTCHA trong Puppeteer. Dưới đây là lý do tại sao tích hợp này quan trọng:

  1. Quy trình làm việc của tác nhân không gián đoạn: Các tác nhân có thể hoàn thành nhiệm vụ của họ mà không cần can thiệp thủ công. Để tìm thêm giải pháp về CAPTCHA trong quét web, tham khảo bài viết của chúng tôi: Cách tốt nhất để giải CAPTCHA khi quét web.
  2. Bảo vệ quyền riêng tư: Cả Agno và CapSolver cho phép bạn duy trì kiểm soát dữ liệu của mình
  3. Tự động hóa quy mô lớn: Xử lý nhiều thách thức CAPTCHA trên các hoạt động tác nhân song song
  4. Chi phí hiệu quả: Chỉ trả tiền cho các CAPTCHA được giải thành công
  5. Tỷ lệ thành công cao: Độ chính xác hàng đầu trong tất cả các loại CAPTCHA được hỗ trợ.

Cài đặt

Đầu tiên, cài đặt các gói cần thiết:

bash Copy
pip install agno
pip install requests

Agno là không phụ thuộc vào mô hình với hỗ trợ tích hợp cho 23+ nhà cung cấp LLM:

python Copy
# OpenAI
from agno.models.openai import OpenAIChat

# Anthropic Claude
from agno.models.anthropic import Claude

# Google Gemini
from agno.models.google import Gemini

# Và nhiều hơn nữa...

Tạo Công cụ CapSolver Tùy chỉnh cho Agno

Agno cho phép bạn tạo các công cụ tùy chỉnh mà các tác nhân có thể sử dụng để hoàn thành nhiệm vụ của họ. Dưới đây là cách tạo một công cụ CapSolver để xử lý các thách thức CAPTCHA:

Triển khai Cơ bản Công cụ CapSolver

python Copy
import requests
import time
from agno.tools import tool

CAPSOLVER_API_KEY = "YOUR_CAPSOLVER_API_KEY"


@tool
def solve_captcha(
    website_url: str,
    website_key: str,
    captcha_type: str = "ReCaptchaV2TaskProxyLess"
) -> str:
    """
    Giải các thách thức CAPTCHA bằng API CapSolver.

    Args:
        website_url: URL của trang web có CAPTCHA
        website_key: Khóa trang của CAPTCHA
        captcha_type: Loại CAPTCHA (ReCaptchaV2TaskProxyLess, ReCaptchaV3TaskProxyLess, AntiTurnstileTaskProxyLess)

    Returns:
        Token giải CAPTCHA
    """
    # Tạo nhiệm vụ
    payload = {
        "clientKey": CAPSOLVER_API_KEY,
        "task": {
            "type": captcha_type,
            "websiteURL": website_url,
            "websiteKey": website_key
        }
    }

    response = requests.post("https://api.capsolver.com/createTask", json=payload)
    result = response.json()

    if result.get("errorId") != 0:
        return f"Lỗi tạo nhiệm vụ: {result.get('errorDescription')}"

    task_id = result.get("taskId")

    # Kiểm tra kết quả
    for _ in range(60):
        time.sleep(2)

        result = requests.post(
            "https://api.capsolver.com/getTaskResult",
            json={"clientKey": CAPSOLVER_API_KEY, "taskId": task_id}
        ).json()

        if result.get("status") == "ready":
            solution = result.get("solution", {})
            return solution.get("gRecaptchaResponse") or solution.get("token")
        elif result.get("status") == "failed":
            return f"Nhiệm vụ thất bại: {result.get('errorDescription')}"

    return "Đợi giải CAPTCHA hết thời gian"

Giải Các Loại CAPTCHA Khác Nhau

Người giải reCAPTCHA v2

python Copy
import requests
import time
from agno.tools import tool

CAPSOLVER_API_KEY = "YOUR_CAPSOLVER_API_KEY"


@tool
def solve_recaptcha_v2(website_url: str, website_key: str) -> str:
    """
    Giải các thách thức reCAPTCHA v2 bằng CapSolver.

    Args:
        website_url: URL của trang web có reCAPTCHA v2
        website_key: Khóa trang (thuộc tính data-sitekey)

    Returns:
        Token g-recaptcha-response
    """
    payload = {
        "clientKey": CAPSOLVER_API_KEY,
        "task": {
            "type": "ReCaptchaV2TaskProxyLess",
            "websiteURL": website_url,
            "websiteKey": website_key
        }
    }

    # Tạo nhiệm vụ
    response = requests.post("https://api.capsolver.com/createTask", json=payload)
    result = response.json()

    if result.get("errorId") != 0:
        return f"Lỗi: {result.get('errorDescription')}"

    task_id = result.get("taskId")

    # Kiểm tra kết quả
    for attempt in range(60):
        time.sleep(2)
        result = requests.post(
            "https://api.capsolver.com/getTaskResult",
            json={"clientKey": CAPSOLVER_API_KEY, "taskId": task_id}
        ).json()

        if result.get("status") == "ready":
            return result["solution"]["gRecaptchaResponse"]
        if result.get("status") == "failed":
            return f"Thất bại: {result.get('errorDescription')}"

    return "Đợi giải pháp hết thời gian"

Người giải reCAPTCHA v3

python Copy
import requests
import time
from agno.tools import tool

CAPSOLVER_API_KEY = "YOUR_CAPSOLVER_API_KEY"


@tool
def solve_recaptcha_v3(
    website_url: str,
    website_key: str,
    page_action: str = "submit",
    min_score: float = 0.7
) -> str:
    """
    Giải các thách thức reCAPTCHA v3 với xác minh dựa trên điểm số.

    Args:
        website_url: URL của trang web có reCAPTCHA v3
        website_key: Khóa trang của reCAPTCHA
        page_action: Tham số hành động cho reCAPTCHA v3
        min_score: Điểm số tối thiểu yêu cầu (0.1 đến 0.9)

    Returns:
        Token g-recaptcha-response
    """
    payload = {
        "clientKey": CAPSOLVER_API_KEY,
        "task": {
            "type": "ReCaptchaV3TaskProxyLess",
            "websiteURL": website_url,
            "websiteKey": website_key,
            "pageAction": page_action,
            "minScore": min_score
        }
    }

    # Tạo nhiệm vụ
    response = requests.post("https://api.capsolver.com/createTask", json=payload)
    result = response.json()

    if result.get("errorId") != 0:
        return f"Lỗi: {result.get('errorDescription')}"

    task_id = result.get("taskId")

    # Kiểm tra kết quả
    for attempt in range(60):
        time.sleep(2)
        result = requests.post(
            "https://api.capsolver.com/getTaskResult",
            json={"clientKey": CAPSOLVER_API_KEY, "taskId": task_id}
        ).json()

        if result.get("status") == "ready":
            return result["solution"]["gRecaptchaResponse"]
        if result.get("status") == "failed":
            return f"Thất bại: {result.get('errorDescription')}"

    return "Đợi giải pháp hết thời gian"

Người giải Cloudflare Turnstile

python Copy
import requests
import time
from agno.tools import tool

CAPSOLVER_API_KEY = "YOUR_CAPSOLVER_API_KEY"


@tool
def solve_turnstile(website_url: str, website_key: str) -> str:
    """
    Giải các thách thức Cloudflare Turnstile.

    Args:
        website_url: URL của trang web có Turnstile
        website_key: Khóa trang của widget Turnstile

    Returns:
        Token Turnstile
    """
    payload = {
        "clientKey": CAPSOLVER_API_KEY,
        "task": {
            "type": "AntiTurnstileTaskProxyLess",
            "websiteURL": website_url,
            "websiteKey": website_key
        }
    }

    # Tạo nhiệm vụ
    response = requests.post("https://api.capsolver.com/createTask", json=payload)
    result = response.json()

    if result.get("errorId") != 0:
        return f"Lỗi: {result.get('errorDescription')}"

    task_id = result.get("taskId")

    # Kiểm tra kết quả
    for attempt in range(60):
        time.sleep(2)
        result = requests.post(
            "https://api.capsolver.com/getTaskResult",
            json={"clientKey": CAPSOLVER_API_KEY, "taskId": task_id}
        ).json()

        if result.get("status") == "ready":
            return result["solution"]["token"]
        if result.get("status") == "failed":
            return f"Thất bại: {result.get('errorDescription')}"

    return "Đợi giải pháp hết thời gian"

Người giải Thách thức Cloudflare (5 giây)

python Copy
import requests
import time
from agno.tools import tool

CAPSOLVER_API_KEY = "YOUR_CAPSOLVER_API_KEY"


@tool
def solve_cloudflare_challenge(website_url: str, proxy: str) -> dict:
    """
    Giải các trang bảo vệ Cloudflare 5 giây.

    Args:
        website_url: URL của trang được bảo vệ
        proxy: Proxy theo định dạng: http://user:pass@ip:port

    Returns:
        Từ điển chứa cookie và user_agent để truy cập trang được bảo vệ
    """
    payload = {
        "clientKey": CAPSOLVER_API_KEY,
        "task": {
            "type": "AntiCloudflareTask",
            "websiteURL": website_url,
            "proxy": proxy
        }
    }

    # Tạo nhiệm vụ
    response = requests.post("https://api.capsolver.com/createTask", json=payload)
    result = response.json()

    if result.get("errorId") != 0:
        return {"error": result.get('errorDescription')}

    task_id = result.get("taskId")

    # Kiểm tra kết quả
    for attempt in range(60):
        time.sleep(3)
        result = requests.post(
            "https://api.capsolver.com/getTaskResult",
            json={"clientKey": CAPSOLVER_API_KEY, "taskId": task_id}
        ).json()

        if result.get("status") == "ready":
            return {
                "cookies": result["solution"]["cookies"],
                "user_agent": result["solution"]["userAgent"]
            }
        if result.get("status") == "failed":
            return {"error": result.get('errorDescription')}

    return {"error": "Đợi giải pháp hết thời gian"}

Ví dụ Hoàn chỉnh về Tác nhân Agno

Dưới đây là một ví dụ hoàn chỉnh về tác nhân Agno sử dụng CapSolver để xử lý các thách thức CAPTCHA:

python Copy
import os
import requests
import time
from agno.agent import Agent
from agno.models.openai import OpenAIChat
from agno.tools import tool

# Cấu hình
CAPSOLVER_API_KEY = "YOUR_CAPSOLVER_API_KEY"
os.environ["OPENAI_API_KEY"] = "YOUR_OPENAI_API_KEY"


@tool
def solve_recaptcha_v2(website_url: str, website_key: str) -> str:
    """
    Giải các thách thức reCAPTCHA v2 bằng CapSolver.

    Args:
        website_url: URL của trang web có reCAPTCHA v2
        website_key: Khóa trang (thuộc tính data-sitekey)

    Returns:
        Token g-recaptcha-response hoặc thông báo lỗi
    """
    payload = {
        "clientKey": CAPSOLVER_API_KEY,
        "task": {
            "type": "ReCaptchaV2TaskProxyLess",
            "websiteURL": website_url,
            "websiteKey": website_key
        }
    }

    response = requests.post("https://api.capsolver.com/createTask", json=payload)
    result = response.json()

    if result.get("errorId") != 0:
        return f"Lỗi: {result.get('errorDescription')}"

    task_id = result.get("taskId")

    for _ in range(60):
        time.sleep(2)
        result = requests.post(
            "https://api.capsolver.com/getTaskResult",
            json={"clientKey": CAPSOLVER_API_KEY, "taskId": task_id}
        ).json()

        if result.get("status") == "ready":
            return result["solution"]["gRecaptchaResponse"]
        if result.get("status") == "failed":
            return f"Thất bại: {result.get('errorDescription')}"

    return "Hết thời gian chờ giải pháp"


@tool
def solve_turnstile(website_url: str, website_key: str) -> str:
    """
    Giải các thách thức Cloudflare Turnstile.

    Args:
        website_url: URL của trang web có Turnstile
        website_key: Khóa trang của widget Turnstile

    Returns:
        Token Turnstile hoặc thông báo lỗi
    """
    payload = {
        "clientKey": CAPSOLVER_API_KEY,
        "task": {
            "type": "AntiTurnstileTaskProxyLess",
            "websiteURL": website_url,
            "websiteKey": website_key
        }
    }

    response = requests.post("https://api.capsolver.com/createTask", json=payload)
    result = response.json()

    if result.get("errorId") != 0:
        return f"Lỗi: {result.get('errorDescription')}"

    task_id = result.get("taskId")

    for _ in range(60):
        time.sleep(2)
        result = requests.post(
            "https://api.capsolver.com/getTaskResult",
            json={"clientKey": CAPSOLVER_API_KEY, "taskId": task_id}
        ).json()

        if result.get("status") == "ready":
            return result["solution"]["token"]
        if result.get("status") == "failed":
            return f"Thất bại: {result.get('errorDescription')}"

    return "Hết thời gian chờ giải pháp"
"https://api.capsolver.com/getTaskResult",
            json={"clientKey": CAPSOLVER_API_KEY, "taskId": task_id}
        ).json()

        if result.get("status") == "ready":
            return result["solution"]["token"]
        if result.get("status") == "failed":
            return f"Thất bại: {result.get('errorDescription')}"

    return "Hết thời gian"

@tool
def check_capsolver_balance() -> str:
    """
    Kiểm tra số dư tài khoản CapSolver hiện tại.

    Trả về:
        Thông tin số dư hiện tại
    """
    response = requests.post(
        "https://api.capsolver.com/getBalance",
        json={"clientKey": CAPSOLVER_API_KEY}
    )
    result = response.json()

    if result.get("errorId") != 0:
        return f"Lỗi: {result.get('errorDescription')}"

    return f"Số dư: ${result.get('balance', 0):.4f}"


# Tạo Agent Dò tìm Trang Web
web_scraper_agent = Agent(
    name="Agent Dò tìm Trang Web",
    model=OpenAIChat(id="gpt-4o"),
    tools=[solve_recaptcha_v2, solve_turnstile, check_capsolver_balance],
    description="Chuyên gia dò tìm trang web có khả năng xử lý CAPTCHA tự động",
    instructions=[
        "Bạn là chuyên gia dò tìm trang web với khả năng xử lý CAPTCHA.",
        "Khi gặp CAPTCHA, xác định loại và sử dụng bộ giải thích hợp.",
        "Đối với reCAPTCHA v2, sử dụng solve_recaptcha_v2 với URL và site key.",
        "Đối với Turnstile, sử dụng solve_turnstile với URL và site key.",
        "Luôn kiểm tra số dư trước khi bắt đầu các công việc dò tìm lớn."
    ],
    markdown=True
)


def main():
    print("=" * 60)
    print("Demo Tích hợp Agno + CapSolver")
    print("=" * 60)

    # Nhiệm vụ: Giải quyết thách thức CAPTCHA
    task = """
    Tôi cần bạn giải quyết thách thức CAPTCHA reCAPTCHA v2.

    URL Trang web: https://www.google.com/recaptcha/api2/demo
    Site Key: 6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-

    Vui lòng giải CAPTCHA này và báo cáo 50 ký tự đầu tiên của token.
    Đồng thời kiểm tra số dư CapSolver của tôi trước khi bắt đầu.
    """

    response = web_scraper_agent.run(task)
    print("\nPhản hồi của Agent:")
    print(response.content)


if __name__ == "__main__":
    main()

Sử dụng Teams Agno với CapSolver

Agno hỗ trợ các nhóm tác nhân đa dạng. Dưới đây là cách tạo một nhóm với các tác nhân chuyên giải CAPTCHA:

python Copy
from agno.agent import Agent
from agno.team import Team
from agno.models.openai import OpenAIChat
from agno.tools import tool
import requests
import time

CAPSOLVER_API_KEY = "YOUR_CAPSOLVER_API_KEY"


@tool
def solve_any_captcha(
    website_url: str,
    website_key: str,
    captcha_type: str = "ReCaptchaV2TaskProxyLess"
) -> str:
    """Bộ giải CAPTCHA toàn diện hỗ trợ nhiều loại."""
    payload = {
        "clientKey": CAPSOLVER_API_KEY,
        "task": {
            "type": captcha_type,
            "websiteURL": website_url,
            "websiteKey": website_key
        }
    }

    response = requests.post("https://api.capsolver.com/createTask", json=payload)
    result = response.json()

    if result.get("errorId") != 0:
        return f"Lỗi: {result.get('errorDescription')}"

    task_id = result.get("taskId")

    for _ in range(60):
        time.sleep(2)
        result = requests.post(
            "https://api.capsolver.com/getTaskResult",
            json={"clientKey": CAPSOLVER_API_KEY, "taskId": task_id}
        ).json()

        if result.get("status") == "ready":
            solution = result.get("solution", {})
            return solution.get("gRecaptchaResponse") or solution.get("token")
        if result.get("status") == "failed":
            return f"Thất bại: {result.get('errorDescription')}"

    return "Hết thời gian"


# Tác nhân Chuyên gia CAPTCHA
captcha_agent = Agent(
    name="Tác nhân Chuyên gia CAPTCHA",
    model=OpenAIChat(id="gpt-4o"),
    tools=[solve_any_captcha],
    description="Chuyên gia nhận diện và giải CAPTCHA các loại",
    instructions=[
        "Nhận diện loại CAPTCHA từ phân tích trang",
        "Sử dụng bộ giải thích hợp với tham số đúng",
        "Báo cáo thành công hoặc thất bại một cách rõ ràng"
    ]
)

# Tác nhân Trích xuất Dữ liệu
data_agent = Agent(
    name="Tác nhân Trích xuất Dữ liệu",
    model=OpenAIChat(id="gpt-4o"),
    description="Trích xuất và xử lý dữ liệu từ trang web",
    instructions=[
        "Trích xuất dữ liệu có cấu trúc từ nội dung HTML",
        "Yêu cầu giải CAPTCHA khi cần",
        "Xác minh và làm sạch dữ liệu trích xuất"
    ]
)

# Tạo nhóm
scraping_team = Team(
    name="Nhóm Dò tìm Trang Web",
    agents=[captcha_agent, data_agent],
    description="Nhóm chuyên về dò tìm trang web với xử lý CAPTCHA"
)

Cách Gửi Token CAPTCHA

Mỗi loại CAPTCHA yêu cầu phương pháp gửi khác nhau:

reCAPTCHA v2/v3 - Chèn Token

python Copy
from selenium import webdriver
from selenium.webdriver.common.by import By

def submit_recaptcha_token(driver, token: str):
    """Chèn token reCAPTCHA và gửi"""
    recaptcha_response = driver.find_element(By.ID, "g-recaptcha-response")
    driver.execute_script("arguments[0].style.display = 'block';", recaptcha_response)
    recaptcha_response.clear()
    recaptcha_response.send_keys(token)

    form = driver.find_element(By.TAG_NAME, "form")
    form.submit()

Turnstile - Chèn Token

python Copy
def submit_turnstile_token(driver, token: str):
    """Chèn token Turnstile và gửi"""
    turnstile_input = driver.find_element(By.NAME, "cf-turnstile-response")
    driver.execute_script("arguments[0].value = arguments[1];", turnstile_input, token)

    form = driver.find_element(By.TAG_NAME, "form")
    form.submit()
python Copy
import requests

def access_cloudflare_protected_page(url: str, cf_solution: dict):
    """Sử dụng giải pháp Cloudflare Challenge để truy cập trang bị bảo vệ."""
    session = requests.Session()

    for cookie in cf_solution["cookies"]:
        session.cookies.set(cookie["name"], cookie["value"])

    headers = {"User-Agent": cf_solution["user_agent"]}

    response = session.get(url, headers=headers)
    return response.text

Nguyên Tắc Tốt

1. Xử lý Lỗi với Thử lại Tự động

python Copy
from agno.tools import tool
import time

@tool
def solve_with_retry(
    website_url: str,
    website_key: str,
    max_retries: int = 3
) -> str:
    """Giải CAPTCHA với thử lại tự động khi thất bại."""
    for attempt in range(max_retries):
        try:
            result = solve_recaptcha_v2(website_url, website_key)
            if not result.startswith("Lỗi") and not result.startswith("Thất bại"):
                return result
        except Exception as e:
            if attempt == max_retries - 1:
                return f"Tất cả các lần thử đều thất bại: {str(e)}"
        time.sleep(2 ** attempt)  # Backoff theo cấp số nhân

    return "Quá số lần thử tối đa"

2. Quản lý Số dư

python Copy
@tool
def check_balance() -> float:
    """Kiểm tra số dư tài khoản CapSolver."""
    response = requests.post(
        "https://api.capsolver.com/getBalance",
        json={"clientKey": CAPSOLVER_API_KEY}
    )
    return response.json().get("balance", 0)

3. Hỗ trợ Async

Agno hỗ trợ các hoạt động async để cải thiện hiệu suất:

python Copy
import asyncio
import aiohttp
from agno.tools import tool

@tool
async def solve_captcha_async(website_url: str, website_key: str) -> str:
    """Bộ giải CAPTCHA async để cải thiện khả năng đồng thời."""
    async with aiohttp.ClientSession() as session:
        payload = {
            "clientKey": CAPSOLVER_API_KEY,
            "task": {
                "type": "ReCaptchaV2TaskProxyLess",
                "websiteURL": website_url,
                "websiteKey": website_key
            }
        }

        async with session.post(
            "https://api.capsolver.com/createTask",
            json=payload
        ) as response:
            result = await response.json()

        if result.get("errorId") != 0:
            return f"Lỗi: {result.get('errorDescription')}"

        task_id = result.get("taskId")

        for _ in range(60):
            await asyncio.sleep(2)

            async with session.post(
                "https://api.capsolver.com/getTaskResult",
                json={"clientKey": CAPSOLVER_API_KEY, "taskId": task_id}
            ) as response:
                result = await response.json()

            if result.get("status") == "ready":
                solution = result.get("solution", {})
                return solution.get("gRecaptchaResponse") or solution.get("token")
            if result.get("status") == "failed":
                return f"Thất bại: {result.get('errorDescription')}"

        return "Hết thời gian"

Kết luận

Việc tích hợp CapSolver với Agno mở ra tiềm năng đầy đủ của các tác nhân AI tự động cho các nhiệm vụ dựa trên web. Bằng cách kết hợp khả năng điều phối đa tác nhân nhanh chóng, bảo mật cao của Agno với khả năng giải CAPTCHA hàng đầu của CapSolver, các nhà phát triển có thể xây dựng các giải pháp tự động đáng tin cậy có thể xử lý các cơ chế bảo vệ web phức tạp nhất.

Dù bạn đang xây dựng các quy trình trích xuất dữ liệu, khung kiểm tra tự động hay các tác nhân web thông minh, sự kết hợp giữa Agno và CapSolver cung cấp tốc độ, độ tin cậy và khả năng mở rộng cần thiết cho môi trường sản xuất.


Sẵn sàng bắt đầu chưa? Đăng ký CapSolver và sử dụng mã khuyến mãi AGNO để nhận thêm 6% khuyến mãi cho lần nạp đầu tiên!


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

Agno là gì?

Agno là khung đa tác nhân, môi trường chạy và bảng điều khiển để xây dựng sản phẩm AI. Nó nhanh hơn 529 lần so với LangGraph với mức sử dụng bộ nhớ thấp hơn 24 lần, và chạy hoàn toàn trên cơ sở hạ tầng của bạn để đảm bảo quyền riêng tư tối đa.

Cách CapSolver tích hợp với Agno?

CapSolver tích hợp với Agno thông qua các công cụ tùy chỉnh được đánh dấu bằng @tool. Bạn tạo các hàm bao quanh API của CapSolver, cho phép các tác nhân AI của bạn tự động giải CAPTCHA khi gặp phải trong quá trình hoạt động web.

Những loại CAPTCHA nào CapSolver có thể giải?

CapSolver hỗ trợ nhiều loại CAPTCHA như reCAPTCHA v2, reCAPTCHA v3, Cloudflare Turnstile, Cloudflare Challenge, AWS WAF, GeeTest và nhiều loại khác.

Giá của CapSolver là bao nhiêu?

CapSolver cung cấp giá cả cạnh tranh dựa trên loại và khối lượng CAPTCHA được giải. Truy cập capsolver.com để xem chi tiết giá cả hiện tại. Sử dụng mã AGNO để nhận 5% khuyến mãi cho lần nạp đầu tiên.

Tôi có thể sử dụng Agno với các nhà cung cấp LLM khác không?

Có! Agno không phụ thuộc vào mô hình và hỗ trợ 50+ nhà cung cấp mô hình như OpenAI, Anthropic Claude, Google Gemini, Groq và nhiều nhà cung cấp khác.

Agno có miễn phí không?

Có, Agno là mã nguồn mở và được phát hành dưới giấy phép MIT. Khung phần mềm miễn phí để sử dụng, tuy nhiên bạn có thể phát sinh chi phí cho các cuộc gọi API LLM và dịch vụ giải CAPTCHA như CapSolver.

Làm thế nào để tìm key site CAPTCHA?

Key site thường được tìm thấy trong mã nguồn HTML của trang. Tìm kiếm:

  • reCAPTCHA: thuộc tính data-sitekey hoặc gọi grecaptcha.render()
  • Turnstile: thuộc tính data-sitekey trong widget Turnstile

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

AI Tính liên quan với CapSolver
Cách giải reCAPTCHA v2 trong Relevance AI với tích hợp CapSolver

Xây dựng một công cụ AI của Relevance để giải quyết reCAPTCHA v2 bằng CapSolver. Tự động hóa việc gửi biểu mẫu qua API mà không cần tự động hóa trình duyệt.

web scraping
Logo of CapSolver

Anh Tuan

03-Feb-2026

Công cụ Ghi Dữ Liệu Nhanh: Cách Nhanh Chóng Trích Xuất Dữ Liệu Từ Web Không Cần Mã
Công cụ Ghi dữ liệu Nhanh: Cách nhanh chóng trích xuất dữ liệu web mà không cần code

Khám phá các công cụ trích xuất dữ liệu tức thì tốt nhất cho năm 2026. Học các cách nhanh chóng để trích xuất dữ liệu từ web mà không cần mã nguồn bằng cách sử dụng các tiện ích mở rộng hàng đầu và API để trích xuất tự động.

web scraping
Logo of CapSolver

Nikolai Smirnov

28-Jan-2026

Trích xuất dữ liệu từ web bài báo tin tức
Thu thập dữ liệu từ web các bài báo tin tức bằng Python (Hướng dẫn 2026)

Nắm vững trích xuất dữ liệu từ web bài báo tin tức bằng Python vào năm 2026. Học cách giải reCAPTCHA v2/v3 bằng CapSolver và xây dựng các pipeline dữ liệu có thể mở rộng.

web scraping
Logo of CapSolver

Anh Tuan

28-Jan-2026

Chặn IP vào năm 2026: Cách chúng hoạt động và các cách thực tế để lách lệnh cấm
Cấm IP vào năm 2026: Cách chúng hoạt động và các cách thực tế để vượt qua chúng

Học cách lách chặn IP vào năm 2026 với hướng dẫn toàn diện của chúng tôi. Khám phá các kỹ thuật chặn IP hiện đại và giải pháp thực tế như proxy nhà ở và trình giải CAPTCHA.

web scraping
Logo of CapSolver

Aloísio Vítor

26-Jan-2026

Maxun với tích hợp CapSolver
Cách giải Captcha trong Maxun với tích hợp CapSolver

Một hướng dẫn thực tế về việc tích hợp CapSolver với Maxun cho quét web thực tế. Học cách xử lý reCAPTCHA, Cloudflare Turnstile và các trang web được bảo vệ bằng CAPTCHA bằng cách sử dụng quy trình xác thực trước và luồng công việc robot.

web scraping
Logo of CapSolver

Anh Tuan

21-Jan-2026

Browser4 với Tích hợp CapSolver
Cách giải Captcha trong Browser4 với tích hợp CapSolver

Tự động hóa Browser4 tỷ lệ xử lý cao kết hợp với CapSolver để xử lý các thách thức CAPTCHA trong việc trích xuất dữ liệu web quy mô lớn.

web scraping
Logo of CapSolver

Anh Tuan

21-Jan-2026