如果需要使用代理,requests支持proxies 命名参数和配置变量两种方式来配置代理。
proxies 命名参数
可以通过任意请求方法的proxies 命名参数来指定代理方式。其中http协议和https协议相互独立,设置方式为
proxies = {
"http": "代理主机ip及端口号",
"https": "代理主机ip及端口号",
}
由于requests库的调试离不开fiddler工具,这里就以设置fiddler代理为例进行演示。
当fiddler启动后会自动开启internet代理(如下图),当在浏览器访问网页会自动通过代理,将访问转入fiddler,fiddler便能够拦截到浏览器访问的请求。
但如果使用requests库用代码请求某个网页时,默认不会使用fiddler的代理。这时就需要手动在代码中设置代理。
通过fiddler菜单-Tools-Options-Connections查看代理端口号:
查看fiddler代理端口号
由代理端口号,可以得出本机fiddler代理地址为
http://127.0.0.1:8888
import requests
if __name__ == '__main__':
# 请求地址
url = 'http://www.sogou.com/'
# 代理
proxies = {
"http": "http://127.0.0.1:8888",
}
r = requests.get(url, proxies=proxies)
代码执行后,如果能够在fiddler中能够拦截到requests所发送的请求,则代理设置成功。
拦截到的请求
环境变量
除了通过指定proxies 命名参数外,requests还提供了使用环境变量的方式来添加代理。requests提供HTTP_PROXY
和 HTTPS_PROXY
环境变量,其中HTTP_PROXY
为http协议设置代理,HTTPS_PROXY
用于设置https协议的代理方式 。和命名参数相比,环境变量有以下优点:
- 作用范围广,可作用于所有的请求
- 可插拔,设置环境变量使用代理,不设置则不使用代理。
- 若代理主机变动,代码无需修改,更优雅。
还是和上篇设置fiddler代理一样,演示下采用环境变量的方式设置代理。
-
设置环境变量(设置环境变量后,重启电脑才会生效)
设置环境变量
2.编辑代码发送请求
import requests
if __name__ == '__main__':
# 请求地址
url = 'http://www.sogou.com/'
r = requests.get(url)
3.启动fiddler,执行代码,若fiddler能拦截到请求则设置成功。
fiddler拦截到的请求
网友评论