Requests08.设置代理

如果需要使用代理,requests支持proxies 命名参数和配置变量两种方式来配置代理。

proxies 命名参数

可以通过任意请求方法的proxies 命名参数来指定代理方式。其中http协议和https协议相互独立,设置方式为

proxies = {
  "http": "代理主机ip及端口号",
  "https": "代理主机ip及端口号",
}

由于requests库的调试离不开fiddler工具,这里就以设置fiddler代理为例进行演示。
当fiddler启动后会自动开启internet代理(如下图),当在浏览器访问网页会自动通过代理,将访问转入fiddler,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_PROXYHTTPS_PROXY环境变量,其中HTTP_PROXY为http协议设置代理,HTTPS_PROXY用于设置https协议的代理方式 。和命名参数相比,环境变量有以下优点:

  • 作用范围广,可作用于所有的请求
  • 可插拔,设置环境变量使用代理,不设置则不使用代理。
  • 若代理主机变动,代码无需修改,更优雅。

还是和上篇设置fiddler代理一样,演示下采用环境变量的方式设置代理。

  1. 设置环境变量(设置环境变量后,重启电脑才会生效)


    设置环境变量

2.编辑代码发送请求

import requests


if __name__ == '__main__':
    # 请求地址
    url = 'http://www.sogou.com/'
    r = requests.get(url)

3.启动fiddler,执行代码,若fiddler能拦截到请求则设置成功。


fiddler拦截到的请求

你可能感兴趣的:(Requests08.设置代理)