前端抓包神器Charles
Q: Charles是什么
A: Charles是一个抓包工具,类似工具还有Fiddler。Charles相当于一个插在服务器和客户端之间的“过滤器”;当客户端向服务器发起请求的时候,先到Charles进行过滤,然后Charles在把最终的数据发送给服务器;
Q: Charles能干什么
A: 常做以下这些事:
- 抓取 Http 和 Https 的请求和响应,抓包是最常用的了。
- 重发网络请求,方便后端调试,复杂和特殊情况下的一件重发还是非常爽的(捕获的记录,直接repeat就可以了,如果想修改还可以修改)。
- 修改网络请求参数(客户端向服务器发送的时候,可以修改后再转发出去)。
- 网络请求的截获和动态修改。
- 支持模拟慢速网络,主要是模仿手机上的2G/3G/4G的访问流程。
- 支持本地映射和远程映射,比如你可以把线上资源映射到本地某个文件夹下,这样可以方面的处理一些特殊情况下的bug和线上调试(网络的css,js等资源用的是本地代码,这些你可以本地随便修改,数据之类的都是线上的环境,方面在线调试);
- 可以抓手机端访问的资源(如果是配置HOST的环境,手机可以借用host配置进入测试环境)
Q: 安装Charles
A:从官网 (opens new window)直接下载,并用以下账号注册
Registered Name: https://zhile.io License Key: 48891cf209c6d32bf4
Q: 如何抓包http请求
A:开启mac的代理功能即可,这样会把chrome所有的请求都代理到charles中。操作:
- Proxy --> 勾选macOS Proxy
- 同时确认Proxy-> Proxy settings ->proxies :勾选enable transparent http proxying
Q: 如何抓包https请求
A:没有设置任何东西,一般请求到的https是unknown,这是因为https需要信任的本地证书。所以需要在本地安装证书,操作:
安装并信任证书
:Help --> SSL Proxying --> Install Charles Root Certificate会自动安装证书 --> Mac需要输入密码信任证书,找到Charles开头的证书,双击选择信任即可。添加https代理
:Proxy-> SSL Proxying Settings->SSL Proxying:勾选Enable SSL Proxying + 添加Location(host设置为“*”,Port设置为“443”)
Q: 关闭Charles后,无法访问网络
A: 这是因为在使用Charles后,把Mac作为了代理。退出Charles应用程序并不会自动关闭掉Mac的代理,所以需要我们手动关闭Mac代理。操作:
Go to Applications > System Preferences > Network > Advanced > Proxies and deselect any proxies that have been selected.