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

Giải quyết Lỗi 403 Cấm Khi Truy Cập Website bằng Python
Giải quyết lỗi 403 Truy cập bị từ chối khi quét trang web bằng Python

Học cách vượt qua các lỗi 403 Forbidden khi quét trang web bằng Python. Hướng dẫn này bao gồm quay vòng IP, giả mạo user-agent, kiểm soát tần suất yêu cầu, xử lý xác thực và sử dụng trình duyệt không đầu để vượt qua các hạn chế truy cập và tiếp tục quét web thành công.

web scraping
Logo of CapSolver

Sora Fujimoto

13-Jan-2026

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

Học cách tích hợp CapSolver với Agno để giải các bài kiểm tra reCAPTCHA v2/v3, Cloudflare Turnstile và WAF trong các tác nhân AI tự động. Bao gồm các ví dụ Python thực tế cho việc quét web và tự động hóa.

web scraping
Logo of CapSolver

Anh Tuan

13-Jan-2026

Cách giải Captcha với Katana bằng CapSolver
Tích hợp Katana với CapSolver: Giải CAPTCHA tự động cho quét web

Học cách tích hợp Katana với Capsolver để giải tự động reCAPTCHA v2 và Cloudflare Turnstile trong quét không cần giao diện.

web scraping
Logo of CapSolver

Anh Tuan

12-Jan-2026

Hàng đầu các thư viện thu thập dữ liệu web Python 2026
Top Thư viện Thu thập dữ liệu web 2026

Khám phá các thư viện quét web Python tốt nhất năm 2026. So sánh tính năng, dễ sử dụng và hiệu suất cho nhu cầu trích xuất dữ liệu của bạn. Bao gồm các phân tích chuyên gia và Câu hỏi thường gặp.

web scraping
Logo of CapSolver

Anh Tuan

12-Jan-2026

Làm thế nào để giải Captcha với Crawlab bằng CapSolver
Tích hợp Crawlab với CapSolver: Giải CAPTCHA tự động cho việc quét dữ liệu phân tán

Học cách tích hợp CapSolver với Crawlab để giải quyết reCAPTCHA và Cloudflare Turnstile ở quy mô lớn.

web scraping
Logo of CapSolver

Anh Tuan

09-Jan-2026

Các công cụ quét AI tốt nhất bạn phải biết vào năm 2026
Những Công Cụ Gỡ Dữ Liệu Trí Tuệ Nhân Tạo Tốt Nhất Bạn Phải Biết Năm 2026

Khám phá các lựa chọn công cụ quét AI tốt nhất năm 2026. Chúng tôi so sánh các công cụ quét web AI hàng đầu, bao gồm Bright Data, Crawl4AI và Browse AI, với giá cả cụ thể để giúp bạn thành thạo việc trích xuất dữ liệu tự động và giải quyết các thách thức bảo mật.

web scraping
Logo of CapSolver

Aloísio Vítor

07-Jan-2026