CAPSOLVER
Blog
Làm thế nào để giải CAPTCHA với TinyFish AgentQL – Hướng dẫn từng bước sử dụng CapSolver

Cách giải CAPTCHA với TinyFish AgentQL – Hướng dẫn từng bước sử dụng CapSolver

Logo of CapSolver

Nikolai Smirnov

Software Development Lead

05-Aug-2026

Khi tự động hóa web được hỗ trợ bởi AI của bạn gặp phải bức tường CAPTCHA, toàn bộ quy trình sẽ bị đình trệ. Các trang web không thể tải, các biểu mẫu không thể gửi, và việc trích xuất dữ liệu sẽ dừng lại — tất cả đều do một bài kiểm tra được thiết kế để chặn bot. TinyFish AgentQL là bộ công cụ mạnh mẽ để kết nối AI với web, bao gồm các truy vấn ngôn ngữ tự nhiên, tích hợp Playwright, và trích xuất dữ liệu có cấu trúc ở quy mô doanh nghiệp. Tuy nhiên, giống như bất kỳ khung tự động hóa trình duyệt nào khác, nó cũng bị mắc kẹt bởi CAPTCHA.

CapSolver thay đổi hoàn toàn điều này. Bằng cách tải tiện ích mở rộng CapSolver Chrome vào ngữ cảnh trình duyệt được cung cấp bởi Playwright của AgentQL, CAPTCHA sẽ được giải quyết tự động và không nhìn thấy được ở nền. Không cần giải quyết thủ công. Không cần điều phối API phức tạp từ phía bạn. Các kịch bản tự động hóa của bạn sẽ tiếp tục chạy như thể không có CAPTCHA.

Điều tốt nhất? Các truy vấn và kịch bản AgentQL của bạn không cần bất kỳ dòng mã nào liên quan đến CAPTCHA. Tiện ích mở rộng xử lý toàn bộ quá trình phát hiện, giải quyết và chèn token mà không cần sự can thiệp của bạn, trong khi trợ lý của bạn tập trung vào việc trích xuất dữ liệu và tự động hóa quy trình.

TinyFish AgentQL là gì?

TinyFish AgentQL là bộ công cụ cấp doanh nghiệp để kết nối các trợ lý AI và LLM với môi trường web trực tiếp. Được phát triển bởi TinyFish, nó cung cấp ngôn ngữ truy vấn được hỗ trợ bởi AI cho phép bạn tìm các phần tử trang và trích xuất dữ liệu có cấu trúc bằng ngôn ngữ tự nhiên — không cần các lựa chọn CSS hoặc XPaths mong manh.

Tính năng chính

  • Ngôn ngữ truy vấn được hỗ trợ bởi AI: Tìm các phần tử một cách trực quan dựa trên nội dung trang. Các truy vấn tự phục hồi khi giao diện thay đổi theo thời gian.
  • Tích hợp Playwright: Các SDK Python và JavaScript tích hợp liền mạch với Playwright để tự động hóa trình duyệt nâng cao.
  • Trích xuất dữ liệu có cấu trúc: Xác định hình dạng đầu ra và nhận dữ liệu sạch, có cấu trúc từ bất kỳ trang nào — công khai hoặc riêng tư, tĩnh hoặc động.
  • API REST: Thực hiện truy vấn mà không cần SDK thông qua điểm cuối REST.
  • Trình gỡ lỗi trình duyệt: Tiện ích mở rộng Chrome để kiểm tra và tinh chỉnh truy vấn theo thời gian thực.
  • Khả năng chịu đựng đa trang: Hoạt động trên các trang web tương tự mà không cần thay đổi, thích ứng động với các thay đổi trên trang.
  • Quy mô doanh nghiệp: Được xây dựng cho các khối lượng công việc có lưu lượng cao, chạy hàng trăm tác vụ song song.

AgentQL hoạt động trên bất kỳ trang nào — bao gồm nội dung được xác thực và các trang được tạo động — làm cho nó lý tưởng cho tự động hóa web quy mô lớn, thu thập dữ liệu và quy trình trợ lý AI.

