You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否在插件中检测MITM证书是否已安装?

mitmproxy插件证书检测与重定向实现方案

目前官方文档没有提供直接检测MITM证书安装状态的封装接口,但可以通过监听TLS握手事件的方式间接实现该需求,具体方案如下:

  • 客户端未安装MITM根证书时,发起HTTPS请求的TLS握手阶段会触发证书验证失败,mitmproxy会抛出tls_handshake_failed事件,可在自定义插件中监听该事件捕获这类异常请求。
  • 过滤掉非证书原因导致的TLS握手失败,匹配错误信息中的CERTIFICATE_VERIFY_FAILED特征字段,即可判定为客户端未安装MITM证书的场景。
  • 捕获到对应请求后构造302重定向响应,重定向地址填写http://mitm.it即可,注意必须使用HTTP协议的重定向地址,避免HTTPS场景下再次触发证书验证失败导致重定向不生效。

你可以参考以下核心代码实现:

from mitmproxy import tls, http

class CertDetectionRedirect:
    def tls_handshake_failed(self, flow: tls.TLSFlow) -> None:
        # 匹配证书验证失败场景
        if "CERTIFICATE_VERIFY_FAILED" in str(flow.error):
            # 清除原错误,构造重定向响应
            flow.error = None
            flow.response = http.HTTPResponse.make(
                302,
                {"Location": "http://mitm.it"},
                b""
            )

addons = [CertDetectionRedirect()]

补充说明:如果用户首次访问的是HTTP站点,不会触发TLS握手失败,你可以额外在HTTP请求的处理逻辑中增加状态标记校验,未检测到已安装标记的请求统一触发重定向即可。

内容的提问来源于stack exchange,提问作者mama

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 02:36:04