质量与错误 · 词汇表

HTTP 407 需要代理身份验证

HTTP 407 Proxy Authentication Required 是代理在请求未携带有效代理凭据时返回的状态:缺少 Proxy-Authorization 标头、用户名或密码错误,或仅配置白名单验证时来源 IP 未加入白名单。它相当于代理侧的 401,表示请求从未离开网关;修正凭据或白名单即可解决。

阅读约 2 分钟 又称 407 错误、需要代理身份验证 更新于

常见原因#

  • 粘贴的凭据末尾带有空格或换行符。
  • 密码中的特殊字符未在代理 URL 中进行 URL 编码。
  • 客户端只在收到质询后发送凭据,而工具无法处理 407 往返过程;预先发送 Proxy-Authorization 即可解决。
  • 密码已轮换:旧密码在宽限期后失效。
  • 使用白名单模式,但来源 IP 已更改。

快速检查#

cURL 输出网关响应
curl -v -x http://USER:PASS@res.hodlproxy.com:9000 https://api.ipify.org

407 响应长什么样#

代理返回的原始响应
HTTP/1.1 407 Proxy Authentication Required
Proxy-Authenticate: Basic realm="proxy"
Content-Length: 0

这个状态码由代理而不是网站发出:请求根本没有离开网关。客户端应带上包含有效凭据的 Proxy-Authorization 头重试。

407、401 与 403#

状态码发出方含义
407代理先向代理进行认证
401网站向网站进行认证
403网站(或代理策略)无论是否认证,访问都被拒绝

在常用工具中修复 407#

工具解决方法
cURL把凭据写进代理 URL,或使用 --proxy-user user:pass;对特殊字符进行 URL 编码。
Python requests在 proxies 中使用 http://user:pass@host:port;用 urllib.parse.quote 编码密码。
Node.js(axios)传入 proxy: { host, port, auth: { username, password } },或使用 URL 中带凭据的代理 agent。
Puppeteer用 --proxy-server=host:port 启动,并调用 page.authenticate({ username, password })。
Playwright启动时或为上下文传入 proxy: { server, username, password }。
Selenium / ChromeChrome 会忽略 --proxy-server 中的凭据:请使用 IP 白名单、扩展程序或可添加凭据的本地中继。
对含特殊字符的密码进行编码
from urllib.parse import quote
proxy = f"http://USER-cc-us:{quote('p@ss:w/rd', safe='')}@res.hodlproxy.com:9000"

在 HodlProxy 中如何运作#

HodlProxy 返回 407 时使用代码 invalid_credentials;控制面板会显示当前凭据组合,轮换后的旧密码仍可继续使用十分钟,而白名单地址可以使用任意用户名携带参数。

常见问题#

用户名和密码都正确,为什么还是 407?

通常是复制时带上了不可见字符、代理 URL 中的特殊字符没有编码,或者客户端无法应答 407 质询。用 cURL 测试同一组凭据,即可区分是工具问题还是账户问题。

能否完全避免 407?

可以:在控制台把服务器 IP 加入白名单,即可免凭据连接。此时定位改在控制台中设置。

407 是网站封了我吗?

不是。407 是代理在请求到达网站之前返回的。网站封禁通常表现为 403、429、CAPTCHA 或验证页面。

准备好即可开始

在真实请求中亲自验证。

创建账户,充值 $20,然后针对你自己的目标运行快速入门示例。已购买的流量永不过期。