使用Charles对移动设备抓包
1.Charles简介
Charles
是一款代理服务器,通过成为电脑或者浏览器的代理,然后截取请求和请求结果达到分析抓包的目的。该软件是用Java写的,能够在Windows,Mac,Linux上使用,安装Charles的时候要先装好Java环境。这里是**版的下载链接,提取码是:fjoo
2.Charles主要功能
- 支持SSL代理。可以截取分析SSL的请求。
- 支持流量控制。可以模拟慢速网络以及等待时间(latency)较长的请求
- 支持AJAX调试。可以自动将json或xml数据格式化,方便查看
- 支持AMF调试。可以将Flash Remoting 或 Flex Remoting信息格式化,方便查看
- 支持重发网络请求,方便后端调试
- 支持修改网络请求参数
- 支持网络请求的截获并动态修改
- 检查HTML,CSS和RSS内容是否符合W3C标准
3.Charles使用
-
证书安装
抓电脑的包选择install Charles Root Certificate
抓移动端的包选择install Charles Root Certificate on mobile Device or Remote Browser
这里记得安装证书时,需要将证书添加到受信任的证书列表 -
设置Https抓包
默认没开启https抓包,需要设置 SSL 代理:通过主菜单打开 Proxy | SSL Proxy Settings 弹窗,勾选Enable SSL proxying
,点击Add
按钮,可以过滤出允许https访问的网址,如果没有特殊需求,可将这里设置为*,意为全部匹配 -
浏览器的选择(划重点)
需要注意的是,Chrome
和Firefox
浏览器默认并不使用系统的代理服务器设置,而 Charles是通过将自己设置成代理服务器来完成封包截取的,所以在默认情况下无法截取Chrome
和Firefox
浏览器的网络通讯内容。如果你需要截取的话,在 Chrome 中设置成使用系统的代理服务器设置即可,或者直接将代理服务器设置成127.0.0.1:8888
也可达到相同效果。 -
找不到
request
和response
新版本的Charles默认没打开request
和response
,打开Edit->prefrence,选择Viewers,将默认的Combine request and response
勾去掉即可
4.对PC端抓包
现在的配置就可以对PC端进行抓包了,我这里在浏览器中访问百度,搜索关键词123456
,得到以下结果,可以在Request
中找到我的搜索项
抓取到的响应数据
4.在移动端抓包
-
在移动端和PC端安装证书
PC端安装证书在前边讲过了,不予赘述
移动端安装证书需要访问移动端浏览器,在网址输入栏键入
chls.pro/ssl
,下载好证书后,需要安装证书,我这里用的是ipad,需要在设置->通用->描述文件->选择证书,信任,然后还有亿点小插曲我的设备是ios10.3,按照上述证书信任后,还不能正确抓包,因为这个还没有正确信任,它提示你
Client SSL handshake failed: An unknown issue occurrenotepadd processing the certificate (certificate_unknown)
解决方案:设置->通用->关于本机->证书信任设置-> 找到charles proxy CA然后信任该证书即可.
-
配置代理
确认当前移动设备与安装charles的电脑在同一局域网下,选择配置代理一项,选择手动
配置IP地址:在服务器一栏键入安装Charles电脑的IP地址(可通过cmd的ipconfig查看或者通过Charles的Help一栏查看)
配置端口:在Charles中寻找Proxy->proxy Settings查看端口,默认为8888
然后你的PC端会发送一个请求,允许代理
-
代理后移动端无网络的解决方案
需要将系统的防火墙关闭,即可正常访问网络
最后抓完包记得将代理关闭(敲黑板)
-
试着抓个包
打开
Bilibili
,搜索一下我女朋友的名字新垣结衣
,出现以下界面
然后我们看一下Charles中我的请求keyword:新垣结衣
然后是抓取到的关于我老婆的一点信息:
5.总结一下
其实,抓包什么的不太重要,我只是来秀我老婆的