Lỗi 502 Bad Gateway proxy: xác định ai đang trả lỗi
Cập nhật:
502 Bad Gateway có nghĩa là một máy đứng giữa, ở đây có thể là proxy của bạn hoặc máy chủ trung gian của chính website, đã chuyển yêu cầu đi nhưng không nhận lại được câu trả lời hợp lệ. Cùng một con số nhưng có hai thủ phạm rất khác nhau, nên trước khi sửa hãy xác định ai đang trả 502.
Proxy trả 502 trông như thế nào
Chúng tôi cho proxy thử nghiệm trả 502 và ghi lại phản hồi, viết lại với 203.0.113.10:8080 và user123:pass456:
- Trang HTTPS:
curl -x http://user123:[email protected]:8080 https://example.comin racurl: (56) CONNECT tunnel failed, response 502. - Trang HTTP thường: curl nhận về mã trạng thái
502. - Chrome mở trang HTTPS qua proxy đó báo
ERR_TUNNEL_CONNECTION_FAILED, không hiện trang 502 nào. - Công cụ check proxy hiện
HTTP 502; mã khác cũng hiện theo dạngHTTP <mã>.
Mẹo phân biệt: thấy trang 502 trên website HTTPS
Với website HTTPS, proxy chỉ mở đường hầm; nó không thể chèn trang của mình vào bên trong kết nối đã mã hoá. Nếu proxy từ chối, Chrome báo ERR_TUNNEL_CONNECTION_FAILED. Vì vậy, khi bạn thấy hẳn một trang "502 Bad Gateway" hiển thị trên địa chỉ https://, trang đó gần như chắc chắn đến từ máy chủ của website, không phải từ proxy.
Kiểm tra lại bằng cách tắt proxy và mở cùng trang. Vẫn 502 thì website đang có sự cố, bạn chỉ cần chờ hoặc báo cho chủ website.
Khi proxy đúng là bên trả 502
- Website đích không phản hồi cho proxy. Website sập, quá tải, hoặc từ chối kết nối từ dải IP của proxy.
- Tên miền gõ sai hoặc không phân giải được. Proxy không tìm được địa chỉ của website nên không có gì để chuyển tiếp.
- Port đích không mở. Kết nối tới một port mà website không phục vụ.
- Sự cố tạm thời ở phía proxy. Hiếm hơn; nhận ra khi mọi website đều 502 qua cùng một proxy nhưng chạy được qua proxy khác.
Cách xử lý theo môi trường
- Chrome hoặc antidetect: mở một trang lớn khác qua cùng profile. Trang khác chạy được thì proxy ổn, vấn đề ở website ban đầu.
- Điện thoại: tắt proxy Wi-Fi, thử lại trang trên 4G để xem website có lỗi với mọi người không.
- curl: thêm
-vđể thấy dòng 502 trả về ngay sauCONNECT; thử cùng lệnh với tên miền khác để khoanh vùng. - Python requests: với trang HTTP, kiểm tra
response.status_code == 502và thử lại sau vài giây; với trang HTTPS, lỗi tunnel được ném ra thànhrequests.exceptions.ProxyError. Đừng lặp lại liên tục, hãy giãn thời gian giữa các lần thử.
Các bước thực hiện
- 1
Xem trang 502 hiện ở đâu
Trang 502 hiện trên địa chỉ https thì khả năng cao do website. Chrome báo lỗi tunnel thì xem tiếp phía proxy.
- 2
Tắt proxy và mở lại trang
Vẫn 502 khi không có proxy nghĩa là website đang lỗi.
- 3
Mở trang khác qua cùng proxy
Trang khác chạy bình thường thì proxy ổn; chỉ website ban đầu từ chối hoặc đang sập.
- 4
Kiểm tra proxy bằng checker
Dán dòng proxy vào công cụ check proxy. Mọi trang đều
HTTP 502thì gửi ticket kèm kết quả.
Câu hỏi thường gặp
502 Bad Gateway có phải proxy đã hết hạn?
Thường là không. Proxy hết hạn hoặc ngừng chạy hay cho lỗi kết nối hoặc timeout, xem proxy timeout.
Vì sao chỉ một website báo 502 qua proxy?
Website đó có thể đang lỗi hoặc không phản hồi kết nối từ IP của proxy. Thử lại sau, hoặc dùng IP ở nước khác.
502 và 504 khác nhau thế nào?
502 là nhận về câu trả lời không hợp lệ hoặc không lấy được câu trả lời; 504 là máy trung gian chờ quá lâu. Checker hiển thị cả hai theo dạng HTTP <mã>.
Scraper của tôi thỉnh thoảng nhận 502, có cần đổi proxy?
Lỗi rải rác thường do website đích quá tải. Giảm tốc độ gửi và thêm thử lại có khoảng nghỉ trước khi đổi proxy, xem proxy cho web scraping.
IP riêng, không chia sẻ với người lạ
Proxy riêng của VinaProxy giúp tránh tình trạng một IP bị website chặn vì người khác dùng chung.
Xem bảng giá