背景
想获取移动端的数据包。
环境
pc操作系统:macOS Big Sur
移动端机型:iphoneX
移动端IOS版本:13.6
抓包软件:Charles v4.6.1
操作步骤
第一步:统一网络环境
手机和pc必须连接同一个wifi,好处于同一个网络内。
第二步:Charles设置代理
开启Charles的代理,并设置代理端口
1、Proxy -> Proxy Settings
2、端口默认为8888,也可以改
3、勾选Support HTTP/2 和 Enable transparent Http proxying
第二步:手机设置代理
获取pc和手机的ip地址,并给手机配置pc作为代理。
1、找到当前连接的无线网,获取手机的ip地址:192.168.1.9,点击最下面HTTP代理
2、网络适配器中获取pc的ip地址为192.168.1.8
3、配置代理,服务器为地址填上一步查到的pc的ip,端口填Charles代理的端口
4、有的手机可能还得重新连下无线网,并确认一下代理是不是配置好了。
第三步:Charles添加手机白名单
1、Proxy -> Access Control Settings
2、Add -> 填入手机的ip地址 -> OK
到这,Charles就已经可以抓到手机请求的数据包了,但是有个问题,针对Https协议抓到的数据包是加密的,看不到明文,比如下面:
适配HTTPS
第一步:pc上安装ssl证书
1、Help -> SSL Proxying -> Install Charles Root Certificate
会自动打开钥匙串,需要输入pc的登陆密码。
2、钥匙串中找到Charles Proxy的证书,双击,设置始终信任
第二步:移动端安装ssl证书
1、Help -> SSL Proxying -> Install Charles Root Certificate on a Mobile Devicer or Remote Browser
Charles会给提示,需要用手机访问:chls.pro/ssl 获取ssl证书。
2、手机浏览器访问chls.pro/ssl 会自动下载证书,点允许,然后点关闭
3、手机设置 -> 已下载描述符文件 -> 安装 -> 完成
4、手机设置 -> 通用 -> 关于本机 -> 证书信任设置
针对根证书启用完全信任
第三步:Charles设置SSL代理
1、Proxy -> SSL Proxying Settings
2、先勾选Enable SSL Proxying
3、Include下Add,Host配置*,Port配置443
4、OK
5、重启下Charles
测试
抓到明文了,搞定。
踩坑
1、抓包返回HTTP/1.1 200 Connection established
偶尔有几个不印象的话就不用管,如果全都是返回这个可能就是ssl证书的问题,可能是失效了,本人遇到过一次,表现为:登陆微博后,点击我,加载不出任何内容。重装手机端的ssl证书后解决。