Charles是在 Mac 下常用的网络封包截取工具,在做 移动开发时,我们为了调试与服务器端的网络通讯协议,常常需要截取网络封包来分析。
Charles 通过将自己设置成系统的网络访问代理服务器,使得所有的网络访问请求都通过它来完成,从而实现了网络封包的截取和分析。除了在做移动开发中调试端口外,Charles 也可以用于分析第三方应用的通讯协议。配合 Charles 的 SSL 功能,Charles 还可以分析 Https 协议。
1.下载安装 链接:https://pan.baidu.com/s/1qHsAqmz4o_puCgFgljhA4w 密码:q49f,把对应的jar包进行替换就可以破解 (mac地址:/ApplicationsCharles.app/Contents/Java )
2.当然能下载到官网的最好 https://www.charlesproxy.com/download/
3.关于安装 将Charles设置成系统代理:Charles是通过将自己设置成代理服务器来完成封包截取的,所以使用Charles的第一步是将其设置成系统的代理服务器,,之后,你就可以看到源源不断的网络请求出现在 Charles 的界面中。
Charles 主要提供两种查看封包的视图: Structure 、Sequence
Structure:将网络请求按访问的域名分类
Sequence:将网络请求按访问的时间排序
1.要截取 iPhone 上的网络请求,我们首先需要将 Charles 的代理功能打开。在Charles的菜单栏上选择 “Proxy”–>“Proxy Settings”,填入代理端口 8888,并且勾上“Enable transparent HTTP proxying”就完成了在Charles上的设置 2. Charles 的顶部菜单的 “Help”–>“Local IP Address”,即可在弹出的对话框中看到 IP 地址 3.手机上设置:将手机wifi 代理配置为手动,输入代理端口号8888 以及代理服务器 本机地址 4.设置好之后,我们打开 iPhone 上的任意需要网络通讯的程序,就可以看到 Charles 弹出 iPhone 请求连接的确认菜单,点击“Allow” 即可完成设置。
安装证书:如果你需要截取分析 Https 协议相关的内容。那么需要安装 Charles 的CA证书: 1.首先我们需要在 Mac 电脑上安装证书。点击Charles的顶部菜单,选择 “Help” –>“SSL Proxying” –> “Install Charles Root Certificate”,然后输入系统的帐号密码,即可在KeyChain看到添加好的证书 2.需要注意的是,即使是安装完证书之后,Charles 默认也并不截取 Https 网络通讯的信息,如果你想对截取某个网站上的所有 Https网络请求,可以在该请求上右击,选择SSL proxy
在做移动开发的时候,我们常常需要模拟慢速网络或者高延迟的网络,以测试在移动网络下,应用的表现是否正常。Charles对此需求提供了很好的支持。 在Charles的菜单上,选择 “Proxy”–>“Throttle Setting” 项,在之后弹出的对话框中,我们可以勾选上 “Enable Throttling”,并且可以设置 Throttle Preset 的类型,如果我们只想模拟指定网站的慢速网络,可以再勾选 “Only for selected hosts” 项,然后在对话框的下半部分设置中增加指定的hosts项即可
如下图:选中想要修改的请求url,点击右上角编辑图标,进行编辑,最后点击Execute执行。
我们可以使用Charles的Repeat功能来简单地测试服务器的并发处理能力,我们在想打压的网络请求上(POST或GET请求均可)右击,然后选择「Repeat Advanced」菜单项,如下所示:
Charles 提供了 Map 功能、 Rewrite 功能以及 Breakpoints 功能,都可以达到修改服务器返回内容的目的。这三者在功能上的差异是: 1. Map 功能适合长期地将某一些请求重定向到另一个网络地址或本地文件。 2. Rewrite 功能适合对网络请求进行一些正则替换。 3. Breakpoints 功能适合做一些临时性的修改。 Map: 在 Charles 的菜单中,选择 “Tools”–>“Map Remote” 或 “Map Local” 即可进入到相应功能的设置页面: 对于Map Local功能,我们需要填写的重定向的源地址和本地的目标文件。对于有一些复杂的网络请求结果,我们可以先使用Charles提供的Save Response,将请求结果保存到本地,然后进行修改,成为我们的目标映射文件。
Rewrite: 适合对某一类网络请求做一些正则替换,达到修改结果的目的,比较适合做批量和长期替换
Breakpoints: 很多适合我们需要做一些临时的修改,对一次网络请求进行结果修改,Breakpoints功能类似设置断点,当指定请求发生时,Charles会截获该请求,这个适合我们可以在Charles中临时修改请求返回的内容。注意要避免暂停时间过长而导致请求超时或者关闭。
乱码解决: 1.打开Charles,上方菜单栏->Help->SSL Proxying->Install Charles Root Certificate,搜索Charles Proxy CA,修改为始终信任。
2. Proxy->SSL Proxy Settings->Add