CAPSOLVER
Blog
Khám phá cách quản lý và vượt qua các thách thức CAPTCHA trong tự động hóa trình duyệt AI. Hướng dẫn này cung cấp các bước thực tế để tạo ra các giải pháp tự động hóa web mạnh mẽ và có thể mở rộng.

Skyvern Tích hợp CapSolver: Hướng dẫn xử lý CAPTCHA trong tự động hóa trình duyệt AI

Logo of CapSolver

Anh Tuan

How to use CapSolver

28-Jul-2026

TL;DR

  • Skyvern chịu trách nhiệm mở trang web, điền biểu mẫu và tiến hành các quy trình kinh doanh, trong khi CapSolver xử lý việc trả về Token CAPTCHA.

  • Cài đặt SDK chính thức capsolver và gọi capsolver.solve() để tránh việc tự mình triển khai logic tạo nhiệm vụ và kiểm tra.

  • Khi nhận được Token, trả nó về trang trình duyệt hiện tại, sau đó để Skyvern gửi biểu mẫu và kiểm tra kết quả.

Giới thiệu

Skyvern là nền tảng tự động hóa trình duyệt AI được xây dựng dựa trên Playwright, mô hình thị giác và các Mô hình Ngôn ngữ Lớn (LLMs). Skyvern có thể hiểu văn bản, biểu mẫu và các phần tử tương tác trên trang web, hoàn thành các nhiệm vụ như điều hướng trang, nhấp nút, nhập nội dung, tải tệp lên, trích xuất thông tin và các quy trình nhiều bước dựa trên chỉ dẫn bằng ngôn ngữ tự nhiên. Cách tiếp cận này giảm chi phí bảo trì script do thay đổi cấu trúc trang web, phù hợp với các tình huống như đăng nhập, gửi biểu mẫu, thao tác nội bộ và thu thập dữ liệu.

Khi quy trình tự động hóa gặp phải thách thức CAPTCHA, bạn có thể gọi SDK Python chính thức của CapSolver bằng cách cung cấp các tham số như URL trang hiện tại, Site Key và loại CAPTCHA. Sau khi CapSolver hoàn thành nhiệm vụ, nó sẽ trả về một Token xác minh tương ứng. Chương trình sau đó sử dụng Playwright để ghi Token này vào các trường phản hồi trang, hàm gọi lại JavaScript hoặc yêu cầu kinh doanh. Khi xác minh được thực hiện, Skyvern có thể tiếp tục thực hiện nhiệm vụ được ủy quyền ban đầu của người dùng, chẳng hạn như gửi biểu mẫu, truy cập trang tiếp theo hoặc kiểm tra kết quả cuối cùng.

1. Cài đặt Phụ thuộc

Skyvern hiện tại yêu cầu Python 3.11, 3.12 hoặc 3.13. Cài đặt Skyvern, SDK CapSolver và Chromium:

Bash Copy
pip install "skyvern[local]"
pip install --upgrade capsolver
python -m playwright install chromium

2. Mã CapSolver

Python Copy
# pip install --upgrade capsolver
# export CAPSOLVER_API_KEY='...'

import capsolver

# capsolver.api_key = "..."
solution = capsolver.solve({
    "type": "ReCaptchaV2TaskProxyLess",
    "websiteURL": "https://www.google.com/recaptcha/api2/demo",
    "websiteKey": "6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-",
})

print(solution)

Khi thành công, kết quả trả về chủ yếu sử dụng:

Python Copy
token = solution["gRecaptchaResponse"]

Vai trò của các tham số:

websiteURLwebsiteKey phải nhất quán với cấu hình thực tế của trang hiện tại.

3. Ví dụ Tích hợp Skyvern

Dưới đây là ví dụ tích hợp tối thiểu. Skyvern trước tiên mở trang và điền biểu mẫu, sau đó truy xuất Token qua SDK chính thức, cuối cùng trả Token về trang để gửi.

Python Copy
import asyncio
import capsolver
from skyvern import Skyvern


