快速回答
代理中的401 Unauthorized vs 407是什么意思?
401 Unauthorized来自网站;407来自代理。 如果用 CrawlRelay住宅代理抓取时遇到401,说明代理通过了验证,但网站要求自身登录或API密钥。代理凭证对此无效。代理URL中修正407,按网站规定处理401。
401 Unauthorized vs 407一览
| 错误 | 401 Unauthorized vs 407 |
|---|---|
| 类型 | HTTP 状态码(4xx,客户端错误) |
| 发送方 | 目标网站,而非代理 |
| 定义于 | RFC 9110, section 15.5.2 (compare 407: section 15.5.8) |
| 要重试吗? | 不是。401是网站要求提供自身凭证 |
| 先检查 | 检查哪个服务器返回:网站(401)还是代理(407) |
401 Unauthorized vs 407是什么意思?
RFC 9110将这两个状态码配对。401带有WWW-Authenticate头部,要求原始服务器凭证;407带有Proxy-Authenticate头部,要求代理凭证。响应分别在Authorization(网站)和Proxy-Authorization(代理)头部。二者都含“认证”字样,易混淆。最简单区分是状态码:401说明代理已通过。
在Python、curl、Node.js和浏览器中a 401是什么样?
每个工具中相同的失败会有不同的提示信息。请在日志中搜索以下信息:
- Python requests:
status_code == 401带WWW-Authenticate头部(网站) vs 带407提示的ProxyError(代理) - curl: 成功的
CONNECT(网站)返回HTTP/2 401vs 代理返回CONNECT tunnel failed, response 407 - API: JSON体如
{"message": "Unauthorized"}或无效令牌消息
导致a 401的原因是什么?
最可能的首要原因:
- 需要登录或API密钥的页面或API。 是网站而非代理要求。
- 代理凭证放在错误位置, 例如
Authorization头部,本应给代理的凭证被网站拒绝。 - 多步骤流程中的过期会话Cookie或令牌。
- 令牌绑定IP或区域, 换出口IP令牌失效。
如何一步步诊断a 401?
- 确认状态码:401是网站,407是代理。
- 运行下面curl测试,若401前有
HTTP/1.1 200 Connection established,说明代理正常。 - 浏览器访问同一URL是否需要登录?
- 多步流程中401是否由出口IP更换触发?
# 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_URL如何修复a 401?
- 代理问题(407)时, 凭证应放代理URL或客户端代理设置,切勿放
Authorization头部。 - 需要API密钥的公共接口, 请在网站注册并按文档发送密钥。
- IP绑定的会话, 整个流程使用粘性会话。
- 受登录保护的内容, 自动化前请查阅网站条款。抓取非持有账号内容或登录后个人资料,违反我们的使用政策。
遇到a 401后要重试吗?
不要盲目重试401。它表示请求缺少某项凭证。如果流程中有令牌或会话,先刷新Token或会话,然后尝试一次。多次401表示内容非公开或访问已结束。
401 Unauthorized vs 407如何应用于CrawlRelay?
HTTP代理凭证问题表现为407或隧道失败,而非401。如果你在 CrawlRelay网关使用时见401,说明请求已到达网站,定位问题快速。
网关:gw.crawlrelay.com,端口7777(通过CONNECT的HTTP、HTTPS)和端口7778(SOCKS5)。用户名格式:USERNAME-country-{cc}-state-{state}-city-{city}-zip-{zip}-asn-{asn}-session-{id}-ttl-{minutes}。相关内容:407 Proxy Authentication Required · 403 Forbidden · Sessions guide。
401 Unauthorized vs 407:开发者常问的问题
为什么我代理密码正确却出现401错误?
因为401有关网站而非代理。代理登录成功,网站要求自己的凭证,如API密钥、登录Cookie或令牌。请查阅网站文档。内容若需你无权访问的登录,别自动化。
粘性会话能解决401错误吗?
有时能。一些网站将会话或令牌绑定到创建它的IP,此时换出口IP使令牌失效,网站返回401。用一个粘性会话贯穿流程能避免。若凭证缺失则无效。
HTTP请求中代理凭证放哪里?
放在Proxy-Authorization头部,是你客户端基于代理URL中的user:password@部分生成的。网站看不到此头部,代理会移除。网站凭证放在Authorization头部或Cookie中,代理直接透传。
本参考中的其他代理错误
HTTP 状态码
- 401 Unauthorized vs 407
- 403 Forbidden
- 407 Proxy Authentication Required
- 429 Too Many Requests
- 502 Bad Gateway
- 503 Service Unavailable
- 504 Gateway Timeout
浏览器和客户端错误
连接和 TLS 错误
带有涵盖失败案例文档的住宅代理
来自US$0.50/GB的CrawlRelay住宅代理,流量永不过期。