首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >带有Python 'Requests‘模块的代理

带有Python 'Requests‘模块的代理
EN

Stack Overflow用户
提问于 2011-11-28 01:50:23
回答 12查看 441.1K关注 0票数 211

这只是一个简短而简单的关于Python的优秀Requests模块的文章。

我似乎在文档中找不到变量“proxies”应该包含的内容。当我向它发送一个带有标准"IP:PORT“值的dict时,它拒绝了它,要求提供2个值。因此,我猜测(因为文档中似乎没有涉及这一点),第一个值是ip,第二个值是端口?

文档只提到了这一点:

URL (可选)到代理的

的字典映射协议。

所以我试了一下...我应该做些什么?

代码语言:javascript
复制
proxy = { ip: port}

在将它们放入字典之前,我是否应该将它们转换为某种类型?

代码语言:javascript
复制
r = requests.get(url,headers=headers,proxies=proxy)
EN

回答 12

Stack Overflow用户

回答已采纳

发布于 2011-11-28 02:08:33

proxies的dict语法是{"protocol":"ip:port", ...}。通过它,您可以使用http、https和ftp协议为请求指定不同的(或相同的)代理:

代码语言:javascript
复制
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)

requests documentation推导而来

参数:

method -新请求对象的方法。

URL -新请求对象的url

..。

proxies -(可选)将协议映射到代理URL的字典。

...

在linux上,您还可以通过HTTP_PROXYHTTPS_PROXYFTP_PROXY环境变量执行此操作:

代码语言:javascript
复制
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上:

代码语言:javascript
复制
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

票数 357
EN

Stack Overflow用户

发布于 2012-11-15 18:13:53

您可以参考proxy documentation here

如果您需要使用代理,您可以使用proxies参数为任何请求方法配置单个请求:

代码语言:javascript
复制
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/语法:

代码语言:javascript
复制
proxies = {
    "http": "http://user:pass@10.10.1.10:3128/"
}
票数 36
EN

Stack Overflow用户

发布于 2013-05-01 09:54:47

我发现urllib有一些非常好的代码来获取系统的代理设置,而且它们恰好是以正确的形式直接使用的。您可以像这样使用:

代码语言:javascript
复制
import urllib

...
r = requests.get('http://example.org', proxies=urllib.request.getproxies())

它工作得很好,urllib也知道如何获取Mac和Windows设置。

票数 35
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8287628

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档