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

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
capsolvervà gọicapsolver.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
pip install "skyvern[local]"
pip install --upgrade capsolver
python -m playwright install chromium
2. Mã CapSolver
Python
# 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
token = solution["gRecaptchaResponse"]
Vai trò của các tham số:
websiteURL và websiteKey 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
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:
-
Ghi vào trường ẩn
g-recaptcha-response; -
Gọi hàm gọi lại JavaScript được cấu hình trên trang;
-
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:
-
websiteURLcó phải là địa chỉ trang hiện tại không? -
websiteKeycó 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.

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
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
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
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.

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
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
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 ReCaptchaV2TaskProxyLess và ImageToTextTask).
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

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.

Anh Tuan
16-Sep-2026

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.

Anh Tuan
31-Aug-2026

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.

Anh Tuan
21-Aug-2026

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

Anh Tuan
13-Aug-2026

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

Anh Tuan
12-Aug-2026

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.

Anh Tuan
11-Aug-2026


