解密Java、Python使用账号密码连接代理IP时为什么报错407

众所周知,站大爷代理IP支持两种授权方式,分别是终端IP授权和“用户名+密码”授权。“终端IP授权“模式使用方法详见《如何绑定终端IP进行授权使用代理IP》,“用户名+密码“授权模式使用方法详见《如何使用带有用户名密码认证的HTTP(S)代理》。

无论是选择哪种授权模式,按照使用说明来使用代理IP,都是可成功使用的。但有些使用Java、Python爬虫的用户朋友,在选择“用户名+密码”授权使用代理IP时,账号密码都是正确的,却仍然报错407,我们一起来看看。

以Java代码为例,部分代码如下:

代码中使用代理IP时的账号密码授权,参考了《如何使用带有用户名密码认证的HTTP(S)代理》中的方法:为每个 HTTP 请求增加Proxy-Authorization协议头, 其值为 Basic ,其中为 “用户名” 和 “密码” 通过 : 拼接后, 再经由 BASE64 编码得到的字符串。

用户反复核对了账号密码是没有错的,授权模式也确实是设置的账号密码授权模式,但依然还是报错:407 Proxy Authentication Required,百思不得其解,最后在站大爷客服的协助下,发现了问题所在:Java和Python在进行用户名密码授权使用代理的时候,有http和https的区分。

在设置用户名密码验证时,要注意与请求的URL的协议保持一致,如果请求的URL为https协议,那么设置用户名密码验证时,也应当为https协议。