数码知识屋
霓虹主题四 · 更硬核的阅读氛围

加密流量怎么抓包?实战教你绕过HTTPS抓取数据

发布时间:2025-12-16 14:48:56 阅读:1 次

加密流量怎么抓?别被HTTPS吓住

开发调试时,经常需要查看App或网页发送的网络请求。但现在很多应用都用上了HTTPS数据被加密了,直接用Wireshark这类工具抓出来的全是乱码,根本没法看。这时候就得想办法“拆开”这层加密,把明文数据捞出来。

原理其实不复杂

HTTPS之所以安全,是因为通信双方通过SSL/TLS协议加密传输。但只要我们能在客户端“中间插入”自己,让设备信任我们的代理服务器,就能解密流量。这叫中间人攻击(MITM),当然这里是为了调试,不是干坏事。

常用的方法是用抓包工具做代理,比如Charles、Fiddler或者更流行的Burp Suite和mitmproxy。它们会生成一个CA证书,你装到手机或电脑上,工具就能动态解密HTTPS流量。

以Charles为例的操作流程

打开Charles,它默认监听8888端口。在手机Wi-Fi设置里配置代理,地址填电脑IP,端口8888。第一次访问HTTPS网站时,Charles会弹提示让你安装证书。

iOS用户需要在“设置-通用-关于本机-证书信任设置”里手动开启完全信任。Android也类似,得在系统设置里把Charles的证书加进受信凭据。

一旦证书装好,刷新页面,就能看到完整的请求头、参数、响应体,连POST的数据都清清楚楚。

命令行党可以用mitmproxy

如果你习惯终端操作,mitmproxy是个轻量选择。安装完后运行:

mitmproxy -p 8080

然后手机配代理到这台机器的8080端口,访问任意HTTPS页面,mitmproxy界面就会实时显示请求流。按e可以编辑请求再转发,特别适合接口调试。

首次使用同样要装证书,浏览器访问mitm.it会自动跳转下载页,选对应系统点一下就行。

安卓App绕过证书校验(高级技巧)

有些App做了证书绑定(SSL Pinning),就算你装了Charles证书也没法抓包。这时候得动点手脚。

用Apktool反编译APK,找到网络安全配置文件res/xml/network_security_config.xml,把certificates引用改成允许用户证书:

<domain-config>
<domain includeSubdomains="true">example.com</domain>
<trust-anchors>
<certificates src="system" />
<certificates src="user" />
</trust-anchors>
</domain-config>

重新打包签名安装,再试抓包,基本就能看到了。也可以用Xposed插件JustTrustMe,免去反编译麻烦。

别忘了过滤和搜索功能

真实环境下的流量很多,光看全部请求效率太低。Charles支持Filter输入关键词,只显示包含特定域名或路径的请求。mitmproxy可以用命令行参数过滤,比如:

mitmproxy -i "~d api.example.com"

这样就只拦截目标域名,干净利落。

抓包不只是看数据,还能修改请求重发。右键某个请求选“Repeat”,改几个参数试试边界情况,对测试API容错很有帮助。