您的位置:首页 >新闻资讯

Python如何设置http代理

来源:本站 作者:admin 时间:2019-06-05 17:13:22

HTTP代理是什么?HTTP代理本质上是一个WEB应用,它和其他普通Web应用没有根本区别。HTTP代理收到请求后,根据Header中Host字段的主机名和Get/POST请求地址综合判断目标主机,建立新的HTTP请求并转发请求数据,并将收到的响应数据转发给客户端。


 Python如何设置http代理


那么在python程序中要如何设置HTTP代理呢?

 

1. urllib2/urllib 代理设置

 

urllib2是Python标准库,功能很强大,只是使用起来稍微麻烦一点。在Python 3中,urllib2不再保留,迁移到了urllib模块中。urllib2中通过ProxyHandler来设置使用代理服务器。

 

proxy_handler=urllib2.ProxyHandler({'http': '121.193.143.249:80'})

 

opener=urllib2.build_opener(proxy_handler)

 

r=opener.open('http://httpbin.org/ip')

 

print(r.read())

 

也可以用install_opener将配置好的opener安装到全局环境中,这样所有的urllib2.urlopen都会自动使用代理。

 

urllib2.install_opener(opener)

 

r=urllib2.urlopen('http://httpbin.org/ip')

 

print(r.read())

 

在Python 3中,使用urllib。

 

proxy_handler=urllib.request.ProxyHandler({'http': 'http://121.193.143.249:80/'})

 

opener=urllib.request.build_opener(proxy_handler)

 

r=opener.open('http://httpbin.org/ip')

 

print(r.read())

 

2.requests 代理设置

 

requests是目前最优秀的HTTP库之一,也是我平时构造http请求时使用最多的库。它的API设计非常人性化,使用起来很容易上手。给requests设置代理很简单,只需要给proxies设置一个形如 {'http': 'x.x.x.x:8080', 'https': 'x.x.x.x:8080'} 的参数即可。其中http和https相互独立。

 

In [5]: requests.get('http://httpbin.org/ip', proxies={'http': '121.193.143.249:80'}).json()

 

Out[5]: {'origin': '121.193.143.249'}

 

可以直接设置session的proxies属性,省去每次请求都要带上proxies参数的麻烦。

 

s=requests.session()

 

s.proxies={'http': '121.193.143.249:80'}

 

print(s.get('http://httpbin.org/ip').json())

 


相关文章内容简介
推荐阅读