Python请求真的连接到http代理吗?
当我将下面的代码与明显错误的http代理一起使用时,Python请求真的连接到http代理吗?,python,proxy,python-requests,Python,Proxy,Python Requests,当我将下面的代码与明显错误的http代理一起使用时,requests模块仍然可以从url获取。怎么可能呢?这是否意味着请求将不使用http代理?如果是这样的话,有没有可能它也不会使用https代理?我需要确认我的帖子和get是通过代理完成的 import requests url=r'https://stackoverflow.com/questions' proxies={'http':'http://asdasdasd:80'} with requests.session() as s:
requests
模块仍然可以从url获取。怎么可能呢?这是否意味着请求
将不使用http代理?如果是这样的话,有没有可能它也不会使用https代理?我需要确认我的帖子和get是通过代理完成的
import requests
url=r'https://stackoverflow.com/questions'
proxies={'http':'http://asdasdasd:80'}
with requests.session() as s:
resp = s.get(url, proxies=proxies)
print resp
print resp.text
您正在设置
http
代理,但发出https
请求。改为(或另外)设置https
代理
使用正确类型的代理集运行示例:
>>> import requests
>>> requests.get('https://example.org', proxies={'https': 'http://asdasdasd:80'})
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python2.7/dist-packages/requests/api.py", line 67, in get
return request('get', url, params=params, **kwargs)
File "/usr/lib/python2.7/dist-packages/requests/api.py", line 53, in request
return session.request(method=method, url=url, **kwargs)
File "/usr/lib/python2.7/dist-packages/requests/sessions.py", line 468, in request
resp = self.send(prep, **send_kwargs)
File "/usr/lib/python2.7/dist-packages/requests/sessions.py", line 576, in send
r = adapter.send(request, **kwargs)
File "/usr/lib/python2.7/dist-packages/requests/adapters.py", line 437, in send
raise ConnectionError(e, request=request)
requests.exceptions.ConnectionError: HTTPSConnectionPool(host='example.org', port=443):
Max retries exceeded with url: / (Caused by ProxyError('Cannot connect to proxy.',
NewConnectionError('<requests.packages.urllib3.connection.VerifiedHTTPSConnection object at
0x7f3b880b9410>: Failed to establish a new connection: [Errno -2] Name or service not
known',)))
>>>
导入请求
>>>请求。获取('https://example.org,代理={'https':'http://asdasdasd:80'})
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
文件“/usr/lib/python2.7/dist-packages/requests/api.py”,get中第67行
返回请求('get',url,params=params,**kwargs)
文件“/usr/lib/python2.7/dist packages/requests/api.py”,第53行,在request中
return session.request(method=method,url=url,**kwargs)
文件“/usr/lib/python2.7/dist packages/requests/sessions.py”,第468行,在request中
resp=自我发送(准备,**发送)
文件“/usr/lib/python2.7/dist packages/requests/sessions.py”,第576行,在send中
r=适配器.send(请求,**kwargs)
文件“/usr/lib/python2.7/dist packages/requests/adapters.py”,第437行,在send中
raise ConnectionError(e,请求=请求)
requests.exceptions.ConnectionError:HTTPSConnectionPool(host='example.org',port=443):
url:/(由ProxyError(“无法连接到代理”)引起)超过了最大重试次数,
NewConnectionError(':未能建立新连接:[Errno-2]名称或服务未指定
已知',))
>>>
谢谢,琥珀色。还有一个问题。所以,如果我在请求中指定一个实际的http代理作为名义上的https代理,那么一切都应该正常,因为我们在SSL认证上少做了一步。但在相反的情况下,这是真的吗?因为如果实际的https代理被指定为名义http代理,那么它将无法进行SSL认证。我说得对吗?
>>> import requests
>>> requests.get('https://example.org', proxies={'https': 'http://asdasdasd:80'})
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python2.7/dist-packages/requests/api.py", line 67, in get
return request('get', url, params=params, **kwargs)
File "/usr/lib/python2.7/dist-packages/requests/api.py", line 53, in request
return session.request(method=method, url=url, **kwargs)
File "/usr/lib/python2.7/dist-packages/requests/sessions.py", line 468, in request
resp = self.send(prep, **send_kwargs)
File "/usr/lib/python2.7/dist-packages/requests/sessions.py", line 576, in send
r = adapter.send(request, **kwargs)
File "/usr/lib/python2.7/dist-packages/requests/adapters.py", line 437, in send
raise ConnectionError(e, request=request)
requests.exceptions.ConnectionError: HTTPSConnectionPool(host='example.org', port=443):
Max retries exceeded with url: / (Caused by ProxyError('Cannot connect to proxy.',
NewConnectionError('<requests.packages.urllib3.connection.VerifiedHTTPSConnection object at
0x7f3b880b9410>: Failed to establish a new connection: [Errno -2] Name or service not
known',)))
>>>