BinProxy
Hướng dẫn

Lỗi proxy thường gặp (407, 502, timeout…) và cách khắc phục từng bước

Gom các lỗi proxy thường gặp: 407 sai thông tin đăng nhập, không kết nối được, hết thời gian chờ, 502, 503, 504, 429, lỗi SSL và lỗi bắt tay, kèm ý nghĩa và cách khắc phục từng bước cho mọi dịch vụ proxy.

7 phút đọc
Lập trình viên chống cằm nhìn máy tính xách tay vào ban đêm bên đèn bàn và cuốn sổ ghi chú
Mục lục
  1. Bước đầu tiên: xem lỗi đến từ đâu
  2. Lỗi 407: proxy cần xác thực
  3. Không kết nối được tới proxy
  4. Hết thời gian chờ khi đọc dữ liệu
  5. Lỗi 502, 503, 504: trục trặc ở cổng trung gian
  6. Lỗi 429: website bảo bạn đi chậm lại
  7. Lỗi SSL và lỗi bắt tay proxy
  8. Những trường hợp riêng của BinProxy
  9. Câu hỏi thường gặp
  10. Proxy báo 407 dù tôi nhập đúng mật khẩu?
  11. Vì sao proxy lúc được lúc không?
  12. Lỗi 429 có phải do proxy không?
  13. Làm sao biết lỗi nằm ở proxy hay ở website?
  14. Đổi sang SOCKS5 có hết lỗi không?

Proxy đang chạy bình thường bỗng báo lỗi, và thông báo thì toàn là mã số với tiếng Anh khó hiểu. Đừng lo, phần lớn lỗi proxy chỉ rơi vào vài nhóm quen thuộc, và mỗi nhóm có cách sửa khá đơn giản. Bài này gom lại các lỗi proxy thường gặp, ý nghĩa của từng mã lỗi và cách khắc phục từng bước, dù bạn dùng dịch vụ proxy nào. Phần cuối có thêm những trường hợp riêng của BinProxy.

Bước đầu tiên: xem lỗi đến từ đâu

Khi một yêu cầu đi qua proxy, lỗi có thể đến từ ba chỗ: máy của bạn (cấu hình sai, mạng nhà bạn), proxy (sai thông tin đăng nhập, không có IP phù hợp) hoặc website đích (từ chối hay quá tải). Biết lỗi nằm ở đâu là sửa được một nửa.

Cách nhanh nhất để xem là chạy lại yêu cầu bằng cURL với chế độ hiển thị chi tiết:

curl -v -x "http://USER:[email protected]:80" https://ipinfo.io/json

Bạn để ý những dòng bắt đầu bằng <: đó là câu trả lời. Nếu ngay sau lệnh CONNECT đã có một mã lỗi, lỗi nằm ở phía proxy. Nếu đường hầm mở xong mà website trả mã lỗi, vấn đề nằm ở website.

Bảng tra nhanh lỗi proxy thường gặp: mã lỗi, lỗi đến từ đâu và cách khắc phục

Lỗi 407: proxy cần xác thực

Theo tiêu chuẩn HTTP RFC 9110, mã 407 Proxy Authentication Required nghĩa là bạn phải đăng nhập mới dùng được proxy. Trong thực tế, nó gần như luôn có nghĩa là tên đăng nhập hoặc mật khẩu sai.

Cách khắc phục:

  1. Sao chép lại dòng proxy bằng nút sao chép, đừng bôi đen bằng tay, vì rất dễ thiếu một ký tự.
  2. Kiểm tra bạn có vừa đổi user/mật khẩu proxy không. Thông tin cũ sẽ hết hiệu lực.
  3. Kiểm tra phần bộ lọc trong tên đăng nhập. Một khoá viết sai như -cc- thành -c- cũng có thể làm cả tên đăng nhập bị từ chối.

Không kết nối được tới proxy

Nhóm lỗi này xảy ra trước cả khi proxy kịp trả lời. Trong cURL, bạn sẽ thấy các mã thoát sau (theo tài liệu của cURL):

  • Mã 5, "Could not resolve proxy": không tìm thấy địa chỉ proxy. Thường là gõ sai tên máy chủ, ví dụ thiếu một chữ trong proxy.binproxy.com.
  • Mã 7, "Failed to connect": tìm thấy địa chỉ nhưng không kết nối được. Hãy kiểm tra số cổng, và xem tường lửa hay mạng công ty có chặn cổng đó không.
  • Mã 28, "Operation timeout": chờ quá lâu mà không có phản hồi. Có thể do mạng nhà bạn, hoặc IP dân cư phía sau đang chậm.

Trong Python với thư viện requests, các lỗi tương ứng là ProxyError và ConnectTimeout. Theo tài liệu requests, yêu cầu gặp ConnectTimeout luôn an toàn để thử lại.

Hết thời gian chờ khi đọc dữ liệu

Nếu kết nối đã mở nhưng dữ liệu về rất chậm rồi dừng hẳn, bạn sẽ gặp ReadTimeout trong Python, hoặc mã 28 hay mã 56 ("Failure in receiving network data") trong cURL. Với proxy dân cư, nguyên nhân hay gặp là thiết bị đứng sau IP vừa mất mạng giữa chừng.

Cách khắc phục là thử lại. Với proxy xoay, lần thử sau sẽ đi ra từ một IP khác. Với proxy giữ IP, bạn tạo một phiên mới. Bài cách dùng proxy với Python requests có sẵn đoạn code tự thử lại với thời gian chờ tăng dần.

Lỗi 502, 503, 504: trục trặc ở cổng trung gian

