一、介绍
Charles 属于抓包软件。
Charles 多平台支持,mac、windows、linux。
Charles 是收费软件,可以免费试用 30 天。试用期过后,未付费的用户仍然可以继续使用,但是每次使用时间不能超过 30 分钟,并且启动时将会有 10 秒种的延时。
二、原理
三、基础功能
1、主界面
层级关系:session -> request
request 分为两种展示方式:
- Structure 视图将网络请求按访问的域名分类。
- Sequence 视图将网络请求按访问的时间排序。
2、抓包电脑
记得把 proxy -> Recording 打开。
3、抓包手机
以我的 三星 s9 手机为例:
(1)SSL 代理设置
打开 Proxy -> Proxy Settings...,在弹出的窗口中选择SSL选项卡,勾选Enable SSL proxying,接着在下方点击Add,添加:
(2)手机 代理设置
Android 上,配好代理(如下图)。
坑:
三星手机不能在已经连好的网络上点高级然后添加代理,而是要忘记网络,然后在初始化连接的时候输入代理设置。
(3)安装 CA 证书
注意:v3.10 以前的 charles ,需要去官网直接下载电脑端和手机端 CA 证书:https://www.charlesproxy.com/documentation/additional/legacy-ssl-proxying/
1、针对电脑端的 CA 证书:
Mac 上,打开 Help -> Install Charles SSL Certificate...,会弹出 Keychain Access 程序,找到 Charles Proxy SSL Proxying 这个 CA 证书,然后双击打开详情窗口,确保都 trust 了:
2、针对手机端的 CA 证书:
然后,在手机浏览器上打开chls.pro/ssl,信任 Charles 的 CA 证书。
(4)上面的都弄好了,为什么爬取到的 https 内容会有乱码?
以爬取 安卓APP 为例,从 Android N 开始,您需要向您的应用添加配置,以使其信任Charles SSL Proxying生成的SSL证书。
具体参考:https://www.charlesproxy.com/documentation/using-charles/ssl-certificates/
应用的配置可不容易添加,这是得上反向工程再重新编译吗?待解决。
四、高级功能
1、过滤请求
2、编辑请求 + 重发(支持高级重发:可做压力测试)
3、模拟慢速网络:Throttle 功能
4、修改服务器返回内容
- Map 功能适合长期地将某一些请求重定向到另一个网络地址或本地文件。
- Rewrite 功能适合对网络请求进行一些正则替换。
- Breakpoints 功能适合做一些临时性的修改。
5、反向代理
五、坑
1、mac 上抓包时好时坏,不知道为什么
原因:是因为我 mac 上使用了 shadow,socks 软件的问题。
解决方案:必须 退出 shadow,socks (注意,仅关闭不退出是没用的)。如果没生效,重启下 Charles 即可。
2、监控手机时抓不到微信朋友圈的请求,不知道为什么
原因:待解决
参考文章