CapSolver là gì?

CapSolver là dịch vụ giải CAPTCHA được hỗ trợ bởi AI hàng đầu, tự động giải các thách thức CAPTCHA đa dạng. Với thời gian phản hồi nhanh và khả năng tương thích rộng, CapSolver tích hợp liền mạch vào các quy trình tự động hóa.

Loại CAPTCHA được hỗ trợ

  • reCAPTCHA v2 (hộp kiểm và ẩn)
  • reCAPTCHA v3 & v3 Doanh nghiệp
  • Cloudflare Turnstile
  • Cloudflare 5 giây thách thức
  • AWS WAF CAPTCHA
  • Và nhiều hơn nữa

Tại sao tích hợp này khác biệt?

Hầu hết các tích hợp giải CAPTCHA yêu cầu bạn viết mã mẫu: tạo nhiệm vụ, kiểm tra kết quả, chèn token vào các trường ẩn. Đó là cách tiếp cận tiêu chuẩn với các kịch bản Playwright hoặc Puppeteer nguyên bản.

AgentQL + CapSolver tiếp cận một cách hoàn toàn khác:

Truyền thống (dựa trên mã) AgentQL + Extension CapSolver
Viết lớp dịch vụ CapSolver Tải tiện ích mở rộng trong ngữ cảnh Playwright
Gọi createTask() / getTaskResult() Tiện ích mở rộng xử lý mọi thứ tự động
Chèn token thông qua page.evaluate() Việc chèn token không nhìn thấy được
Xử lý lỗi, thử lại, thời gian chờ trong mã Tiện ích mở rộng quản lý thử lại bên trong
Mã khác nhau cho mỗi loại CAPTCHA Hoạt động cho tất cả các loại tự động

Điểm nhận thức chính: Tiện ích mở rộng CapSolver chạy bên trong ngữ cảnh trình duyệt Playwright của AgentQL. Khi AgentQL điều hướng đến trang có CAPTCHA, tiện ích mở rộng phát hiện nó, giải nó ở nền, và chèn token — tất cả trước khi kịch bản của bạn tương tác với biểu mẫu. Mã tự động hóa của bạn vẫn sạch sẽ, tập trung và không có CAPTCHA.

Yêu cầu tiên quyết

Trước khi thiết lập tích hợp, hãy đảm bảo bạn có:

  • TinyFish AgentQL đã cài đặt (SDK Python hoặc SDK JavaScript)
  • Tài khoản CapSolver với khóa API (đăng ký tại đây)
  • Node.js 16+Python 3.8+ (tùy thuộc vào lựa chọn SDK của bạn)
  • Playwright đã cài đặt với Chromium

Quan trọng: Tiện ích mở rộng Chrome chỉ hoạt động trong Chromium với các ngữ cảnh bền vững trong Playwright. Đây là yêu cầu của Playwright, không phải giới hạn của AgentQL.

Hướng dẫn cài đặt từng bước

Bước 1: Cài đặt AgentQL

SDK Python:

bash Copy
pip install agentql
playwright install chromium

SDK JavaScript:

bash Copy
npm install agentql
npx playwright install chromium

Bước 2: Tải xuống tiện ích mở rộng CapSolver Chrome

Tải tiện ích mở rộng CapSolver Chrome và giải nén nó vào một thư mục chuyên dụng:

  1. Truy cập phiên bản tiện ích mở rộng CapSolver Chrome v1.17.0
  2. Tải xuống CapSolver.Browser.Extension-chrome-v1.17.0.zip
  3. Giải nén zip:
bash Copy
mkdir -p ~/capsolver-extension
unzip CapSolver.Browser.Extension-chrome-v*.zip -d ~/capsolver-extension/
  1. Xác minh việc giải nén đã thành công:
bash Copy
ls ~/capsolver-extension/manifest.json

Bạn nên thấy manifest.json — điều này xác nhận tiện ích mở rộng ở đúng vị trí.

Bước 3: Cấu hình khóa API CapSolver của bạn

