小案例系列之:python3的requests库socks5代理账号密码为什么不支持#等字符
前段时间遇到一个朋友说:测试个socks5账号居然出现神奇的现象,参数设置进去以后抛出异常网络不可达。再跟进去一点,发现参数居然只返回的部分,甚至服务器地址都没有返回。后面各种测试发现只要账号密码包含#号,就会出现这个问题。这个没理由的,socks5协议中没有要求账号密码不能包含#号,一定是python3的库有问题。
每一次异常都不要轻易放过,蜂巢指纹浏览器(NestBrowser)开发中经常遇到,尽力找到“为什么”。
测试代码如下:
import requests
proxy_data = {
"server": 'x.x.x.x',
"port": "456",
"user": "test",
"pwd": "xxxx#111",
}
proxy = f'{proxy_data.get("user")}:{proxy_data.get("pwd")}@{proxy_data.get("server")}:{proxy_data.get("port")}'
proxies = {
'http': 'socks5h://' + proxy,
'https': 'socks5h://' + proxy,
}
try:
requests.packages.urllib3.disable_warnings(InsecureRequestWarning)
url = "<https://www.nestbrowser.com>"
response = requests.get(url, proxies=proxies, timeout=5, verify=False) #GBK
content = response.content.decode(