TARGET_URL = "https://www.google.com/recaptcha/api2/demo"
WEBSITE_KEY = "6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-"


async def inject_token(page, token: str):
    await page.evaluate(
        """
        (token) => {
            const textarea = document.getElementById('g-recaptcha-response');
            if (textarea) {
                textarea.value = token;
            }
        }
        """,
        token,
    )


async def main():
    skyvern = Skyvern.local()
    browser = await skyvern.launch_local_browser(headless=False)
    page = await browser.get_working_page()

    try:
        await page.goto(TARGET_URL)
        solution = await asyncio.to_thread(
            capsolver.solve,
            {
                "type": "ReCaptchaV2TaskProxyLess",
                "websiteURL": TARGET_URL,
                "websiteKey": WEBSITE_KEY,
            },
        )

        token = solution["gRecaptchaResponse"]
        await inject_token(page, token)

        await page.act("Submit")
        await page.validate("Verification successful... Great!")
    finally:
        await browser.close()

4. Cách Trả Token Về Trang

CapSolver chỉ chịu trách nhiệm trả về Token; nó không tự động gửi biểu mẫu kinh doanh của trang đích. Các trang web khác nhau xử lý Token theo các cách khác nhau, với các phương pháp phổ biến bao gồm:

  1. Ghi vào trường ẩn g-recaptcha-response;

  2. Gọi hàm gọi lại JavaScript được cấu hình trên trang;

  3. Gửi Token như tham số của giao diện kinh doanh.

Hàm inject_token() trong ví dụ thử cả trường ẩn và hàm gọi lại thử nghiệm. Trong thực tế, đoạn mã này nên được điều chỉnh theo triển khai frontend của trang web của bạn.

5. Các Vấn đề Thường Gặp

Token được trả về nhưng trang vẫn thất bại

Kiểm tra các tham số sau:

  • websiteURL có phải là địa chỉ trang hiện tại không?

  • websiteKey có phải từ trang hiện tại không?

  • Trang có được làm mới sau khi nhận Token không?

  • Token có được chuyển đến hàm gọi lại hoặc giao diện kinh doanh đúng trang không?

6. Sử dụng API CapSolver để Giải Bài Toán Hình Ảnh Thành Văn Bản

Ngoài reCAPTCHA, Skyvern cũng có thể làm việc với CapSolver để xử lý các CAPTCHA hình ảnh thành văn bản tiêu chuẩn. Ví dụ, trang BotDetect CAPTCHA Demo: ID phần tử hình ảnh CAPTCHA là demoCaptcha_CaptchaImage, ID ô nhập kết quả là captchaCode, và ID nút xác minh là validateCaptchaButton.

BotDetect

ImageToTextTask yêu cầu chuyển đổi hình ảnh CAPTCHA thành Base64 và gửi nó qua tham số body. Nếu src hình ảnh là URL dữ liệu, ví dụ:

Plain Text Copy
data:image/png;base64,iVBORw0KGgoAAA...

Khi truyền nó đến CapSolver, chỉ giữ nội dung Base64 sau dấu phẩy, loại bỏ tiền tố data:image/...;base64,. Khác với các nhiệm vụ kiểu Token, ImageToTextTask trả về kết quả nhận dạng trực tiếp mà không cần kiểm tra thêm getTaskResult.

Dưới đây là ví dụ tích hợp Skyvern đầy đủ:

Python Copy
import asyncio

import capsolver
from skyvern import Skyvern


TARGET_URL = "https://captcha.com/demos/features/captcha-demo.aspx"