Mở tệp cấu hình tiện ích mở rộng tại ~/capsolver-extension/assets/config.js và thay giá trị apiKey bằng khóa của bạn:

javascript Copy
export const defaultConfig = {
  apiKey: 'CAP-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX', // ← khóa của bạn ở đây
  useCapsolver: true,
  // ... phần còn lại của cấu hình
};

Bạn có thể nhận khóa API từ bảng điều khiển CapSolver.

Bước 4: Khởi động AgentQL với tiện ích mở rộng CapSolver

Bước quan trọng là khởi động Chromium của Playwright với một ngữ cảnh bền vững tải tiện ích mở rộng CapSolver.

Ví dụ Python:

python Copy
import agentql
from playwright.sync_api import sync_playwright
import time
import os

# Đường dẫn đến tiện ích mở rộng CapSolver
CAPSOLVER_EXTENSION_PATH = os.path.expanduser("~/capsolver-extension")

def main():
    with sync_playwright() as p:
        # Khởi động Chromium với ngữ cảnh bền vững và tiện ích mở rộng CapSolver
        context = p.chromium.launch_persistent_context(
            user_data_dir="./browser-data",
            headless=False,  # Tiện ích mở rộng yêu cầu chế độ có giao diện
            args=[
                f"--disable-extensions-except={CAPSOLVER_EXTENSION_PATH}",
                f"--load-extension={CAPSOLVER_EXTENSION_PATH}",
            ],
        )

        # Bao bọc trang bằng AgentQL để truy vấn AI
        page = agentql.wrap(context.pages[0])

        # Điều hướng đến trang mục tiêu
        page.goto("https://example.com/protected-page")

        # Chờ CapSolver phát hiện và giải CAPTCHA
        time.sleep(30)

        # Tìm và nhấn nút gửi bằng truy vấn ngôn ngữ tự nhiên của AgentQL
        response = page.query_elements("""
        {
            submit_button
        }
        """)

        # Nhấn nút gửi — CAPTCHA đã được giải!
        response.submit_button.click()

        # Trích xuất dữ liệu sau khi gửi
        result = page.query_data("""
        {
            confirmation_message
        }
        """)

        print(f"Kết quả: {result['confirmation_message']}")

        context.close()

if __name__ == "__main__":
    main()

Ví dụ JavaScript:

javascript Copy
const { chromium } = require('playwright');
const agentql = require('agentql');
const path = require('path');
const os = require('os');

const CAPSOLVER_EXTENSION_PATH = path.join(os.homedir(), 'capsolver-extension');

(async () => {
  // Khởi động Chromium với ngữ cảnh bền vững và tiện ích mở rộng CapSolver
  const context = await chromium.launchPersistentContext('./browser-data', {
    headless: false, // Tiện ích mở rộng yêu cầu chế độ có giao diện
    args: [
      `--disable-extensions-except=${CAPSOLVER_EXTENSION_PATH}`,
      `--load-extension=${CAPSOLVER_EXTENSION_PATH}`,
    ],
  });

  // Lấy trang đầu tiên và bao bọc bằng AgentQL
  const page = agentql.wrap(context.pages()[0]);

  // Điều hướng đến trang mục tiêu
  await page.goto('https://example.com/protected-page');

  // Chờ CapSolver xử lý bất kỳ CAPTCHA nào
  await page.waitForTimeout(30000);

  // Sử dụng truy vấn AgentQL để tương tác — CAPTCHA đã được giải
  const response = await page.queryElements(`{
    submit_button
  }`);

  await response.submit_button.click();

  // Trích xuất dữ liệu kết quả
  const result = await page.queryData(`{
    confirmation_message
  }`);

  console.log('Kết quả:', result.confirmation_message);

  await context.close();
})();

Bước 5: Xác minh tiện ích mở rộng đã được tải

Sau khi khởi động trình duyệt, bạn có thể xác minh tiện ích mở rộng CapSolver đang hoạt động bằng cách truy cập chrome://extensions trong cửa sổ trình duyệt. Bạn nên thấy tiện ích mở rộng CapSolver được liệt kê và kích hoạt.

