内容提要
本文讨论了使用Chromium和Mitmproxy时的内存管理和证书信任问题。Mitmproxy低版本存在内存泄漏,建议升级到8.1.0版本以解决此问题。此外,Chromium对自签名证书的信任问题导致缓存失效,需要将Mitmproxy证书导入Chromium的信任库。正确配置后,可以优化网络请求和流量使用。
延伸解读
Mitmproxy 内存泄漏的版本与 Python 依赖
文章指出 Mitmproxy 8.0.0 及以下版本存在 HttpFlow 长连接对象泄漏,导致内存持续增长直至 OOM。升级到 8.1.0 可修复,但该版本要求 Python 3.9 以上,而 Ubuntu 20.04 默认 Python 3.8 无法直接安装。作者建议升级系统到 Ubuntu 22.04 或手动配置 Python 3.9 源,但后者容易残留旧库。
证书错误导致 Chromium 磁盘缓存失效
使用 --ignore-certificate-errors 忽略 Mitmproxy 自签名证书时,Chromium 会因证书错误而不持久化缓存页面资源,导致 JavaScript 等静态文件无法命中磁盘缓存,重复请求增加带宽消耗。文章引用 Chromium 官方解释:任何证书错误都会使页面不被缓存。解决方案是让 Chromium 信任 Mitmproxy 证书,而非忽略错误。
在 Chromium 中导入自签名证书的要点
Chromium 在 Linux 下使用 NSS 数据库管理证书,默认不信任系统 CA。需通过 certutil 初始化 ~/.pki/nssdb 并导入证书。注意 -d 参数若加 sql: 前缀则无法识别 ~,应使用完整路径或省略前缀。同时确保运行 Chromium 的用户对 ~/.pki 目录有读写权限,否则证书可能不生效。
Q&A
Mitmproxy的低版本存在哪些问题?
Mitmproxy低版本存在内存泄漏问题,建议升级到8.1.0版本以解决此问题。
如何解决Chromium对自签名证书的信任问题?
需要将Mitmproxy的证书导入Chromium的CA信任库,或在Mitmproxy层实现静态资源的持久化缓存。
Mitmproxy的内存配额应该如何调整?
Mitmproxy的内存配额可以适当调整,增加到1G可能会延长OOM的时间,但并不能根本解决问题。
为什么Chromium会导致缓存失效?
Chromium对证书错误的页面不会进行持久化缓存,即使配置了忽略证书校验。
如何优化Mitmproxy和Chromium的网络请求?
通过正确配置Mitmproxy和Chromium,可以优化网络请求和流量使用,减少流量消耗。
在Ubuntu上安装Mitmproxy 8.1.0需要注意什么?
需要确保Python版本升级到3.9以上,因为Mitmproxy 8.1.0的最低支持Python版本是3.9。