排除特定主机或端口不解密 — 精细化控制解密范围
为什么要排除
有些场景下你想解密某个应用的全部连接,但有少数主机或端口不想解密:
- 某些银行 APP 连接到安全支付网关,解密可能触发风控
- 应用的广告 SDK 连接到某些域名,不想浪费算力解密广告流量
- 某些服务器证书异常,解密时频繁报错,直接跳过
两种方式
方式一:Decryption rules 里按主机排除
在 Decryption rules 列表里,添加一条排除规则(exclude rule),类型选主机或端口,比应用规则优先级更高。适合少数几个具体主机/端口的场景。
方式二:mitmproxy --ignore-hosts
更灵活的方式是在 PCAPdroid 设置里找到 Additional mitmproxy options(位于 TLS 解密相关设置区域),填入原生 mitmproxy 的命令行参数。
--ignore-hosts 支持正则匹配,例如:
--ignore-hosts .*:1234
这条规则表示端口 1234 上的所有主机都不解密,只解密其他端口。
--ignore-hosts ads.example.com:443
只跳过 ads.example.com:443 这一条,其他照常。
--ignore-hosts (ads|analytics)\.example\.com
用正则一次性跳过多个匹配域名。
注意事项
- 排除规则优先于解密规则——如果一条连接同时命中了解密规则和排除规则,排除生效
--ignore-hosts是 mitmproxy 原生参数,语法严格遵循 PCRE 风格正则,注意转义- 多参数用空格分隔,比如同时排除端口和某个域名:
--ignore-hosts .*:1234 --ignore-hosts ads.example.com - 改完规则不需要重启抓包,规则在连接建立时生效,已有连接不受影响
实用示例
- 跳过 80 端口:明文 HTTP 本来就没解密,跳过可减少 mitmproxy 处理开销:
--ignore-hosts .*:80 - 跳过所有 QUIC 端口(443/udp):配合 QUIC 阻断开关可能产生冲突,根据实际效果调优