Ngoài ra, kiểm tra bảng điều khiển trình duyệt để xem các thông báo ghi nhật ký của CapSolver cho thấy dịch vụ worker đang chạy.

Cách sử dụng

Sau khi cài đặt hoàn tất, sử dụng CapSolver với AgentQL là đơn giản.

Quy tắc vàng

Không viết mã cụ thể cho CAPTCHA. Chỉ cần thêm thời gian chờ trước khi tương tác với các biểu mẫu được bảo vệ bởi CAPTCHA, và để tiện ích mở rộng thực hiện công việc của nó.

Ví dụ 1: Gửi biểu mẫu sau reCAPTCHA

python Copy
page.goto("https://example.com/contact")

# Điền biểu mẫu bằng truy vấn AgentQL
response = page.query_elements("""
{
    contact_form {
        name_field
        email_field
        message_field
        submit_button
    }
}
""")

response.contact_form.name_field.fill("John Doe")
response.contact_form.email_field.fill("john@example.com")
response.contact_form.message_field.fill("Hello, I have a question about your services.")

# Chờ CapSolver giải CAPTCHA
time.sleep(30)

# Gửi — token CAPTCHA đã được chèn
response.contact_form.submit_button.click()

Ví dụ 2: Trang đăng nhập với Cloudflare Turnstile

python Copy
page.goto("https://example.com/login")

# Chờ CapSolver giải quyết thách thức Turnstile
time.sleep(25)

# Tìm các phần tử biểu mẫu đăng nhập với AgentQL
response = page.query_elements("""
{
    login_form {
        email_input
        password_input
        login_button
    }
}
""")

# Điền biểu mẫu — Turnstile đã được xử lý
response.login_form.email_input.fill("me@example.com")
response.login_form.password_input.fill("mypassword123")

# Nhấn nút đăng nhập
response.login_form.login_button.click()

Ví dụ 3: Trích xuất dữ liệu từ trang được bảo vệ

python Copy
page.goto("https://example.com/data")

# Chờ CAPTCHA được giải
time.sleep(30)

# Trích xuất dữ liệu có cấu trúc với AgentQL
data = page.query_data("""
{
    products[] {
        name
        price
        rating
        availability
    }
}
""")

for product in data['products']:
    print(f"{product['name']}: ${product['price']} ({product['rating']} sao)")

Thời gian chờ được khuyến nghị

Loại CAPTCHA Thời gian giải điển hình Thời gian chờ được khuyến nghị
reCAPTCHA v2 (hộp kiểm) 5-15 giây 30-60 giây
reCAPTCHA v2 (ẩn) 5-15 giây 30 giây
reCAPTCHA v3 3-10 giây 20-30 giây
Cloudflare Turnstile 3-10 giây 20-30 giây

Lời khuyên: Khi không chắc, hãy sử dụng 30 giây. Tốt hơn là chờ lâu hơn một chút thay vì gửi quá sớm. Thời gian bổ sung không ảnh hưởng đến kết quả.

Cách hoạt động phía sau

Đây là những gì xảy ra khi AgentQL chạy với tiện ích mở rộng CapSolver được tải:

Copy
Kịch bản AgentQL của bạn
───────────────────────────────────────────────────
page.goto("https://...")       ──► Chromium tải trang
                                           │
                                           ▼
                               ┌─────────────────────────────┐
                               │  Trang có widget CAPTCHA     │
                               │                               │
                               │  Tiện ích mở rộng CapSolver:  │
                               │  1. Script nội dung phát hiện │
                               │     CAPTCHA trên trang        │
                               │  2. Service worker gọi        │
                               │     API CapSolver             │
                               │  3. Token nhận được           │
                               │  4. Token chèn vào trường ẩn  │
                               └─────────────────────────────┘
                                           │
                                           ▼
time.sleep(30)                   Tiện ích mở rộng giải CAPTCHA...
                                           │
                                           ▼
page.query_elements(...)         AgentQL tìm thấy các phần tử biểu mẫu
submit_button.click()            Biểu mẫu gửi với token hợp lệ
                                           │
                                           ▼
                               "Xác minh thành công!"

