这只是一个简短而简单的关于Python的优秀Requests模块的文章。
我似乎在文档中找不到变量“proxies”应该包含的内容。当我向它发送一个带有标准"IP:PORT“值的dict时,它拒绝了它,要求提供2个值。因此,我猜测(因为文档中似乎没有涉及这一点),第一个值是ip,第二个值是端口?
文档只提到了这一点:
URL (可选)到代理的
的字典映射协议。
所以我试了一下...我应该做些什么?
proxy = { ip: port}
在将它们放入字典之前,我是否应该将它们转换为某种类型?
r = requests.get(url,headers=headers,proxies=proxy)
发布于 2011-11-28 02:08:33
proxies
的dict语法是{"protocol":"ip:port", ...}
。通过它,您可以使用http、https和ftp协议为请求指定不同的(或相同的)代理:
http_proxy = "http://10.10.1.10:3128"
https_proxy = "https://10.10.1.11:1080"
ftp_proxy = "ftp://10.10.1.10:3128"
proxyDict = {
"http" : http_proxy,
"https" : https_proxy,
"ftp" : ftp_proxy
}
r = requests.get(url, headers=headers, proxies=proxyDict)
参数:
method
-新请求对象的方法。
URL -新请求对象的url
。
..。
proxies
-(可选)将协议映射到代理的URL的字典。
...
在linux上,您还可以通过HTTP_PROXY
、HTTPS_PROXY
和FTP_PROXY
环境变量执行此操作:
export HTTP_PROXY=10.10.1.10:3128
export HTTPS_PROXY=10.10.1.11:1080
export FTP_PROXY=10.10.1.10:3128
在Windows上:
set http_proxy=10.10.1.10:3128
set https_proxy=10.10.1.11:1080
set ftp_proxy=10.10.1.10:3128
谢谢,Jay指出这一点:
语法在requests 2.0.0中发生了变化。
您需要将一个模式添加到url:https://2.python-requests.org/en/latest/user/advanced/#proxies
发布于 2012-11-15 18:13:53
您可以参考proxy documentation here。
如果您需要使用代理,您可以使用proxies参数为任何请求方法配置单个请求:
import requests
proxies = {
"http": "http://10.10.1.10:3128",
"https": "https://10.10.1.10:1080",
}
requests.get("http://example.org", proxies=proxies)
要对代理使用HTTP Basic Auth,请使用http://user:password@host.com/语法:
proxies = {
"http": "http://user:pass@10.10.1.10:3128/"
}
发布于 2013-05-01 09:54:47
我发现urllib有一些非常好的代码来获取系统的代理设置,而且它们恰好是以正确的形式直接使用的。您可以像这样使用:
import urllib
...
r = requests.get('http://example.org', proxies=urllib.request.getproxies())
它工作得很好,urllib也知道如何获取Mac和Windows设置。
https://stackoverflow.com/questions/8287628
复制相似问题