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拦截到的请求
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Getting Started Burp Suite 是用于攻击web 应用程序的集成平台。它包含了许多工具,并为...
    Eva_chenx阅读 28,820评论 0 14
  • 转载地址 image.png 前言 fiddler是一个很好的抓包工具,默认是抓http请求的,对于pc上的htt...
    菜菜编程阅读 21,459评论 0 28
  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,141评论 1 32
  • 原因 在现实项目中,由于开发的经常调试,接口的不稳定,和接口文档的不及时更新,我们选择做接口测试,更多的需要自己抓...
    我为峰2014阅读 3,170评论 1 5
  • 目录 一、HTTP协议简介 二、Fiddler简介 三、Fiddler工作原理 四、Fiddler界面介绍 五、F...
    huxt阅读 36,272评论 9 26