Cách tiện ích mở rộng được tải

Khi Playwright khởi động Chromium với cờ --load-extension:

  1. Chromium bắt đầu với tiện ích mở rộng CapSolver đã được tải
  2. Tiện ích mở rộng kích hoạt — service worker bắt đầu và các script nội dung được chèn vào mọi trang
  3. Trên các trang có CAPTCHA — script nội dung phát hiện widget, gọi API CapSolver và chèn token giải pháp vào trang
  4. AgentQL hoạt động bình thường — các truy vấn, nhấp chuột và trích xuất dữ liệu hoạt động như bình thường, với CAPTCHA đã được xử lý

Tham chiếu cấu hình đầy đủ

Đây là một thiết lập Python đầy đủ với tất cả các tùy chọn cấu hình cho tích hợp AgentQL + CapSolver:

python Copy
import agentql
from playwright.sync_api import sync_playwright
import os

# Cấu hình
CAPSOLVER_EXTENSION_PATH = os.path.expanduser("~/capsolver-extension")
USER_DATA_DIR = "./browser-data"

with sync_playwright() as p:
    context = p.chromium.launch_persistent_context(
        user_data_dir=USER_DATA_DIR,
        headless=False,
        args=[
            f"--disable-extensions-except={CAPSOLVER_EXTENSION_PATH}",
            f"--load-extension={CAPSOLVER_EXTENSION_PATH}",
        ],
    )
    page = agentql.wrap(context.pages[0])
    # ... mã tự động hóa của bạn ở đây
    context.close()

Tùy chọn cấu hình

Tùy chọn Mô tả
user_data_dir Thư mục để lưu trữ dữ liệu hồ sơ trình duyệt (cookie, phiên). Bắt buộc cho ngữ cảnh bền vững.
headless Phải là False — tiện ích mở rộng Chrome không hoạt động trong chế độ không giao diện.
--disable-extensions-except Giới hạn các tiện ích mở rộng có thể tải (ngăn xung đột).
--load-extension Đường dẫn đến thư mục mở rộng CapSolver chưa nén.
CAPSOLVER_EXTENSION_PATH Đường dẫn đầy đủ đến thư mục mở rộng CapSolver đã giải nén chứa manifest.json.

Khóa API của CapSolver được cấu hình trực tiếp trong tệp assets/config.js của mở rộng (xem Bước 3 ở trên).

Sử dụng CapSolver với TinyFish Browser

Toàn bộ nội dung trên giả định bạn đang chạy Chromium của riêng mình, cục bộ, với bối cảnh Playwright duy trì để mở rộng CapSolver có thể được tải. Tuy nhiên, không phải mọi cấu hình nào cũng cho phép bạn kiểm soát quá trình Chromium như vậy — nếu tự động hóa của bạn chạy chống lại TinyFish Browser, dịch vụ phiên bản trình duyệt từ xa, theo yêu cầu, bạn không quản lý quá trình Chromium trực tiếp, do đó không thể tải mở rộng chưa nén vào đó theo cách tương tự.

Trong trường hợp này, CapSolver có thể được tích hợp thông qua API của nó, trực tiếp trong đoạn mã của bạn: bạn yêu cầu một phiên bản trình duyệt từ xa từ TinyFish Browser, kết nối với nó qua CDP bằng Playwright, giải CAPTCHA bằng SDK CapSolver, và chèn token kết quả vào trang web của riêng bạn. Đây là cách tiếp cận "truyền thống", dựa trên mã được mô tả trước đó trong bài viết — nhưng đây là công cụ đúng đắn khi không thể tải mở rộng vào phiên bản trình duyệt bạn đang điều khiển.

Trước khi bắt đầu, cài đặt SDK CapSolver:

bash Copy
pip install capsolver

Đoạn mã sau cho thấy cách sử dụng CapSolver để giải reCAPTCHA trong một phiên bản TinyFish Browser:

python Copy
import time
import requests
import capsolver
from playwright.sync_api import sync_playwright


