美文网首页
Requests08.设置代理

Requests08.设置代理

作者: 意爹闯天涯 | 来源:发表于2019-09-30 00:15 被阅读0次

    如果需要使用代理,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.设置代理

          本文链接:https://www.haomeiwen.com/subject/qczqpctx.html