charles介绍及工作原理
介绍
charles其实是一款代理服务器,通过成为电脑或者浏览器的代理,然后截取请求和请求结果达到分析抓包的目的。该软件是用Java写的,能够在Windows,Mac,Linux上使用,安装Charles的时候要先装好Java环境。
Charles是在 常用的网络封包截取工具,在做移动开发时,我们为了调试与服务器端的网络通讯协议,常常需要截取网络封包来分析。Charles 通过将自己设置成系统的网络访问代理服务器,使得所有的网络访问请求都通过它来完成,从而实现了网络封包的截取和分析。除了在做移动开发中调试端口外,Charles 也可以用于分析第三方应用的通讯协议。配合 Charles 的 SSL 功能,Charles 还可以分析 HTTP协议
Charles 是收费软件,可以免费试用 30 天。试用期过后,未付费的用户仍然可以继续使用,但是每次使用时间不能超过 30 分钟,并且启动时将会有 10 秒种的延时。因此,该付费方案对广大用户还是相当友好的,即使你长期不付费,也能使用完整的软件功能。只是当你需要长时间进行封包调试时,会因为 Charles 强制关闭而遇到影响。
主要功能
1、截取 Http 和 Https 网络封包 抓包
2、支持重发网络请求,方便后端调试
3、支持修改网络请求参数
4、支持网络请求的截获并动态修改
5、支持模拟慢速网络
工作原理
截获真实客户端的HTTPS请求,伪装客户端向真实服务端发送HTTPS请求
接受真实服务器响应,用Charles自己的证书伪装服务端向真实客户端发送数据内容
原理案例
租房子: 房客 中介 房东
网页抓包
web端http抓包
手机抓包
1、查看电脑IP地址
win+r 打开运行 输入 cmd 打开命令
输入命令 ipconfig
2、Charles代理设置
proxy->Proxy Settings...->proxies->port:8888勾选Enabletransparent http proxying->ok
注意 端口不能有冲突
>
3、在手机设备、模拟器或者远程浏览器上设置代理
注意:抓取手机设备上的请求包(手机和电脑必须在同一个局域网内,并关闭电脑防火墙、其他代理或者翻墙软件)
第一步:在手机wifi 上设置代理 -> 长按无线网络-->修改网络-->高级选项-->代理 手动-->手动输入输入IP、端口号
服务器IP:PC机器的IP(通过之前介绍的查看IP的方法)
端口号:8888(通过之前介绍的查看端口的方法)
第二步:Charles弹出询问“allow”或者“deny”,点击“allow”按钮允许;出现手机的HTTP请求列表
4、常见问题
手机终端和计算机要在同一个网络中
端口不能冲突
电脑防火墙
allow
https安装证书
1、打开charles
2、选择help-ssl proxying
3、选择第二个选项 针对于web端
4、选择安装证书
5、选择将所有的证书放入下列存储
6、选择受信任的根证书颁发机构
7、下一步 完成
导出证书
1、打开charles
2、选择help-ssl proxying
3、save
4、选择存放路径以及证书名
导入证书
Charles 主界面介绍
Structure视图
Structure:树状结构显示,将网络请求按访问的域名分类;
Sequence视图
Sequence:水平结构显示,将网络请求按访问的时间排序
Proxy 菜单
过滤( Recording Settings )
Recording Settings
设置会话捕捉条件,include 面板用于启用/停止可以捕捉/显示的会话;
exclude 表示不显示的会话,在会话列表中右键选择 ignore 时,对应的url会出现在这里;
record_setting_add
比较好用的是过滤条件支持通配符,*表示任意多个字符,?表示一个字符,如Protocol中有http,https和 "",选择空白或者输入*都可以表示任意协议的请求;
Filter
过滤,可以输入关键字来快速筛选出 URL 中带指定关键字的网络请求
断点功能
在会话列表中右键点击某个会话,然后在菜单中选择Breakpoints;
通过Proxy-Breakpoint settings...中手动新建/启用某个断点;
要求勾选enable breakpoints之后当下次再有该请求时,会自动进入断点模式;
一个完整请求会进入断点模式2次:
1、request的发出之前;
2、收到服务器的response但尚未返回给客户端的时候;
断点request的时候,可以修改request信息,不过我们程序都有对请求header做校验和处理,修改参数后一般就直接报错了,所以这里看看response就好
fiddler抓http包
在打开的fidder中选中tools->options
在弹出的options对话框中选中capture HTTPS Conects Decrypt
Https traffic Ignoreserver Certificate errors(unsafa)
Actions->exprot root certificate to desktop
回到桌面双击 安装证书 (信任的根证书目录)
访问项目地址 ,进行https抓包
fiddler手机端
查询本地IP地址win+r在运行中输入cmd,在打开的命令中输入ipconfig回车
在打开的fiddler界面中选择'工具'-菜单-选项-在打开对话框中选择connections
设置代理端口号为:8888 确定重启fiddler
在手机端无线网设置界面 长按选择‘修改网络’,在修改网络页面选择高级设置
代理服务器选择手动 输入代理服务器地址和端口号
手机访问项目地址 在fiddler中查看抓到的内容