TINYFISH_API_KEY = "KHÓA API TINYFISH CỦA BẠN"
capsolver.api_key = "KHÓA API CAPSOLVER CỦA BẠN"


website_url = "https://www.google.com/recaptcha/api2/demo"
website_key = "6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-"
captcha_type = "ReCaptchaV2TaskProxyLess"


def create_tinyfish_browser(url):
    resp = requests.post(
        "https://api.browser.tinyfish.ai",
        headers={
            "X-API-Key": TINYFISH_API_KEY,
            "Content-Type": "application/json",
        },
        json={
            "url": url,
            "timeout_seconds": 300,
        },
        timeout=90,
    )
    resp.raise_for_status()
    return resp.json()


def close_tinyfish_browser(session_id):
    try:
        requests.delete(
            f"https://api.browser.tinyfish.ai/{session_id}",
            headers={"X-API-Key": TINYFISH_API_KEY},
            timeout=30,
        )
    except Exception as exc:
        print("   Không thể đóng phiên bản trình duyệt TinyFish:", repr(exc))


def solve_recaptcha_v2():
    print("3. Giải reCAPTCHA bằng CapSolver")
    solution = capsolver.solve({
        "type": captcha_type,
        "websiteURL": website_url,
        "websiteKey": website_key,
    })

    token = solution.get("gRecaptchaResponse")
    if not token:
        raise RuntimeError(f"CapSolver không trả về token reCAPTCHA: {solution}")

    print("   Nhiệm vụ CapSolver đã được giải: ", token)
    return token


def inject_recaptcha_token(page, token):
    page.evaluate(
        """
        (token) => {
            const textarea = document.getElementById('g-recaptcha-response');
            if (textarea) {
                textarea.value = token;
            }
        }
        """,
        token,
    )
    print("   Token CapSolver đã được chèn")
    page.click('input[type="submit"]')
    print("   Nút gửi đã được nhấn")


def main():
    session_id = None
    try:
        print("1. Tạo phiên bản trình duyệt TinyFish")
        session = create_tinyfish_browser(website_url)

        session_id = session["session_id"]
        cdp_url = session["cdp_url"]
        print("   ID phiên bản TinyFish:", session_id)
        print("   URL CDP của TinyFish:", cdp_url)

        with sync_playwright() as p:
            print("2. Kết nối với trình duyệt TinyFish qua CDP")
            browser = p.chromium.connect_over_cdp(cdp_url)
            context = browser.contexts[0]
            page = context.pages[0] if context.pages else context.new_page()
            page.wait_for_load_state("domcontentloaded", timeout=60000)
            print("   URL trang hiện tại:", page.url)

            token = solve_recaptcha_v2()

            print("4. Chèn token CapSolver")
            inject_recaptcha_token(page, token)

            page.wait_for_load_state("domcontentloaded", timeout=30000)
            time.sleep(3)

            body_text = page.locator("body").inner_text(timeout=10000)
            print("5. Kết quả trang:", " ".join(body_text.split()))

            print("6. Đóng phiên bản trình duyệt")
            browser.close()
    finally:
        if session_id:
            close_tinyfish_browser(session_id)


if __name__ == "__main__":
    main()

Dù bạn chọn cách nào phù hợp với cấu hình của mình — tải mở rộng CapSolver vào bối cảnh Playwright cục bộ, duy trì, hoặc gọi API CapSolver trực tiếp vào phiên bản TinyFish Browser từ xa — mục tiêu là giống nhau: tự động hóa AgentQL của bạn không bao giờ cần mang theo logic xử lý CAPTCHA riêng.

Xử lý sự cố

Mở rộng không được tải

Triệu chứng: CAPTCHA không được giải tự động.

Nguyên nhân: Bạn có thể đang sử dụng bối cảnh trình duyệt thông thường thay vì bối cảnh duy trì, hoặc đang chạy ở chế độ không đầu.

Giải pháp: Mở rộng trong Playwright yêu cầu bối cảnh duy trì và chế độ có đầu:

