Trả lời nhanh
401 Unauthorized vs 407 nghĩa là gì với proxy?
401 Unauthorized là từ trang web; 407 là từ proxy. Nếu bạn crawl qua proxy residential CrawlRelay và nhận 401, nghĩa là proxy chấp nhận bạn nhưng trang web đang yêu cầu đăng nhập hoặc khóa API riêng của nó. Thông tin đăng nhập proxy không giúp được ở đây. Sửa 407 trong URL proxy, và xử lý 401 theo quy định của trang với nội dung bảo vệ.
401 Unauthorized vs 407 nhìn nhanh
| Lỗi | 401 Unauthorized vs 407 |
|---|---|
| Loại | Mã trạng thái HTTP (4xx, lỗi phía client) |
| Gửi bởi | Trang web mục tiêu, không phải proxy |
| Định nghĩa tại | RFC 9110, section 15.5.2 (compare 407: section 15.5.8) |
| Thử lại? | Không. 401 yêu cầu chứng thực với chính trang web đó |
| Kiểm tra trước tiên | Kiểm tra server nào gửi: trang web (401) hay proxy (407) |
401 Unauthorized vs 407 nghĩa là gì?
RFC 9110 ghép đôi hai mã này. 401 có header WWW-Authenticate và yêu cầu chứng thực server gốc. 407 có header Proxy-Authenticate và yêu cầu chứng thực proxy. Trả lời cũng khác nhau: Authorization cho site và Proxy-Authorization cho proxy.
Nhầm lẫn thường gặp vì cùng nói về "xác thực". Kiểm tra nhanh nhất là mã trạng thái: 401 nghĩa là bạn đã qua proxy.
a 401 trông như thế nào trong Python, curl, Node.js và trình duyệt?
Cùng một lỗi nhưng hiển thị khác nhau trên mỗi công cụ. Đây là các thông báo bạn nên tìm trong nhật ký của mình:
- Python requests:
status_code == 401với headerWWW-Authenticate(web) so vớiProxyErrorcó 407 (proxy) - curl:
HTTP/2 401sauCONNECTthành công (web) so vớiCONNECT tunnel failed, response 407(proxy) - API: JSON như
{"message": "Unauthorized"}hoặc thông báo token không hợp lệ
Nguyên nhân gây ra a 401 là gì?
Khả năng đầu tiên là:
- Trang hoặc API cần đăng nhập hoặc khóa. Trang web, không phải proxy, yêu cầu.
- Thông tin proxy đặt sai chỗ, như header
Authorizationdành cho proxy, bị trang từ chối. - Cookie session hoặc token hết hạn trong quy trình nhiều bước.
- Token gắn với IP hoặc khu vực, nên thay exit làm token không hợp lệ.
Làm sao để chẩn đoán a 401 từng bước?
- Xác nhận mã: 401 là trang web, 407 là proxy.
- Thử curl bên dưới. Nếu thấy
HTTP/1.1 200 Connection establishedtrước 401, tức proxy ổn. - Kiểm tra URL đó cần đăng nhập trên trình duyệt thường.
- Trong quy trình nhiều bước, xem 401 bắt đầu khi IP exit thay đổi không.
# Use the URL that fails; with https://api.ipify.org instead, you test the gateway alone.
# "HTTP/1.1 200 Connection established" first, then the site's own status: the site answered.
curl -v -x http://USERNAME:[email protected]:7777 https://TARGET_URL
# Same test through the SOCKS5 port, with DNS resolved at the exit
curl -v --socks5-hostname gw.crawlrelay.com:7778 --proxy-user USERNAME:PASSWORD https://TARGET_URLLàm sao để sửa a 401?
- Với lỗi proxy (407), để thông tin trong URL proxy hoặc cài đặt proxy client, không dùng header
Authorization. - Với API công khai cần khóa, đăng ký và gửi khóa theo tài liệu.
- Với session gắn IP, dùng session sticky cho toàn bộ quy trình.
- Với nội dung cần đăng nhập, xem điều khoản trang trước khi tự động. Crawl tài khoản hoặc dữ liệu cá nhân bạn không sở hữu là vi phạm Chính sách Sử dụng Chấp nhận được.
Có nên thử lại sau a 401 không?
Đừng thử lại 401 một cách mù quáng. Nó yêu cầu thứ mà yêu cầu của bạn chưa có. Làm mới token hoặc session nếu có trong quy trình, rồi thử lại một lần. 401 lặp lại nghĩa là nội dung không công khai hoặc quyền truy cập của bạn đã hết.
401 Unauthorized vs 407 áp dụng thế nào với CrawlRelay?
Proxy HTTP báo lỗi chứng thực của nó với 407 hoặc lỗi tunnel, không phải 401. Nếu thấy 401 khi dùng gateway CrawlRelay, nghĩa là yêu cầu đã đến trang web, nên lỗi nhanh được thu hẹp.
Gateway: gw.crawlrelay.com, cổng 7777 (HTTP, HTTPS qua CONNECT) và cổng 7778 (SOCKS5). Định dạng tên người dùng: USERNAME-country-{cc}-state-{state}-city-{city}-zip-{zip}-asn-{asn}-session-{id}-ttl-{minutes}. Tham khảo liên quan: 407 Proxy Authentication Required · 403 Forbidden · Hướng dẫn Sessions.
401 Unauthorized vs 407: các câu hỏi thường gặp của lập trình viên
Tại sao tôi nhận 401 khi mật khẩu proxy đúng?
Vì 401 liên quan trang web, không phải proxy. Đăng nhập proxy bạn đã thành công, trang web cần chứng thực riêng như khóa API, cookie đăng nhập hoặc token. Xem tài liệu trang đó. Nếu nội dung cần đăng nhập bạn không có quyền, đừng tự động hóa.
Session sticky có khắc phục lỗi 401 được không?
Có thể. Một số trang gắn session hay token với IP tạo nó, nên đổi exit làm token không hợp lệ và trả về 401. Giữ session sticky cho toàn bộ quy trình tránh lỗi đó. Chứ không hiệu quả khi nội dung yêu cầu chứng thực bạn không có.
Thông tin đăng nhập proxy nằm ở đâu trong request HTTP?
Ở header Proxy-Authorization do client tạo từ phần user:password@ của URL proxy. Trang web không thấy header này vì proxy sẽ loại bỏ nó. Chứng thực của trang nằm ở header Authorization hoặc cookie, proxy truyền nguyên.
Các lỗi proxy khác trong tài liệu tham khảo này
Mã trạng thái HTTP
- 401 Unauthorized vs 407
- 403 Forbidden
- 407 Proxy Authentication Required
- 429 Too Many Requests
- 502 Bad Gateway
- 503 Service Unavailable
- 504 Gateway Timeout
Lỗi trình duyệt và client
Lỗi kết nối và TLS
Proxy dân cư với tài liệu bao gồm các trường hợp lỗi
CrawlRelay proxy dân cư từ 0,50 US$/GB, lưu lượng không bao giờ hết hạn.