Ba mã này đều thuộc nhóm lỗi máy chủ trong RFC 9110:

  • 502 Bad Gateway: proxy nhận được câu trả lời không hợp lệ từ phía sau.
  • 503 Service Unavailable: tạm thời không xử lý được, thường do quá tải hoặc bảo trì, và sẽ ổn sau một lúc.
  • 504 Gateway Timeout: proxy chờ phía sau quá lâu mà không được trả lời.

Cả ba thường là lỗi tạm thời. Bạn chờ vài giây rồi thử lại, mỗi lần chờ lâu hơn lần trước. Nếu mã lỗi xuất hiện liên tục trên mọi website, hãy báo cho nhà cung cấp proxy.

Lỗi 429: website bảo bạn đi chậm lại

Mã 429 Too Many Requests không phải lỗi của proxy. Theo RFC 6585, nó nghĩa là bạn đã gửi quá nhiều yêu cầu trong một khoảng thời gian, và website có thể kèm tiêu đề Retry-After để nói bạn nên chờ bao lâu.

Cách đúng là làm theo lời website: giảm tốc độ, chờ đúng thời gian trong Retry-After, thêm khoảng nghỉ giữa các yêu cầu. Ngay cả Google cũng tự giảm tốc độ thu thập khi một website trả về 429 hoặc 503. Bài web scraping là gì giải thích thêm vì sao đi chậm mới là cách bền nhất.

Đầu dây mạng rút ra nằm cạnh cổng mạng trống của bộ phát Wi-Fi, phía sau là máy tính xách tay mờ

Lỗi SSL và lỗi bắt tay proxy

  • Mã 35 trong cURL, hoặc SSLError trong Python: có vấn đề khi thiết lập kết nối mã hoá. Bạn kiểm tra đồng hồ máy có đúng giờ không, phần mềm có quá cũ không, và mạng của bạn có phần mềm nào chặn hay giải mã HTTPS không.
  • Mã 97, "Proxy handshake error": bước chào hỏi với proxy thất bại, hay gặp khi dùng sai giao thức. Ví dụ phần mềm nói SOCKS5 trong khi bạn khai báo là HTTP. Hãy kiểm tra phần đầu dòng proxy là http:// hay socks5h://.
  • "Missing dependencies for SOCKS support" trong Python: bạn chưa cài requests[socks].

Những trường hợp riêng của BinProxy

Ngoài các lỗi chung ở trên, có bốn trường hợp bạn nên biết khi dùng BinProxy:

  1. Bộ lọc quá hẹp, không có IP nào khớp. Khi bạn lọc tới thành phố, mã bưu chính hay nhà mạng mà lúc đó không có IP nào phù hợp, kết nối sẽ bị từ chối thay vì dùng IP ở nơi khác. Hãy nới bộ lọc lên cấp tỉnh hoặc quốc gia, theo hướng dẫn trong bài tạo proxy theo tỉnh, thành phố và nhà mạng.
  2. Hết dung lượng. Khi GB về 0, proxy tạm ngừng cho tới khi bạn mua thêm. Trang Tổng quan và trang Tạo proxy đều hiện dung lượng còn lại.
  3. Vừa đổi user/mật khẩu. Sau khi bấm "Đổi user/mật khẩu", thông tin cũ ngừng hoạt động sau khoảng một phút, kéo theo mọi dòng proxy cũ. Bạn sao chép lại danh sách mới vào phần mềm.
  4. IP giữ phiên đổi giữa chừng. IP dân cư có thể đổi sớm hơn thời gian giữ nếu thiết bị phía sau mất kết nối. Đây không phải lỗi, nhưng code của bạn nên chịu được chuyện này.

Nếu đã thử hết mà vẫn chưa được, bạn mở một yêu cầu ở mục Hỗ trợ trong bảng điều khiển, kèm lệnh đã chạy và thông báo lỗi (nhớ che mật khẩu nhé). Còn nếu bạn đang chọn dịch vụ proxy mới, bảng giá của BinProxy ở đây.

Câu hỏi thường gặp

Proxy báo 407 dù tôi nhập đúng mật khẩu?

Hãy kiểm tra cả phần tên đăng nhập, vì ở proxy dân cư nó chứa luôn bộ lọc vị trí. Một ký tự thừa, một khoảng trắng hay một khoá lọc viết sai đều có thể làm proxy từ chối đăng nhập.

Vì sao proxy lúc được lúc không?

Với proxy dân cư, mỗi IP là kết nối của một hộ gia đình, nên thỉnh thoảng có kết nối chậm hoặc rớt. Cách xử lý là đặt thời gian chờ hợp lý và tự thử lại. Nếu tỉ lệ lỗi rất cao, hãy kiểm tra bộ lọc có quá hẹp không.

Lỗi 429 có phải do proxy không?

Không. Đó là website báo bạn gửi quá nhiều yêu cầu. Hãy giảm tốc độ và chờ theo tiêu đề Retry-After nếu website có gửi.

Làm sao biết lỗi nằm ở proxy hay ở website?

Chạy lại bằng curl -v. Nếu lỗi xuất hiện ngay khi kết nối tới proxy hoặc sau lệnh CONNECT, lỗi ở phía proxy. Nếu đã kết nối tới website rồi mới có mã lỗi, vấn đề nằm ở website.

Đổi sang SOCKS5 có hết lỗi không?

Thường là không, vì phần lớn lỗi không liên quan tới giao thức. Chỉ nên đổi khi phần mềm của bạn yêu cầu SOCKS5. Với Playwright thì ngược lại, bạn nên dùng HTTP vì trình duyệt không hỗ trợ SOCKS5 có mật khẩu.

Bài viết liên quan