Giải captcha có proxy hay không proxy: cần loại task nào?
Scarnox cung cấp PopularCaptcha dưới hai dạng: proxyless, khi Scarnox giải captcha qua mạng riêng của mình, và biến thể proxy, khi bạn gửi proxy mà bot của bạn dùng. Cả hai trả về token theo cùng một cấu trúc phản hồi, và cả hai đều miễn phí khi lần giải thất bại. Khác biệt duy nhất trong request là proxy.
Proxyless là điểm khởi đầu đúng cho phần lớn trang web. Chỉ gửi proxy của riêng bạn khi trang gắn token với một địa chỉ IP.
Hai loại task
| Loại task | Bạn gửi gì |
|---|---|
PopularCaptchaTaskProxyless | sitekey và URL trang |
PopularCaptchaTask (biến thể proxy) | sitekey, URL trang và proxy của bạn |
Cả hai đều là task PopularCaptcha. Phần còn lại của request, phản hồi và cách xử lý token đều giống nhau.
Bắt đầu với proxyless
Các lần giải proxyless chạy trên mạng riêng của Scarnox. Tích hợp là cách đơn giản nhất bạn có thể viết, và với phần lớn trang web, token hoạt động bất kể IP nào gửi nó sau đó. Nếu bạn chưa chắc cần loại nào, hãy bắt đầu ở đây:
{
"captcha_type": "PopularCaptchaTaskProxyless",
"site_key": "10000000-ffff-ffff-ffff-000000000001",
"site_url": "https://example.com/signup"
}
Gửi proxy khi token gắn với IP
Một số trang kiểm tra rằng IP đã giải captcha cũng chính là IP gửi form. Triệu chứng rõ ràng: token trả về không có lỗi, nhưng trang từ chối mỗi lần. Cách sửa là giải qua cùng proxy mà bot của bạn dùng cho phần còn lại của phiên:
{
"captcha_type": "PopularCaptchaTask",
"site_key": "10000000-ffff-ffff-ffff-000000000001",
"site_url": "https://example.com/signup",
"proxy": "http://user:pass@203.0.113.10:8080"
}
Định dạng proxy là http://user:pass@host:port. Dùng cùng một proxy cho lần giải và lần gửi, và giữ nó cố định (sticky) trong suốt phiên. Đổi proxy giữa lần giải và lần gửi sẽ làm lỗi lệch IP quay lại.
Cách quyết định
Trả lời lần lượt các câu hỏi sau:
- Token có hoạt động khi bạn gửi nó từ một máy khác không? Nếu có, dùng proxyless.
- Trang có chỉ từ chối token khi IP gửi khác IP đã giải không? Nếu có, gửi proxy.
- Trang có dùng cookie phiên hoặc kiểm tra thiết bị gắn với một IP không? Nếu có, gửi proxy và giữ cùng IP cho toàn bộ phiên.
Kiểm thử cả hai trên gói dùng thử miễn phí trước khi cam kết. Tạo tài khoản và bắt đầu với tín dụng dùng thử miễn phí, không cần thẻ, rồi chạy cùng luồng một lần cho mỗi loại.
Nếu proxy của bạn chết
Lần giải thất bại thì miễn phí. Nếu proxy đã chết hoặc bị trang đích chặn, lần giải thất bại và bạn không bị tính phí. Hãy kiểm tra proxy trước khi chạy, xem định dạng của nó, và đảm bảo trang đích không chặn dải địa chỉ đó. Một proxy hoạt động với trình duyệt nhưng thất bại khi giải thường là lỗi định dạng.
Giữ thông tin xác thực proxy khỏi log
Địa chỉ proxy có mật khẩu là một bí mật. Lưu nó trong biến môi trường hoặc trình quản lý bí mật. Đừng in ra log, đừng commit, và đừng dán vào báo lỗi. Nếu bạn ghi log request giải để gỡ lỗi, hãy xóa trường proxy trước.
Chọn proxy cho biến thể
Lần giải hoạt động với bất kỳ proxy nào bạn gửi, nhưng token chỉ hữu ích khi cùng một IP gửi form. Hãy dùng địa chỉ tĩnh hoặc dân cư mà bạn kiểm soát cho toàn bộ phiên, không phải một pool đổi mỗi request. Các trang gắn token với IP thường cũng gắn phiên, nên một pool xoay vòng làm hỏng luồng theo hai cách.
Còn tốc độ thì sao?
Cả hai biến thể đều trả về token từ một request chặn, không cần vòng lặp polling. Timeout cũng giống nhau: khoảng 185 giây. Hãy chọn biến thể theo câu hỏi về IP, không theo tốc độ.
Phiên và proxy trong thực tế
Dùng cùng một proxy từ request đầu tiên đến request cuối cùng của phiên. Một luồng điển hình tải trang đăng ký, giải captcha và gửi form. Nếu tải trang đi qua một địa chỉ và lần giải đi qua địa chỉ khác, một trang kiểm tra IP có thể từ chối token dù mọi thứ khác trông đúng.
Giữ một cấu hình proxy duy nhất trong code và truyền nó cho mọi bước chạm tới trang. Nếu các phần khác của công việc xoay proxy để scraping, hãy cho luồng captcha một proxy cố định riêng. Trộn lẫn hai thứ là một trong những lý do phổ biến nhất khiến token chạy được khi thử nghiệm lại thất bại khi chạy thật.
Chỉ đặt trường proxy trên biến thể dùng nó. Gửi proxy với loại task proxyless không cải thiện lần giải, và nó làm khó hơn việc biết run nào dùng chế độ nào khi đọc log.
Đọc log để có câu trả lời đúng
Nếu bạn chưa chắc trang cần chế độ nào, hãy chạy cả hai trên cùng một trang và so sánh. Ghi lại từng token có được chấp nhận hay không, cùng loại task và việc có gửi proxy hay không. Một trang luôn chấp nhận token proxyless thì không cần biến thể proxy. Một trang chỉ từ chối chúng ở một số lần chạy nhất định cho thấy có kiểm tra IP. Hãy để log quyết định, đừng đoán.
Bước tiếp theo
- Cách giải PopularCaptcha bằng Python
- Giải captcha vô hình
- Retry và xử lý lỗi cho môi trường production
- Dùng thử giải captcha miễn phí
Bắt đầu với tín dụng dùng thử miễn phí, không cần thẻ: tạo tài khoản và thử cả hai loại task trên một trang.