工作需要,同事叫帮忙抓一个广告请求的 Request, 很简单的事情最后也搞的比较麻烦。记录一下,可能的话,希望为后来者提供便利。
个人的例子为,在安卓手机上安装自己简单写的Demo APP,在加载广告的时候,观察某个合作伙伴的广告请求是否正常。电脑使用为 Mac
1. 首先安装 Charles, 下载地址,正常安装即可:
https://www.charlesproxy.com/download/latest-release/
2. 设置 Charles:
打开 Charles, 关闭 Proxy -> MacOs Proxy (此功能为抓取 Mac 电脑上的流量)
打开 Proxy -> Proxy Setting -> Enable transparent HTTP proxying (打开 Http 代理), 并填写端口,理论上随便填,建议 8888
因为要抓取 Https 的流量,故需要设置 Proxy -> SSL Proxying Settings,勾选 Enable SSL Proxying 并在 SSL Proxying 中将手机IP设置添加,也可以设置 * 允许所有客户端IP,端口填写 443(Https 端口)
3. 电脑安装 Charles 证书
此为Mac下的添加方式, Windows 暂不了解
Help -> SSL Proxying -> Install Charles Root Certificate, 在打开的设置中心中找到 Certificate, 再找到 Charles 证书, 双击其证书,可以打开证书详情,选择信任即可 (Always Trust)
至此电脑端设置完成,为了抓取traffic, Android 手机端也需要做两件事:
1. 连接 Charles 代理
首先保证手机与电脑在同一路由下,即同一 Wifi 下, 长按Wifi名,修改网络,高级 -> 代理 -> 选择手动设置代理,
此时有几个选项需要填写,这里只需要填写 端口 与主机名 即可,主机名填写电脑的IP,端口填写上面自己设置的端口,有个小技巧是,打开Charles, Help -> Install Charles Root Certificate On a mobile device or Remote browser, 其会出现一个对话框,上面有IP名与端口号, 类似于:
Configure your device to use Charles as its HTTP proxy on 192.168.3.2:8888, then browse to chls.pro/ssl to download and install the certificate.
192.168.3.2 即为 IP 名, 8888 即为端口号。
连接成功后,Charles 上会弹出一个对话框,显示 XXX 设备尝试连接Charles,是否允许,选择允许即可。
2. 手机安装证书
手机连接 Charles 代理后,打开Charles, Help -> Install Charles Root Certificate On a mobile device or Remote browser, 按要求,在手机端任意非自带浏览器输入 chls.pro/ssl 即可,其会自动开始下载证书,下载完成点击安装即可。安装过程中会要求输入证书名,输入任意字符串即可,建议 Charles。
安装成功后,可以在设置-> 证书 -> 用户证书中找到,IOS 设备需要另外设置相信证书。
理论上,完成上述就可以开始愉快的抓包了,不过越简单越容易出问题,遇到的问题:
1. 手机无法连接 Charles
相关设置后,死活连接不是Charles, 个人发现问题可能是由于家里使用电视机顶盒Wifi,并没有独立路由(具体原因不清楚,待研究),后面通过另外一部手机发送热点,电脑与测试设备连接该热点把这个问题解决了,这个问题应该不常见。
2. Https 抓包显示 Unknow
全部搞定了,然而Https 抓包信息依然 unknow, 网络大部分都说是证书问题,然而我们信任了证书呀,后面发现 Android 7.0 以上对用户证书添加了限制,需要在 Android 层添加修改:
因为 APP 为自己写的,故可直接配置 Network Security Configuration,官网介绍
简述配置如下:
添加如下文件 res/xml/network_security_config.xml 内容:
之后在 Application 节点下设置: android:networkSecurityConfig="@xml/network_security_config"
本人在APP 设置该配置后,便可以愉快的抓 Https 包体了, 上找到另外一篇文章其第五部分关于这里讲的挺详细,链接如下:
https://www.jianshu.com/p/3b4cd6fdd8a9
写下此文,作为笔记,纪念多折腾的几个小时