1 Charles简介
Charles
是一个HTTP代理/ HTTP监视器/反向代理,能够查看其机器和Internet
之间的所有HTTP和SSL / HTTPS
流量。这包括请求,响应和HTTP
标头(包含cookie
和缓存信息);- 在做移动开发时,为了调试与服务器端的网络通讯协议,可以使用
Charles
截取网络封包进行分析; Charles
通过将自己设置成系统的网络访问代理服务器,使得所有的网络访问请求都通过它来完成,从而来实现网络封包的截取和分析;Charles
也可以用于分析第三方应用的通讯协议。配合Charles
的SSL
功能,Charles
还可以分析Https
协议。
2 Charles主要功能
- 可以从官网看到如下信息:
- 大致意思是:
python
1、SSL代理--以纯文本形式查看SSL请求和响应
2、带宽限制以模拟较慢的互联网连接,包括延迟
3、AJAX调试--将XML和JSON请求和响应视为树或文本
4、AMF--以树的形式查看Flash远程处理/Flex远程处理消息的内容
5、重复请求以测试后端更改
6、编辑请求以测试不同的输入
7、拦截和编辑请求或响应的断点
8、使用W3C验证器验证记录的HTML、CSS和RSS/atom响应
3 Charles下载
- Charles官网地址:
- 点击图中的下载按钮进入下载页面:Charles下载页面:
- 选择自己的操作系统进行下载,我这里使用的是
Windows
平台。
4 Charles安装
- 下载后双击执行即可:
- 按照提示安装完成即可:
- 安装完进入主界面:
- 一般下载后有30天的试用:
- 如果想科学使用,可以尝试以下方法,目前在
4.6.5
版本验证是ok
的:
python
# 感谢网友提供的方法:
charles-Help-Register Charles:
Registered Name: https://zhile.io
License Key: 48891cf209c6d32bf4
5 Charles界面介绍
- 主界面介绍如下:
6 不能抓取localhost数据的解决方法
- 我们部署了一个测试环境,这个测试环境部署在本地;
- 但是
Charles
不能抓取到数据包; - 经过看官网中介绍如下:
- 意思是系统使用的是硬编码不能使用
localhost
进行传输,所以抓不到; - 以下是设置方法,打开
hosts
文件,增加以下内容:
python
# 文件路径:
C:\Windows\System32\drivers\etc
# 增加内容:
127.0.0.1 http://localhost.charlesproxy.com/
- 然后在浏览器中输入
http://localhost.charlesproxy.com/
即可,进入我们的测试环境: - 然后再看
Charles
可以抓包数据包了:
7 http抓包
- 这个不用过多设置,打开软件即可使用;
- 这里可以看到有个
http
协议的数据;
8 https抓包
8.1 SSL证书导入
- 需要安装
SSL
证书; - 打开
Charles
工具,点击【Help】-->【SSL Proxying】-【install Charles Root Certificate 】
安装Charles
根证书; - 打开证书安装界面:
- 点击【安装证书】:
- 选择如下内容:
- 选择如下:
8.2 SSL Proxying Setting设置
-
选择
【Proxy】-->【SSL Proxying Setting】
,勾选【Enable SSL Proxying】
: -
可以查看到抓到了相关
https
的数据包:
9 APP抓包
9.1 电脑配置
-
打开
Charles
工具; -
点击
【Help】-->【local IP Address】
获取下ip地址: -
比如我的
ip
是192.168.1.23
,当然也可以使用ipconfig
命令查看本地电脑的ip地址: -
打开
Proxies Settings
,设置端口,这里注意要设置自己电脑没有占用的端口,默认为8888: -
通过以上设置,我们得到以下:
python
ip:192.168.1.23
端口:8888
9.2 手机配置
- 打开手机的
WiFi
设置界面,点击连接的WiFi
网络; - 点击代理:
- 选择【手动】:
- 设置代理
ip
和端口,即咱们之前获取的ip
和设置端口,保存即可:
python
ip:192.168.1.23
端口:8888
- 在手机上操作,就可以看到相关的数据信息了:
- 通过以上设置一般不能抓到手机上的
https
包,上边的图中其实是我已经设置过了; - 如果抓取不到手机上的
https
包,也需要导入SSL
证书,操作是点击【Help】--【SSL Proxying】-【install Charles Root Certificate】
: - 点击
【Install Charles Root Certificate On a Mobile Device or Remote Browser】
,在手机上输入图片中的网址安装证书即可:
10 Charles如何过滤数据?
10.1 Filter过滤
- 在
Filter
中填入需要过滤的条件即可,过滤前我们有很多数据: - 我想把
localhost
相关的过滤出来,直接在Filter
中输入localhost
即可:
10.2 Recording Settings过滤
- 直接点击 【Proxy】-【Recording Settings】-【Include】-【add】:
- 输入需要抓取的目标地址、端口、主机等信息即可,这样做的话,只能抓到设置的主机数据。
11 Charles如何进行弱网测试?
- 和
fiddler
一样,Charles
也可以进行弱网测试; - 点击
【Proxy】--【Throttle Setting】-【Enable Throttle】
- 设置网络的上传和下载速率即可。
12 Charles篡改数据?
- 选择接口,右键
【Breakpoints】
:
- 点击
【proxy】-【Breakoint Setting】
打开断点设置窗口: - 双击这个接口,可以进行请求和响应数据设置: