【发布时间】:2018-02-09 03:47:15
【问题描述】:
如何转义代理密码中的@字符。这样python就可以正确创建请求。我尝试了\\,但仍然无法正确访问网址。
proxy = {
"http": "http://UserName:PassWord@X.X.X.X:Port_No"
}
更新问题:
我正在为 http 请求使用 python 请求模块。它将字符串(以获取主机)从第一次出现的@中拆分出来,因为它应该从第二个@拆分。
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/lib/python2.7/dist-packages/requests/api.py", line 55, in get
return request('get', url, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/requests/api.py", line 44, in request
return session.request(method=method, url=url, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/requests/sessions.py", line 335, in request
resp = self.send(prep, **send_kwargs)
File "/usr/local/lib/python2.7/dist-packages/requests/sessions.py", line 438, in send
r = adapter.send(request, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/requests/adapters.py", line 327, in send
raise ConnectionError(e)
requests.exceptions.ConnectionError: HTTPConnectionPool(host='XXXXXXXX@X.X.X.X', port=XXXXX): Max retries exceeded with url: http:/URL (Caused by <class 'socket.gaierror'>: [Errno -2] Name or service not known)
【问题讨论】:
-
@在您的问题中第二次出现在哪里? -
第一个密码,第二个是密码和ip的分隔符,即'username:st@ckoverflow@192.168.1.200:12345'
-
嗯?我在你的问题的任何地方都看不到这一点。无论如何,这个代理也适用于我:
http://username:st@ckoverflow@127.0.0.1:12345。你试过http://username:st%40ckoverflow@127.0.0.1:12345了吗?