async def main():
    skyvern = Skyvern.local()
    browser = await skyvern.launch_local_browser(headless=False)
    page = await browser.get_working_page()

    try:
        await page.goto(TARGET_URL)
        await page.locator("#demoCaptcha_CaptchaImage").wait_for()

        # Đọc URL dữ liệu hình ảnh CAPTCHA.
        image_src = await page.locator(
            "#demoCaptcha_CaptchaImage"
        ).get_attribute("src")

        if not image_src or "," not in image_src:
            raise RuntimeError("Không tìm thấy hình ảnh CAPTCHA Base64 hợp lệ")

        # Xóa tiền tố URL dữ liệu và giữ chỉ dữ liệu Base64.
        base64_image = image_src.split(",", 1)[1]

        solution = await asyncio.to_thread(
            capsolver.solve,
            {
                "type": "ImageToTextTask",
                "websiteURL": TARGET_URL,
                "module": "common",
                "body": base64_image,
            },
        )

        captcha_text = solution["text"]
        print("Kết quả nhận dạng:", captcha_text)

        await page.locator("#captchaCode").fill(captcha_text)
        await page.locator("#validateCaptchaButton").click()
        await page.wait_for_timeout(5000)
    finally:
        await browser.close()


if __name__ == "__main__":
    asyncio.run(main())

Quy trình thực thi mã có thể được tóm tắt như sau:

Plain Text Copy
Skyvern mở trang CAPTCHA
  -> Tìm #demoCaptcha_CaptchaImage
  -> Trích xuất và làm sạch dữ liệu hình ảnh Base64
  -> Gọi capsolver.solve(ImageToTextTask)
  -> Đọc solution["text"]
  -> Điền vào #captchaCode
  -> Nhấp vào #validateCaptchaButton

Chọn Mô Hình Nhận Dạng Phù Hợp

module là tham số tùy chọn; common có thể được sử dụng theo mặc định. Nếu CAPTCHA chỉ chứa số, bạn có thể sử dụng number; đối với một số kiểu đặc biệt, bạn cũng có thể chọn mô hình độc lập tương ứng theo tài liệu CapSolver để cải thiện độ chính xác nhận dạng.

filename.png

Ví dụ, khi nhận dạng CAPTCHA chỉ chứa số, bạn có thể thay đổi tham số nhiệm vụ thành:

Python Copy
solution = capsolver.solve({
    "type": "ImageToTextTask",
    "module": "number",
    "images": [base64_image],
})

answers = solution["answers"]

Mô hình number hỗ trợ gửi nhiều hình ảnh cùng lúc, và images có thể chứa tối đa 9 chuỗi Base64. Đối với các tên mô hình khác và loại hình ảnh áp dụng, vui lòng tham khảo Tài liệu chính thức của CapSolver về ImageToTextTask.

7. Tóm Lược

Việc chọn giải pháp kỹ thuật phù hợp cho tự động hóa trình duyệt AI phụ thuộc vào độ phức tạp của nhiệm vụ, tần suất thay đổi trang và cơ chế xác minh của trang web mục tiêu. Các công cụ truyền thống như Selenium và Playwright phù hợp với các quy trình tự động hóa có cấu trúc ổn định và đường đi rõ ràng. Skyvern xây dựng trên nền tảng này bằng cách giới thiệu các mô hình thị giác và LLMs, khiến nó phù hợp hơn với các nhiệm vụ web có cấu trúc trang thay đổi thường xuyên, yêu cầu hiểu biết ngữ nghĩa hoặc liên quan đến các bước hoạt động nhiều. Vì Skyvern kiểm soát trình duyệt dựa trên Playwright, nó có thể hoàn thành điều hướng trang, điền biểu mẫu, nhấp nút và trích xuất dữ liệu thông qua ngôn ngữ tự nhiên. Khi quy trình gặp phải thách thức CAPTCHA, các nhà phát triển có thể kết hợp SDK CapSolver chính thức để nhận Token xác minh và sau đó điền kết quả trở lại trang hiện tại, cho phép Skyvern tiếp tục các thao tác tiếp theo như gửi biểu mẫu, chuyển trang và kiểm tra kết quả. Bằng cách kết hợp Skyvern và CapSolver, các nhà phát triển có thể xây dựng các quy trình tự động hóa trình duyệt linh hoạt, dễ bảo trì và mở rộng hơn, giảm chi phí bảo trì các lựa chọn truyền thống trong khi cải thiện hiệu suất và độ ổn định của các nhiệm vụ web phức tạp. Việc xác định rõ phạm vi ủy quyền, bảo vệ khóa API và xác minh và ghi lại kết quả tự động hóa là các điều kiện tiên quyết quan trọng cho hoạt động ổn định của các dự án liên quan.

