Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.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
urllib3-无法设置http代理_Http_Proxy_Urllib3 - Fatal编程技术网

urllib3-无法设置http代理

urllib3-无法设置http代理,http,proxy,urllib3,Http,Proxy,Urllib3,我正在尝试维护到代理的连接池。我的代码如下所示: >>> from urllib3 import PoolManager >>> pool = PoolManager(10) >>> pool.urlopen('GET', 'http://http-server/index.html',fields=None,headers=None,encode_multipart=False,multipart_boundary=None,proxies

我正在尝试维护到代理的连接池。我的代码如下所示:

>>> from urllib3 import PoolManager
>>> pool = PoolManager(10)
>>> pool.urlopen('GET', 'http://http-server/index.html',fields=None,headers=None,encode_multipart=False,multipart_boundary=None,proxies={'http': 'http://proxy'})
>>> import urllib3
>>> http = urllib3.proxy_from_url('http://myproxy.com/')  # This returns a ProxyManager object which has the same API as other ConnectionPool objects.
>>> r = http.request('GET', 'http://http-server/index.html')
当我运行此程序时,它失败了:

> 
> Traceback (most recent call last):
>   File "<stdin>", line 1, in   <module>
>   File "urllib3/poolmanager.py", line 117, in urlopen
>     response = conn.urlopen(method, u.request_uri, **kw)
> File "urllib3/connectionpool.py", line 427, in urlopen
>     **response_kw)   
> File "urllib3/response.py", line 195, in from_httplib
>     **response_kw) 
> TypeError: __init__() got an unexpected keyword argument 'proxies'
知道我做错了什么吗?根据urllib3文档,关键字args被发送到urlopen,但在本例中似乎没有发生


下面是描述代理关键字arg用法的链接。

您链接到的文档是Python的urllib,它与urllib3不同。当您调用urllib3的urlopen时,它与urllib的urlopen不同。很抱歉给你带来了困惑

目前,在urllib3中使用代理还没有很好的文档记录。如果您想探索urllib3代码,请查看urllib3.poolmanager.ProxyManager

否则,我建议尝试在urllib3之上简化代理功能的请求。见:

你的代码看起来像这样

>>> import requests
>>> requests.get('http://http-server/index.html', proxies={'http': 'http://proxy'})
如果您仍然希望使用urllib3,那么使用ProxyManager将如下所示:

>>> from urllib3 import PoolManager
>>> pool = PoolManager(10)
>>> pool.urlopen('GET', 'http://http-server/index.html',fields=None,headers=None,encode_multipart=False,multipart_boundary=None,proxies={'http': 'http://proxy'})
>>> import urllib3
>>> http = urllib3.proxy_from_url('http://myproxy.com/')  # This returns a ProxyManager object which has the same API as other ConnectionPool objects.
>>> r = http.request('GET', 'http://http-server/index.html')

您也可以直接创建自己的ProxyManager对象,但我更喜欢使用proxy\u from\u url快捷方式。

您链接到的文档是Python的urllib,它与urllib3不同。当您调用urllib3的urlopen时,它与urllib的urlopen不同。很抱歉给你带来了困惑

目前,在urllib3中使用代理还没有很好的文档记录。如果您想探索urllib3代码,请查看urllib3.poolmanager.ProxyManager

否则,我建议尝试在urllib3之上简化代理功能的请求。见:

你的代码看起来像这样

>>> import requests
>>> requests.get('http://http-server/index.html', proxies={'http': 'http://proxy'})
如果您仍然希望使用urllib3,那么使用ProxyManager将如下所示:

>>> from urllib3 import PoolManager
>>> pool = PoolManager(10)
>>> pool.urlopen('GET', 'http://http-server/index.html',fields=None,headers=None,encode_multipart=False,multipart_boundary=None,proxies={'http': 'http://proxy'})
>>> import urllib3
>>> http = urllib3.proxy_from_url('http://myproxy.com/')  # This returns a ProxyManager object which has the same API as other ConnectionPool objects.
>>> r = http.request('GET', 'http://http-server/index.html')

您也可以直接创建自己的ProxyManager对象,但我更喜欢使用proxy\u from\u url快捷方式。

谢谢。请求是否支持连接池?另外,如果可以的话,我更愿意使用urllib3。您能给我一个示例代码来演示如何使用代理吗?请求是在urllib3之上构建的,因此它支持所有相同的功能和更多功能,但使用不同的API。我添加了一个如何使用urllib3的ProxyManager的示例。如果您的工作正常,如果您考虑向urllib3提供一些文档来帮助其他人解决同样的问题,那将是一件好事当然,我可以提供文档。让我知道在哪里/如何。太好了!只需前往,创建一个fork,对docs目录下的文档进行更改,然后发送一个pull请求:如果您有任何其他问题,我们可以在Github上的pull request线程中讨论。谢谢。请求是否支持连接池?另外,如果可以的话,我更愿意使用urllib3。您能给我一个示例代码来演示如何使用代理吗?请求是在urllib3之上构建的,因此它支持所有相同的功能和更多功能,但使用不同的API。我添加了一个如何使用urllib3的ProxyManager的示例。如果您的工作正常,如果您考虑向urllib3提供一些文档来帮助其他人解决同样的问题,那将是一件好事当然,我可以提供文档。让我知道在哪里/如何。太好了!只需前往,创建一个fork,对docs目录下的文档进行更改,然后发送一个pull请求:如果您还有其他问题,我们可以在Github上的pull请求线程中讨论。