Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python请求真的连接到http代理吗?_Python_Proxy_Python Requests - Fatal编程技术网

Python请求真的连接到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:

当我将下面的代码与明显错误的http代理一起使用时,
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',)))
>>>