Tài Liệu Tham Khảo

Nhận Mã Ưu Đãi CapSolver

Tăng ngân sách tự động hóa của bạn ngay lập tức!
Sử dụng mã ưu đãi CAP26 khi nạp tiền vào tài khoản CapSolver để nhận thêm 5% ưu đãi cho mỗi lần nạp tiền — không giới hạn.
Nhận mã ngay bây giờ trong Bảng điều khiển CapSolver
Mã Ưu Đãi

Câu Hỏi Thường Gặp (FAQ)

Câu hỏi 1: Làm thế nào để xử lý CAPTCHA trong iframe?
Trả lời 1: Chuyển sang ngữ cảnh iframe trước bằng cách sử dụng page.frame_locator('iframe_selector') trước khi chèn token. Đảm bảo websiteURL được gửi đến CapSolver là URL trang cha, không phải URL iframe.

Câu hỏi 2: Nếu trang web sử dụng hàm gọi lại JavaScript tùy chỉnh thì sao?
Trả lời 2: Xác định tên hàm gọi lại (ví dụ: onCaptchaResolved) và thực thi nó qua Playwright: await page.evaluate("onCaptchaResolved(token)", token).

Câu hỏi 3: Làm thế nào để cải thiện tỷ lệ nhận dạng ImageToText?
Trả lời 3: Sử dụng các tham số module cụ thể (như number cho CAPTCHA số) và đảm bảo hình ảnh Base64 được trích xuất rõ ràng và độ phân giải cao.

Câu hỏi 4: Làm thế nào để bảo mật khóa API?
Trả lời 4: Không bao giờ mã hóa cứng khóa API của bạn. Sử dụng biến môi trường (ví dụ: os.getenv("CAPSOLVER_API_KEY")) để tải nó một cách an toàn.

Câu hỏi 5: Bạn có nên triển khai cơ chế thử lại không?
Trả lời 5: Có, sử dụng các thư viện như tenacity để triển khai thử lại với backoff mũ cho capsolver.solve() để xử lý các vấn đề mạng hoặc dịch vụ tạm thời.

Câu hỏi 6: Token CAPTCHA có thời hạn không?
Trả lời 6: Token CAPTCHA hết hạn nhanh (ví dụ: 2 phút). Chèn và gửi token ngay lập tức sau khi nhận được từ CapSolver.

Câu hỏi 7: Skyvern có thể tự động định tuyến các loại CAPTCHA khác nhau không?
Trả lời 7: Có, bạn có thể sử dụng khả năng thị giác của Skyvern để xác định loại CAPTCHA trước, sau đó xây dựng tải trọng CapSolver phù hợp một cách động (ví dụ: chuyển đổi giữa ReCaptchaV2TaskProxyLessImageToTextTask).

Câu hỏi 8: Thị giác của Skyvern giúp gì khác?
Trả lời 8: Nó cho phép xác định phần tử động (tìm CAPTCHA mà không cần ID cố định), kiểm tra sau khi gửi biểu mẫu bằng hình ảnh (kiểm tra thông báo thành công), và phát hiện lỗi bằng hình ảnh để thử lại thông minh.

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

SDK Chính của Python và API HTTP trực tiếp so sánh với ứng dụng sở hữu thao tác mong muốn và sự chấp nhận cuối cùng
CapSolver SDK Python Cốt Lõi so với API HTTP: Bạn Nên Sử Dụng Cái Nào?

Chọn SDK Core Python của CapSolver hoặc API HTTP trực tiếp dựa trên hỗ trợ nhiệm vụ, truy cập trang, xử lý phản hồi và các trách nhiệm mà ứng dụng của bạn đảm nhận.

