zoukankan      html  css  js  c++  java
  • python requests 设置 proxy 和 SSL 证书

    例子

    直接系统代理

    requests 会直接使用 macOS 系统的 proxy 设置。

    设置 proxy

    import requests
    proxies = {'http': 'http://localhost:8888', 'https': 'http://localhost:8888'}
    requests.get('http://example.org', proxies=proxies)
    
    import requests
    s = requests.Session()
    s.proxies = {'http': 'http://localhost:8888', 'https': 'http://localhost:8888'}
    requests.get('http://example.org')
    

    设置 SSL 证书

    使用文本格式的 PEM。

    import requests
    proxies = {'http': 'http://localhost:8888', 'https': 'http://localhost:8888'}
    requests.get('http://example.org', proxies=proxies, verify='/path-to/charles-ssl-proxying-certificate.pem')
    
    import requests
    s = requests.Session()
    s.proxies = {'http': 'http://localhost:8888', 'https': 'http://localhost:8888'}
    s.verify='/path-to/charles-ssl-proxying-certificate.pem'
    requests.get('http://example.org')
    

    特性

    代码的配置可以覆盖系统的配置,单次的 requests 请求的设置可以覆盖 session 中的设置,参考 requests.sessions 的源码

    参考

    实验

    SSL 证书设置

    比如上一步设置的 HTTPS Proxy 是想用 Charles 来抓包的,想用 Charles 解析 HTTPS 的请求就必须把 Charles 放在中间,客户端相信 Charles 签发的证书并和 Charles 之间 HTTPS 通信。Charles 再把自己当做一个客户端去和服务器 HTTPS 通信。

    这里要做的就是让 requests 来信任 Charles 生成的 CA。这个关键的一步 requests 却不能读取系统的设置了,有点伤心。那手动好了。

    类似上一步中的 proxies,session、request 中还有 verifycert 参数,前者默认为 True 表示需要验证服务器的 SSL 证书,手动设置成 False 可行但是会不停的报 Warning,Warning 不太好关掉。

    verify 可以设置成证书的地址,发现证书使用文本格式的 PEM 是可用的。

  • 相关阅读:
    leetcode931
    leetcode1289
    leetcode1286
    poj Meteor Shower
    noip杂题题解
    noip2007部分题
    NOIP Mayan游戏
    某模拟题题解
    codevs 1423 骑士
    noip 邮票面值设计
  • 原文地址:https://www.cnblogs.com/clip/p/python-requests-proxy-and-ssl-config.html
Copyright © 2011-2022 走看看