HTTPS 自定义端口抓包配置 从 Charles 到 SniffMaster 的端口处理方案

Charles 和其他代理抓包工具默认只对 443 端口做 HTTPS 解密,遇到 8443、9443 等非标端口需要额外配置。本文介绍了 Charles、Proxyman、Fiddler 的自定义端口配置方法,以及 SniffMaster 暴力抓包如何绕过端口限制直接抓取所有 HTTPS 流量。

有次排查一个接口问题,对方说 HTTPS 接口跑在 8443 端口上,Charles 里看全是乱码。查了一圈发现 Charles 默认只对 443 端口做 SSL 解密,其他端口需要手动配置才生效。这个问题其实挺常见的——为了安全或绕开运营商限制,不少服务会用 8443、9443、7443 等非标准端口跑 HTTPS。

Charles 的自定义端口配置

Charles 默认的 SSL Proxying 只会对 443 端口生效。如果目标接口跑在 8443 上却只开了默认代理,Charles 能看到请求但解开全是乱码。解决方法是在 Proxy → SSL Proxying Settings → Add 里加一条规则。Location 填写域名加端口,如果 App 的接口域名会变或者懒得一个一个加,可以用通配符 *:8443 匹配所有域名下的 8443 端口。然后 Enable SSL Proxying 勾选上。

如果接口跑的端口比较多——比如同时用 443 和 8443——需要加多条规则。Charles 不支持端口范围匹配,只能逐条添加。端口号改了还得同步更新规则。

Proxyman 的端口配置

Proxyman 默认的 SSL 解密策略和 Charles 类似,只对 443 端口自动生效。自定义端口需要在 Certificate → SSL Proxying 里添加。Proxyman 支持按域名和端口组合添加规则,配置体验比 Charles 直观一些,但同样需要手动添加每条端口规则,改了端口就得更新配置。

Fiddler 的配置方式

Fiddler 在 HTTPS 选项卡里勾选 Decrypt HTTPS Traffic 后,默认也只解密 443 端口的流量。其他端口需要在 Tools → Options → HTTPS 里点 “Ignore server certificate errors” 或者修改 CustomRules.js 脚本,在 OnBeforeRequest 方法里手动处理非标端口的流量。配置路径比 Charles 更深,新手不容易找到。

SniffMaster 的端口处理

SniffMaster 的代理抓包模式和上面几个工具类似,也需要配证书和端口规则。但如果目标 App 的 HTTPS 接口用了非标端口,另一个思路是直接用 SniffMaster 的暴力抓包模式。暴力抓包走 USB 直连 iOS 设备,不依赖代理配置,所以不存在端口限制——不管目标接口跑在 443 还是 8443 或者 12345,都能正常抓取和解密。设备连上 Mac,在暴力抓包模式下所有经过设备的 HTTPS 流量都会被解密,不需要关心端口号是多少。

数据流抓包模式也不受端口限制,可以看到每条数据流的源端口和目的端口信息,适合排查端口相关的连接问题。数据可以导出为 pcap 格式,如果用 Wireshark 进一步分析,可以在过滤条件里直接写 tcp.port == 8443 定位特定端口的流量。

建议

Charles 日常调试 443 端口的接口时仍然是首选。遇到非标端口的场景,要么在 Charles/Proxyman 里加对应的 SSL 规则,要么备一个暴力抓包工具省掉端口配置的麻烦。