MitM 以及 HTTP(S) Rewrite
此功能目前仍属于实验性功能,如配置后连接出现问题请暂时关闭该功能并通过邮件或 Telegram 群组反馈。
当前版本的 MitM 支持对 HTTP(S) 请求的 URL 进行匹配以及 URL Rewrite,后续版本可能会增加 Headers 匹配/改写、运行脚本等更多功能。
准备
准备 CA 证书
在启用 MitM 之前,需要有一个 CA 证书。
由于当前版本的 app 不支持自动生成,您可以导入已有的 CA 证书,或通过其他工具创建新的 CA 证书。
导入已有 CA 证书
如您已有可用 PKCS 12/PFX 证书(例如您已经正在使用其他支持 MitM 的软件,或部署私有 PKI 系统),可将其进行 base64 编码,并保存编码后的结果备用。
您同时还需要创建该证书时指定的密钥。
对于大部分用户来说,您可能已有可用证书(及其密钥)。
创建全新 CA
Linux/Windows 参考:
将 PEM 格式转换为 PFX:https://stackoverflow.com/a/808742/1109167
对于大部分用户,您可能已有可用 CA 证书。如您有安全性顾虑,建议创建个人 CA 证书。
将 P12 证书转换为 base64 编码:
至此,应该已经准备好了:
base64 编码的 p12 格式 CA 证书
该证书对应的密钥
信任证书
上一步准备好的 pfx 证书发送到手机(通过邮件/AirDrop等方式并在手机中打开安装该证书。
安装好后,进入系统设置,手动信任该证书。参考:https://support.apple.com/zh-cn/HT204477#:~:text=If%20you%20want%20to%20turn,Mobile%20Device%20Management%20(MDM)
至此,准备工作结束。
配置
MitM
由于 clash 使用 yaml 格式的配置文件,为保持一致性,MitM 相关功能仍然通过 yaml 配置文件来设置。
相关的配置项:
至此 MitM 配置完毕。
如果 log-level 设置为 debug,匹配 MitM hostname 的请求会出现在日志中。
启用 MitM 后可以解密 HTTPS 请求与响应,由于目前版本不支持显示相关内容,所以无法通过 UI 查看。未来的版本中会增加该功能。
Rewrite
由于仅配置 MitM 目前来说没有任何实际意义,可通过配合 URL Rewrite 规则来实现进阶的规则匹配与处理。
相关的配置项:
参数解释:
每一组 Rewrite 规则由以下参数组成:
regex:需要重写的请求 URL,支持正则表达式
match:
url
表示匹配请求的 URL。目前仅支持
url
一项,之后会新增
action:
reject:直接关闭连接
reject-image:修改该请求的响应,返回 1x1 像素大小的图片文件
自定义 status code:例如,200/404 等
header:会替换请求 header 中的 Host 字段
target:仅当 action 设置为 3xx status code 时,会设置 Location header 为 target 值,实现 URL 重定向
可以使用正则表达式引用例如:
更多规则可参考,并更具实际使用场景做出调整:https://raw.githubusercontent.com/Watfaq/choc-configs/main/samples/rewrite.yaml
参考链接
如有疑问,可通过文章顶部邮件/Telegram 用户群组反馈。
也可通过支持 Web3 的浏览器访问本文部署于 IPFS 上的版本:http://choc.watfaq.eth/advanced-usage/mitm.html
最后更新于