python Copy
# ✅ Đúng — bối cảnh duy trì, chế độ có đầu
context = p.chromium.launch_persistent_context(
    user_data_dir="./browser-data",
    headless=False,
    args=[...các tham số mở rộng...]
)

# ❌ Sai — bối cảnh thông thường (mở rộng sẽ không được tải)
browser = p.chromium.launch()
context = browser.new_context()

CAPTCHA không được giải (Form thất bại)

Nguyên nhân có thể:

  • Thời gian chờ quá ngắn — Tăng lên 60 giây
  • Khóa API không hợp lệ — Kiểm tra bảng điều khiển CapSolver của bạn
  • Số dư không đủ — Nạp tiền tài khoản CapSolver của bạn
  • Mở rộng không được tải — Xem "Mở rộng không được tải" ở trên

Chế độ không đầu không được hỗ trợ

Triệu chứng: Script chạy nhưng không có mở rộng xuất hiện.

Nguyên nhân: Mở rộng Chrome không hoạt động trong chế độ không đầu.

Giải pháp: Sử dụng chế độ có đầu với màn hình ảo trên máy chủ:

bash Copy
# Cài đặt Xvfb
sudo apt-get install xvfb

# Bắt đầu màn hình ảo
Xvfb :99 -screen 0 1280x720x24 &

# Thiết lập DISPLAY
export DISPLAY=:99

Tương thích với Chrome 137+

Triệu chứng: Cờ mở rộng bị bỏ qua mà không có thông báo.

Nguyên nhân: Chrome 137+ đã loại bỏ hỗ trợ cho --load-extension trong các phiên bản được thương mại hóa.

Giải pháp: Sử dụng Chromium của Playwright (được khuyến nghị) hoặc Chrome for Testing:

bash Copy
# Cài đặt Chromium của Playwright (được khuyến nghị)
npx playwright install chromium

# Hoặc tải xuống Chrome for Testing
# Truy cập: https://googlechromelabs.github.io/chrome-for-testing/

Nguyên tắc tốt nhất

  1. Luôn sử dụng thời gian chờ dài. Thời gian chờ dài hơn luôn an toàn hơn. CAPTCHA thường được giải trong 5-20 giây, nhưng độ trễ mạng, thách thức phức tạp hoặc thử lại có thể làm tăng thời gian. 30-60 giây là khoảng thời gian lý tưởng.

  2. Giữ mã tự động hóa sạch sẽ. Không thêm logic xử lý CAPTCHA vào truy vấn AgentQL của bạn. Mở rộng xử lý mọi thứ — mã của bạn nên tập trung hoàn toàn vào việc trích xuất dữ liệu và tương tác.

  3. Theo dõi số dư CapSolver của bạn. Mỗi lần giải CAPTCHA tốn tiền. Kiểm tra số dư tại capsolver.com/dashboard thường xuyên để tránh gián đoạn.

  4. Luôn sử dụng bối cảnh duy trì. Luôn khởi động bằng launch_persistent_context() khi bạn cần mở rộng. Điều này cũng bảo tồn cookie và dữ liệu phiên giữa các lần chạy, có thể giảm tần suất CAPTCHA.

  5. Sử dụng Xvfb trên máy chủ không đầu. Mở rộng Chrome yêu cầu bối cảnh màn hình. Thiết lập Xvfb cho các môi trường máy chủ nơi không có màn hình vật lý.

  6. Phù hợp tích hợp với môi trường của bạn. Sử dụng cách tiếp cận dựa trên mở rộng mỗi khi bạn kiểm soát quá trình Chromium trực tiếp và có thể khởi động bối cảnh duy trì. Sử dụng cách tiếp cận dựa trên API với SDK CapSolver mỗi khi bạn kết nối với trình duyệt mà bạn không kiểm soát việc khởi động — như phiên bản TinyFish Browser từ xa qua CDP.

Kết luận