automation
Logo of CapSolver

Anh Tuan

16-Sep-2026

Dòng dữ liệu SEO so sánh bằng chứng SERP lịch sử và hiện tại để xác định sự thay đổi ý định tìm kiếm đã được xác nhận
Giám sát sự thay đổi mục đích tìm kiếm cho quy trình SEO AI

Xây dựng giám sát sự thay đổi mục đích tìm kiếm với dữ liệu từ Search Console, quan sát SERP có kiểm soát, nhãn mục đích, ngưỡng độ tin cậy, bằng chứng và tự động hóa an toàn.

automation
Logo of CapSolver

Anh Tuan

31-Aug-2026

Quy trình giải CAPTCHA của Gumloop với khôi phục HTTP, định tuyến xác định, kiểm soát thử lại và đánh giá bởi con người
Cách thêm giải CAPTCHA Gumloop vào quy trình web

Xây dựng giải pháp CAPTCHA Gumloop với hợp đồng HTTP đã được xác minh, nhánh khôi phục được kiểm soát, ngân sách thử lại, kiểm tra trạng thái trình duyệt và phương án dự phòng cho con người.

automation
Logo of CapSolver

Anh Tuan

21-Aug-2026

Tự động hóa biểu mẫu tạm dừng để chờ kết quả từ API CAPTCHA trước khi gửi
Làm thế nào để thêm người giải CAPTCHA vào quy trình tự động hóa biểu mẫu

Một giải pháp CAPTCHA tự động hóa biểu mẫu là thành phần phục hồi lỗi cho luồng công việc biểu mẫu được phép, không phải là cách nhanh để vượt qua xác thực. CapSolver có thể cung cấp giải pháp reCAPTCHA thông qua API nhiệm vụ được tài liệu hóa trong khi ứng dụng của bạn giữ nguyên các đầu vào, bối cảnh trình duyệt, sự đồng ý và quy tắc nộp cuối cùng. Luồng an toàn nhất là phát hiện, chụp màn hình, tạo một nhiệm vụ, kiểm tra định kỳ với thời hạn, áp dụng kết quả trong cùng phiên và xác minh trạng thái xác nhận của biểu mẫu. Bài viết này

automation
Logo of CapSolver

Anh Tuan

13-Aug-2026

Luồng công việc RPA tạm dừng tại điểm kiểm tra CAPTCHA và tiếp tục sau khi có phản hồi từ CapSolver có giới hạn.
Cách xử lý CAPTCHA trong các quy trình tự động hóa RPA một cách an toàn

Tự động hóa CAPTCHA trong RPA chỉ đáng tin cậy khi CAPTCHA trở thành trạng thái quy trình rõ ràng. CapSolver có thể cung cấp lớp xử lý CAPTCHA thông qua tiện ích mở rộng trình duyệt hoặc API được tài liệu hóa, trong khi nền tảng RPA kiểm soát phạm vi quy trình, thông tin xác thực, thời gian chờ và kiểm tra doanh nghiệp. Điều này tránh được sự cố phổ biến khi robot tiếp tục nhấp chuột sau khi xác minh xuất hiện, mất trạng thái biểu mẫu hoặc gửi hai lần. Thiết kế sản xuất tạm dừng tại phát hiện, chờ một kết quả bị giới hạn, xác minh

automation
Logo of CapSolver

Anh Tuan

12-Aug-2026

Luồng công việc kiểm tra chất lượng tự động hóa xử lý điểm kiểm tra CAPTCHA với CapSolver
Cách xử lý CAPTCHA trong kiểm tra chất lượng tự động

Xử lý CAPTCHA trong kiểm thử QA tự động với các bộ fixture kiểm thử được kiểm soát, tích hợp trình duyệt CapSolver, số lần thử lại có giới hạn và các khẳng định đáng tin cậy.

automation
Logo of CapSolver

Anh Tuan

11-Aug-2026