Python3中使用的socks5代理账号密码不能包含#*等字符原因是什么,怎么解决

文章讲述了在使用Python3的requests库进行socks5代理设置时,如果账号或密码包含#字符,会导致URL解析错误。原因是requests库依赖的urllib3在解析URL时遵循RFC3986标准,而#号在URL中有特殊含义。为解决此问题,作者建议在传入URL前将#替换为其他字符,解析后再替换回来。这是一个关于异常处理和库深入理解的案例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

小案例系列之: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(
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值