
Anh Tuan
Data Science Expert

from cloakbrowser import launch.CloakBrowser là một gói trình duyệt dựa trên Chromium cho tự động hóa Playwright và Puppeteer. Kho lưu trữ chính thức của nó mô tả các thay đổi cấp nguồn cho các tín hiệu trình duyệt như canvas, WebGL, âm thanh, phông chữ, GPU, màn hình, WebRTC và hành vi liên quan đến tự động hóa. Trình khởi động Python trả về một đối tượng Playwright Browser tiêu chuẩn, do đó các phương thức quen thuộc như new_page(), locator, evaluate(), nhấp chuột và thao tác biểu mẫu vẫn có sẵn.
CloakBrowser không giải CAPTCHA. CapSolver cung cấp dịch vụ này: ứng dụng của bạn tạo một nhiệm vụ với các tham số thử thách, nhận được giải pháp và sử dụng trang hiện tại để nộp nó. Sự phân chia này quan trọng vì quản lý môi trường trình duyệt và xử lý CAPTCHA có đầu vào và chế độ lỗi khác nhau.
Nhiệm vụ cụ thể như sau:
CloakBrowser
-> khởi động Chromium và duy trì cookie, proxy, trang, và bối cảnh trình duyệt
-> đọc các tham số thử thách hiển thị cho phiên làm việc hiện tại
CapSolver
-> nhận loại nhiệm vụ được hỗ trợ và các tham số thử thách cần thiết
-> trả về một mã token hoặc kết quả nhận dạng hình ảnh
API Playwright
-> đưa kết quả trở lại trang cùng lúc
-> kích hoạt hàm gọi lại mong muốn hoặc nộp biểu mẫu
-> xác minh phản hồi của trang đích hoặc ứng dụng cuối cùng
Nếu bạn cần ôn tập Playwright trước khi tích hợp hai dịch vụ, xem từ điển Playwright của CapSolver tại https://www.capsolver.com/glossary/playwright và hướng dẫn tự động hóa trình duyệt Playwright tại https://www.capsolver.com/blog/automation/playwright-browser-automation.
Sử dụng quy trình này chỉ trên các trang web và ứng dụng bạn sở hữu hoặc được phép kiểm tra hoặc tự động hóa. Bạn sẽ cần:
Cài đặt các gói Python:
pip install cloakbrowser capsolver
Về giấy phép CloakBrowser, kho lưu trữ hiện tại mô tả cloakbrowser login để thiết lập tương tác và biến môi trường CLOAKBROWSER_LICENSE_KEY cho CI hoặc máy chủ. Giữ cả hai thông tin xác thực của nhà cung cấp bên ngoài kiểm soát nguồn. Biến môi trường hoặc quản lý bí mật an toàn hơn so với việc ghi khóa trực tiếp vào mã nguồn.
Ví dụ tối thiểu sau mở một trang, đọc tiêu đề của nó và đóng trình duyệt:
from cloakbrowser import launch
browser = launch(
headless=False,
humanize=True,
license_key="cb_...",
)
page = browser.new_page()
page.goto("https://example.com", wait_until="domcontentloaded")
print(page.title())
browser.close()
Các tùy chọn trình khởi động điều khiển môi trường trình duyệt:
| Tham số | Mục đích |
|---|---|
headless |
Chạy với hoặc không có cửa sổ trình duyệt hiển thị. |
humanize |
Kích hoạt hành vi tương tác được mô tả bởi CloakBrowser. |
proxy |
Định tuyến phiên trình duyệt qua một proxy được cấu hình. |
geoip |
Đồng bộ hóa cài đặt trình duyệt liên quan đến vị trí khi được hỗ trợ bởi cấu hình đã chọn. |
| cài đặt ngôn ngữ và múi giờ | Giữ các tín hiệu ngôn ngữ và thời gian nhất quán với phiên làm việc. |
license_key |
Cung cấp giấy phép CloakBrowser khi không được tải từ môi trường hoặc trạng thái đăng nhập. |
Đối với các thử thách liên quan đến phiên làm việc, tránh thay đổi proxy, agent người dùng, cookie hoặc bối cảnh trình duyệt giữa việc đọc thử thách và nộp giải pháp của nó. FAQ của CapSolver về định danh trình duyệt trong bảo mật web giải thích tại sao nhiều tín hiệu trình duyệt có thể được đánh giá cùng nhau.
Luồng SDK Python cơ bản thiết lập khóa API và gửi một đối tượng nhiệm vụ được hỗ trợ. Ví dụ này sử dụng các giá trị demo công khai của Google:
import capsolver
capsolver.api_key = "CAP-..."
solution = capsolver.solve(
{
"type": "ReCaptchaV2TaskProxyLess",
"websiteURL": "https://www.google.com/recaptcha/api2/demo",
"websiteKey": "6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-",
}
)
token = solution.get("gRecaptchaResponse")
if not isinstance(token, str) or not token:
raise RuntimeError(f"CapSolver không trả về mã reCAPTCHA: {solution}")
print("Token nhận được")
Các trường quan trọng là:
| Trường | Ý nghĩa |
|---|---|
type |
Loại nhiệm vụ CapSolver khớp với thử thách. |
websiteURL |
URL trang đầy đủ nơi thử thách xuất hiện. |
websiteKey |
Khóa trang được tìm thấy trong tích hợp trang. |
isInvisible |
Cờ tùy chọn chỉ được sử dụng khi trang triển khai phiên bản vô hình. |
Kiểm tra tài liệu CapSolver reCAPTCHA v2 trước khi triển khai sản xuất, và sử dụng các giá trị từ trang đang hoạt động thay vì sao chép tham số demo. Hướng dẫn giải reCAPTCHA v2 chi tiết hơn về lựa chọn nhiệm vụ và trường phản hồi.
Nhận Mã Khuyến Mã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ã khuyến mãi CAP26 khi nạp tiền cho tài khoản CapSolver để nhận thêm 5% khuyến mãi cho mỗi lần nạp — không giới hạn.
Nhận mã khuyến mãi ngay trong Bảng điều khiển CapSolver
Ví dụ đầy đủ dưới đây giữ việc điều hướng và nộp token bên trong cùng một trang CloakBrowser. Các lựa chọn CSS và hành vi nộp đơn là đặc trưng cho demo công khai; một ứng dụng thực tế có thể sử dụng hàm gọi lại, trường được quản lý bởi framework, hoặc luồng biểu mẫu khác.
import re
import capsolver
from cloakbrowser import launch
def inject_recaptcha_token(page, token):
if not isinstance(token, str) or not token:
raise ValueError("Một mã reCAPTCHA không rỗng là bắt buộc")
page.evaluate(
"""
(token) => {
const textarea = document.getElementById('g-recaptcha-response');
if (!textarea) {
throw new Error('g-recaptcha-response không được tìm thấy');
}
textarea.value = token;
}
""",
token,
)
with page.expect_navigation(
wait_until="domcontentloaded",
timeout=30_000,
):
page.click("#recaptcha-demo-submit")
return page.content()
def main():
capsolver.api_key = "CAP-..." # KHÓA_API_CAPSOLVER_CỦA_BẠN
browser = launch(
license_key="cb_...", # KHÓA_GIẤY_PHÉP_CLOAKBROWSER_CỦA_BẠN
headless=False,
locale="en-US",
)
try:
page = browser.new_page()
page.goto(
"https://www.google.com/recaptcha/api2/demo",
wait_until="domcontentloaded",
timeout=60_000,
)
solution = capsolver.solve(
{
"type": "ReCaptchaV2TaskProxyLess",
"websiteURL": page.url,
"websiteKey": "6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-",
}
)
token = solution.get("gRecaptchaResponse")
result_page = inject_recaptcha_token(page, token)
match = re.search(
r'<div class="recaptcha-success">(.*?)</div>',
result_page,
)
print(match.group(1) if match else "Xác minh thất bại")
finally:
browser.close()
if __name__ == "__main__":
main()
Chạy nó như một tập lệnh Python thông thường:
python cloakbrowser-capsolver.py
Trong sản xuất, tải khóa từ biến môi trường, thêm các lần lặp có giới hạn xung quanh các lỗi API hoặc điều hướng tạm thời, ghi lại ID nhiệm vụ CapSolver mà không ghi lại bí mật, và xác minh kết quả kinh doanh cuối cùng. CapSolver cũng cung cấp FAQ tập trung vào tích hợp giải CAPTCHA với Playwright hoặc Puppeteer.
Một số quy trình kiểm tra được ủy quyền hiển thị CAPTCHA dưới dạng hình ảnh thay vì widget dựa trên token. Trong trường hợp đó, chụp hoặc trích xuất hình ảnh, chuyển đổi nó thành Base64 mà không có tiền tố Data URL, và gửi nó đến ImageToTextTask.
Hình ảnh dưới đây từ quy trình ban đầu cho thấy phần tử hình ảnh và trường nhập trên demo tính năng BotDetect:

import capsolver
from cloakbrowser import launch
TARGET_URL = "https://captcha.com/demos/features/captcha-demo.aspx"
browser = launch(headless=False, humanize=True)
try:
page = browser.new_page()
page.goto(TARGET_URL, wait_until="domcontentloaded")
image_src = page.locator("#demoCaptcha_CaptchaImage").get_attribute("src")
if not image_src or "," not in image_src:
raise RuntimeError("Hình ảnh CAPTCHA không phải là Data URL")
base64_image = image_src.split(",", 1)[1].replace("\n", "")
solution = capsolver.solve(
{
"type": "ImageToTextTask",
"websiteURL": page.url,
"module": "common",
"body": base64_image,
}
)
text = solution.get("text")
if not isinstance(text, str) or not text:
raise RuntimeError(f"CapSolver không trả về văn bản OCR: {solution}")
page.locator("#captchaCode").fill(text)
page.locator("#validateCaptchaButton").click()
finally:
browser.close()
Các lựa chọn được liên kết cố ý với trang demo. Kiểm tra trang đích được ủy quyền và sử dụng các lựa chọn hình ảnh, nhập và nộp thực tế của nó.
ImageToTextTask có thể sử dụng các mô-đun khác nhau cho các định dạng hình ảnh được hỗ trợ. Phần mô tả mô-đun ban đầu được giữ lại đây để tham khảo:

Khi một mô-đun được hỗ trợ chấp nhận nhiều hình ảnh, gửi mảng được mô tả cho mô-đun đó và đọc câu trả lời tương ứng:
solution = capsolver.solve(
{
"type": "ImageToTextTask",
"module": "number",
"images": [base64_image],
}
)
answers = solution["answers"]
Tên mô-đun, trường yêu cầu và định dạng được hỗ trợ có thể thay đổi, vì vậy hãy kiểm tra chúng với tài liệu ImageToTextTask. Đối với mẫu API Python rộng hơn, xem cách tích hợp API giải CAPTCHA trong Python.
Kiến trúc trình duyệt vẫn giữ nguyên, nhưng nhiệm vụ CapSolver và tham số trang phải khớp với triển khai v3. Đặc biệt:
Không mở một trang mới mà không có cookie và trạng thái phiên ban đầu chỉ để nộp mã token. Điều này phá vỡ bối cảnh mà ứng dụng đích có thể sử dụng khi đánh giá kết quả.
Mã này khởi động Chromium của Playwright, không phải CloakBrowser:
from playwright.sync_api import sync_playwright
pw = sync_playwright().start()
browser = pw.chromium.launch()
Sử dụng trình khởi động CloakBrowser thay thế:
from cloakbrowser import launch
browser = launch()
Theo kho lưu trữ CloakBrowser, playwright install-deps chromium có thể hữu ích trên Linux khi thiếu thư viện hệ thống. Chạy playwright install chromium khác biệt: nó tải về trình duyệt của Playwright và không sửa chữa đường dẫn khởi động CloakBrowser.
Kiểm tra từng ranh giới theo thứ tự:
websiteURL là URL đầy đủ được sử dụng bởi trang hiện tại;websiteKey thuộc về trang đó;Xác minh rằng dữ liệu hình ảnh là Base64 hợp lệ, tiền tố Data URL đã được loại bỏ, mô-đun được chọn hỗ trợ hình ảnh, và trường phản hồi khớp với tài liệu hiện tại. Lưu lại mã lỗi và ID nhiệm vụ CapSolver để gỡ lỗi, nhưng không ghi lại khóa API hoặc dữ liệu trang nhạy cảm.
Không phải mọi lần nộp đều gây ra điều hướng đầy đủ. Một số trang cập nhật DOM hoặc thực hiện yêu cầu XHR thay thế. Thay thế expect_navigation() bằng điều kiện thực sự đại diện cho thành công: một locator trở nên hiển thị, thay đổi URL, sự kiện phản hồi, hoặc phần tử trạng thái cụ thể của ứng dụng. Tài liệu API Browser chính thức của Playwright là nguồn tốt nhất cho hành vi API hiện tại.
Hệ thống CAPTCHA là các cơ chế kiểm soát truy cập và ngăn chặn lạm dụng. Sử dụng CapSolver và CloakBrowser chỉ cho tự động hóa hợp pháp trên các hệ thống bạn sở hữu hoặc có sự cho phép rõ ràng để kiểm thử. Tôn trọng các điều khoản của trang web, giới hạn tốc độ, yêu cầu về quyền riêng tư và các luật pháp có liên quan. Không sử dụng tự động hóa để truy cập dữ liệu riêng tư, tạo lưu lượng gây lạm dụng hoặc can thiệp vào người dùng khác.
Đối với kiểm thử chất lượng (QA) và giám sát, hãy ưu tiên các môi trường kiểm thử chuyên dụng và khóa kiểm thử của nhà cung cấp khi có sẵn. Ghi lại URL trang, loại tác vụ, ID tác vụ, thời gian đã trôi qua và trạng thái ứng dụng cuối cùng để có thể truy xuất lỗi mà không lưu trữ thông tin đăng nhập hoặc dữ liệu cá nhân. Hướng dẫn Tự động hóa CAPTCHA cho kiểm thử chất lượng cung cấp thêm các mẫu cho quy trình kiểm thử có kiểm soát.
CloakBrowser có thể cung cấp môi trường trình duyệt tương thích Playwright, trong khi CapSolver xử lý các tác vụ CAPTCHA được hỗ trợ. Việc tách biệt các trách nhiệm này giúp quy trình dễ kiểm thử hơn: đọc thử thách từ trang hiện tại, yêu cầu giải pháp phù hợp, gửi nó trong cùng một ngữ cảnh và xác minh kết quả ứng dụng.
Thử CapSolver cho quy trình CloakBrowser hoặc Playwright được ủy quyền, và tham khảo tài liệu hiện tại trước khi chuyển mã demo vào sản xuất.
Câu hỏi: CloakBrowser có phải là người giải CAPTCHA không?
Không. CloakBrowser cung cấp trình duyệt Chromium và giao diện tự động hóa tương thích Playwright. Một dịch vụ riêng biệt như CapSolver xử lý các tác vụ CAPTCHA được hỗ trợ.
Câu hỏi: Một đoạn script Playwright hiện có có thể sử dụng CloakBrowser không?
Thông thường là được. Thay thế đường dẫn khởi động trình duyệt bằng from cloakbrowser import launch, sau đó tiếp tục sử dụng đối tượng Playwright Browser, trang, locator và phương thức đánh giá. Kiểm tra các tùy chọn và phụ thuộc đặc trưng của trình duyệt trong môi trường của bạn.
Câu hỏi: Tại sao kết quả CAPTCHA phải được gửi trong cùng một ngữ cảnh trình duyệt?
Ứng dụng mục tiêu có thể liên kết thử thách với cookie, địa chỉ proxy, tín hiệu trình duyệt, URL hoặc dữ liệu phiên khác. Chuyển đổi ngữ cảnh có thể khiến các tham số thử thách hợp lệ trở nên không nhất quán.
Câu hỏi: Tôi ở đâu có thể tìm thấy khóa trang web reCAPTCHA?
Sử dụng khóa được cấu hình trên trang bạn được ủy quyền để tự động hóa. Nó có thể xuất hiện trong mã nhúng hoặc script trang. Không sao chép khóa từ hướng dẫn hoặc miền không liên quan.
Câu hỏi: Một token của CapSolver đảm bảo thành công không?
Không. Một token là kết quả trung gian. Điều kiện thành công cuối cùng là phản hồi từ trang web hoặc ứng dụng mục tiêu sau khi token được gửi đúng và đúng thời hạn.
Câu hỏi: Tích hợp này có thể xử lý CAPTCHA hình ảnh không?
Nhiệm vụ ImageToTextTask của CapSolver hỗ trợ các mô-đun nhận dạng hình ảnh được tài liệu hóa. Trích xuất hình ảnh từ trang được ủy quyền, gửi dữ liệu Base64 yêu cầu và nhập văn bản trả về thông qua cùng một trang CloakBrowser.
Câu hỏi: Các khóa API và giấy phép có nên xuất hiện trong script không?
Không. Các ví dụ sử dụng các mẫu dễ nhận biết. Mã sản xuất nên đọc bí mật từ biến môi trường hoặc quản lý bí mật và tuyệt đối không đưa chúng vào kiểm soát nguồn.
Câu hỏi: Tôi nên kiểm thử tích hợp này một cách an toàn như thế nào?
Bắt đầu với các demo của nhà cung cấp hoặc ứng dụng bạn kiểm soát. Sử dụng tốc độ yêu cầu có giới hạn, ghi lại ID tác vụ và kết quả cuối cùng, và chỉ chuyển sang trang web sản xuất khi bạn có sự cho phép và nhu cầu vận hành rõ ràng.
Đánh giá CloakBrowser năm 2026 bao gồm tính năng, giá cả, giấy phép, các tùy chọn triển khai, ưu điểm, hạn chế, các lựa chọn thay thế và các trường hợp sử dụng lý tưởng.

Xây dựng một bộ giải reCAPTCHA v3 của CrewAI với CapSolver, công cụ có kiểu, hành động trang được tin cậy, gửi token phía máy chủ, chính sách điểm số và xác minh trang.