Tích hợp TinyFish AgentQL + CapSolver mang đến giải pháp CAPTCHA không nhìn thấy cho một trong những bộ công cụ tự động hóa web mạnh mẽ nhất hiện có. Thay vì viết mã xử lý CAPTCHA phức tạp, bạn chỉ cần:

  1. Tải xuống mở rộng CapSolver và cấu hình khóa API của bạn
  2. Khởi động trình duyệt Playwright của AgentQL với mở rộng được tải qua bối cảnh duy trì
  3. Viết đoạn mã tự động hóa như bình thường — chỉ cần thêm thời gian chờ trước khi gửi biểu mẫu

Mở rộng CapSolver xử lý phần còn lại — phát hiện CAPTCHA, giải chúng qua API CapSolver và chèn token vào trang. Các đoạn mã AgentQL của bạn không bao giờ cần biết về CAPTCHA.

Và khi tự động hóa của bạn chạy trên phiên bản từ xa thay vì Chromium cục bộ — như TinyFish Browser — SDK và API của CapSolver cho phép bạn đạt được kết quả tương tự với vài dòng mã thêm: yêu cầu phiên bản, kết nối qua CDP, giải và chèn.

Đây là cách giải CAPTCHA khi kết hợp tự động hóa web dựa trên AI với giải pháp CAPTCHA dựa trên AI: không nhìn thấy, tự động và không cần mã.

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

mã thưởng

Câu hỏi thường gặp

Tôi có cần viết mã đặc biệt cho CAPTCHA trong các đoạn mã AgentQL không?

Không. Mở rộng CapSolver hoạt động hoàn toàn ở chế độ nền trong bối cảnh trình duyệt Playwright. Chỉ cần thêm time.sleep() hoặc waitForTimeout() trước khi gửi biểu mẫu, và mở rộng xử lý phát hiện, giải và chèn token tự động.

Tại sao tôi cần bối cảnh duy trì?

Playwright chỉ hỗ trợ mở rộng Chrome khi sử dụng launch_persistent_context(). Đây là yêu cầu kiến trúc của Playwright. Các bối cảnh trình duyệt thông thường được tạo qua browser.new_context() không thể tải mở rộng.

Tôi có thể chạy ở chế độ không đầu không?

Không. Mở rộng Chrome yêu cầu trình duyệt có đầu. Đối với các máy chủ không có màn hình, sử dụng Xvfb (X Virtual Framebuffer) để tạo màn hình ảo.

Nếu tôi đang sử dụng phiên bản TinyFish Browser từ xa thay vì Chromium cục bộ của mình?

Vì bạn không kiểm soát việc khởi động trình duyệt trực tiếp, bạn không thể tải mở rộng CapSolver vào phiên bản TinyFish Browser. Thay vào đó, sử dụng SDK CapSolver để giải CAPTCHA và chèn token kết quả vào trang web của bạn thông qua page.evaluate() sau khi kết nối qua CDP, như được hiển thị trong phần "Sử dụng CapSolver với TinyFish Browser" ở trên.

CapSolver hỗ trợ loại CAPTCHA nào?

CapSolver hỗ trợ reCAPTCHA v2 (hộp kiểm và ẩn), reCAPTCHA v3, Cloudflare Turnstile, AWS WAF CAPTCHA và nhiều hơn nữa. Mở rộng tự động phát hiện loại CAPTCHA và giải nó tương ứng.

Chi phí của CapSolver là bao nhiêu?

CapSolver cung cấp giá cả cạnh tranh dựa trên loại CAPTCHA và khối lượng. Truy cập capsolver.com để xem giá cả hiện tại.

TinyFish AgentQL có miễn phí không?

AgentQL cung cấp cả các gói miễn phí và trả phí. SDK và ngôn ngữ truy vấn có sẵn cho phát triển và kiểm thử. Truy cập tinyfish.ai để biết chi tiết giá cả.

Tôi nên chờ bao lâu để CAPTCHA được giải?

Đối với phần lớn CAPTCHA, 30-60 giây là đủ. Thời gian giải thực tế thường là 5-20 giây, nhưng thêm thời gian dự phòng đảm bảo độ tin cậy. Nếu không chắc, hãy sử dụng 30 giây.

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