【问题标题】:How to capture python https traffic in fiddler?如何在提琴手中捕获python https流量?
【发布时间】:2017-09-30 13:21:59
【问题描述】:

每当我尝试执行某些数据获取任务时,Python 都会引发错误。 这只发生在我设置提琴手解密 https 流量时。 我已经尝试通过 127.0.0.1:8888 路由 python 流量,并且与 mozilla 相同,以捕获其流量。 我还安装了证书并通过提琴手信任它,我不确定我哪里出错了。

    raise SSLError(e, request=request)
    requests.exceptions.SSLError: HTTPSConnectionPool(host='google.com', port=443):
    Max retries exceeded with url: / (Caused by SSLError(SSLError(1, '[SSL: CERTIFIC
    ATE_VERIFY_FAILED] certificate verify failed (_ssl.c:748)'),))

这是我在尝试获取带有请求的页面时遇到的错误。

【问题讨论】:

标签: python https python-requests fiddler


【解决方案1】:

TL;DR requests 库不使用 Windows 证书存储,它有自己的一个(根据 https://bugs.python.org/issue28547)。这意味着默认情况下,您的提琴手 MITM 证书可用于 python 请求。

你的选择是

  1. 禁用 SSL 验证 (verify=False)
  2. 通过 REQUESTS_CA_BUNDLE 环境变量添加您的证书
  3. 明确添加您的提琴手证书 (verify='\path\to\cert')

更多详情请访问http://docs.python-requests.org/en/master/user/advanced/#ssl-cert-verification

另一方面,使用它自己的证书包而不是平台提供的证书包的请求确实有点奇怪 - 特别是考虑到所有浏览器都乐于使用平台的。

【讨论】:

  • Hack:将 CURL_CA_BUNDLE env var 设置为一个空字符串......它似乎禁用了验证。
【解决方案2】:

正如 polhemic 和 Eric Aronesty 所指出的,出于测试目的,您可以将“CURL_CA_BUNDLE”临时设置为空字符串。

import os
os.environ['CURL_CA_BUNDLE'] = ''

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-08-08
    • 2013-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多