Cách vượt captcha cho tự động hóa và kiểm thử hợp pháp
Vượt captcha một cách hợp pháp nghĩa là đưa công việc tự động của bạn qua một thử thách mà không vi phạm quy định của website hay gây hại cho người dùng của nó. Trên thực tế, điều đó bao gồm bốn trường hợp: tự động hóa một quy trình bạn sở hữu, kiểm thử website của chính bạn, xây dựng công cụ hỗ trợ khả năng tiếp cận, và thu thập dữ liệu công khai với tốc độ có trách nhiệm. Cách trung thực và nhanh nhất thường là tránh kích hoạt captcha ngay từ đầu. Khi không thể tránh, một API bộ giải như Scarnox có thể trả về token mà trang đang chờ.
Hướng dẫn này trình bày các cách tiếp cận theo thứ tự nên thử, và đánh dấu những ranh giới bạn không nên vượt qua.
Bắt đầu bằng việc hỏi vì sao captcha xuất hiện
Captcha là một tín hiệu. Website đã quyết định rằng một yêu cầu trông như tự động hóa hoặc rủi ro. Trước khi tìm cách vượt thử thách, hãy kiểm tra điều gì đã gây ra nó:
- Tần suất yêu cầu. Nhiều captcha chỉ xuất hiện sau một đợt bùng nổ yêu cầu từ một địa chỉ.
- Thiếu trạng thái phiên. Một khách truy cập đến mà không có cookie, lịch sử hay đăng nhập trông giống một scraper.
- Tín hiệu trình duyệt. Trình duyệt headless và cài đặt tự động hóa mặc định thường bị đánh dấu. Hướng dẫn phát hiện trình duyệt headless giải thích các dấu hiệu phổ biến.
- Uy tín mạng. Địa chỉ trung tâm dữ liệu bị soi kỹ hơn kết nối gia đình.
Khắc phục nguyên nhân thường loại bỏ captcha hoàn toàn, và điều đó tốt hơn là giải nó trong mọi yêu cầu.
Thử các cách tiếp cận tránh thử thách
- Dùng API chính thức nếu có. Nhiều website công bố dữ liệu qua API với khóa và giới hạn riêng. Con đường đó nhanh hơn, ổn định hơn và được phép rõ ràng.
- Chậm lại và giãn đều yêu cầu. Thêm độ trễ giữa các yêu cầu, giới hạn số luồng đồng thời, và lùi lại khi nhận cảnh báo. Nhịp độ đều vài yêu cầu mỗi phút trông rất khác với một đợt hàng trăm yêu cầu đối với website.
- Giữ phiên. Tái sử dụng cookie và một hồ sơ trình duyệt nhất quán trong suốt một phiên, thay vì bắt đầu lại ở mỗi trang. Hướng dẫn fingerprint trình duyệt giải thích vì sao điều này quan trọng.
- Kiểm tra robots.txt và điều khoản sử dụng trước khi bắt đầu, không phải sau khi bị chặn. Tôn trọng những gì website yêu cầu.
Dùng khóa thử nghiệm và môi trường kiểm thử
Nếu captcha đang chặn môi trường staging của bạn, đừng trỏ bài kiểm thử vào production để đi vòng. Hầu hết nhà cung cấp captcha, kể cả Google và Cloudflare, đều công bố khóa thử nghiệm cho việc phát triển. Các khóa này tạo ra một token hợp lệ mà không có thử thách thật, và chúng là công cụ đúng cho kiểm thử tự động. Bạn cũng có thể nhờ đội của mình tắt captcha trên máy chủ staging. Hướng dẫn captcha trong kiểm thử tự động trình bày cách thiết lập này.
Giải captcha qua API khi nó xuất hiện trong công việc hợp pháp
Một số captcha vẫn có thể xuất hiện trong công việc hợp pháp dù đã điều tiết tốc độ tốt. Ví dụ là một tác vụ giám sát cổng thông tin của nhà cung cấp mà bạn làm việc cùng. Trong trường hợp đó, một API bộ giải là công cụ phù hợp.
Scarnox là một API giải captcha. Hiện tại loại tác vụ duy nhất đang chạy là PopularCaptcha, proxyless. Mã của bạn gửi sitekey và URL trang, và nhận về một token để gửi cùng form:
import requests
r = requests.post(
"https://api.scarnox.com/api/tasks/create",
headers={"Authorization": "Bearer scarnox_YOURAPIKEY"},
json={
"captcha_type": "PopularCaptchaTaskProxyless",
"site_key": "10000000-ffff-ffff-ffff-000000000001",
"site_url": "https://example.com/login",
},
timeout=185,
)
data = r.json()
token = data["solution"]["token"] if data.get("errorId") == 0 else None
Token hết hạn sau khoảng hai phút, vì vậy hãy gửi ngay. Hướng dẫn giải captcha bằng Python có ví dụ đầy đủ. Các loại captcha khác, bao gồm reCAPTCHA, Cloudflare Turnstile và Arkose, sắp ra mắt. Cho đến khi chúng được phát hành, đừng giả định bộ giải xử lý được chúng.
Khả năng tiếp cận cũng là một lý do hợp pháp
Captcha là rào cản đối với những người dùng trình đọc màn hình, người chuyển thiết bị, hoặc người có khiếm thị hay khó khăn về nhận thức. Nếu bạn xây dựng công cụ hỗ trợ khả năng tiếp cận, hoặc bạn đại diện cho những người dùng không thể hoàn thành một thử thách, bước đầu tiên đúng là hỏi chủ website về một phương án thay thế dễ tiếp cận. Nhiều website có sẵn phương án đó. Tự động hóa captcha không thể thay thế cuộc trao đổi này.
Điều không hợp pháp
Một số cách dùng giải captcha nằm ngoài giới hạn, bất kể lý do được đưa ra là gì. Đừng dùng bộ giải hay bất kỳ cách vượt nào cho:
- credential stuffing hoặc mọi nỗ lực đăng nhập vào tài khoản bạn không sở hữu;
- đăng ký spam, đánh giá giả hoặc tài khoản giả;
- mua vé, hàng tồn kho hay hàng hóa có số lượng giới hạn trước các khách hàng khác;
- tấn công form đăng nhập, luồng đặt lại mật khẩu hoặc giới hạn tần suất của dịch vụ người khác.
Những cách dùng này gây hại cho người thật, vi phạm điều khoản website và khiến bạn đối mặt với rủi ro pháp lý nghiêm trọng. Scarnox không hỗ trợ chúng, và hướng dẫn này cũng không đề cập đến chúng.
Thu thập dữ liệu có trách nhiệm
Nếu cách vượt của bạn nhằm thu thập dữ liệu công khai, hãy ghi nhớ những điểm sau:
- Kiểm tra robots.txt và điều khoản của website. Một website cấm scraping đã cho bạn biết nó mong đợi điều gì.
- Đặt giới hạn tần suất hợp lý và lùi lại khi gặp lỗi. Làm quá tải một website nhỏ là một tác hại thật sự.
- Không thu thập dữ liệu cá nhân mà bạn không cần. Dữ liệu cá nhân chịu sự điều chỉnh của các luật như GDPR, và thu thập một cách cẩu thả sẽ tạo ra trách nhiệm pháp lý. Hướng dẫn web scraping có hợp pháp không giải thích các cân nhắc chính.
Tóm tắt
Tránh captcha trước bằng cách khắc phục nguyên nhân. Dùng khóa thử nghiệm cho kiểm thử. Dùng API bộ giải cho các công việc hợp pháp vẫn gặp thử thách, trong phạm vi các loại tác vụ đang chạy. Tránh xa những cách dùng đã liệt kê ở trên, và scrape với nhịp độ mà website có thể chịu được.