目录
一、前期准备
1.官网下载Charles
https://www.charlesproxy.com/,mac安装很简单Charles提供两种查看封包的页签,一个是Structure,另一个是Sequence,Structure用来将访问请求按访问的域名分类,Sequence用来将请求按访问的时间排序。任何程序都可以在Charles中的Structure窗口中看到访问的域名。
mac:
2.激活charles
前往https://www.zzzmode.com/mytools/charles/,输入RegisterName,对应生成一段key,复制后前往charles - Help - SSL Proxying - Install Charles Root Certificate输入之前的RegisterName和key。
3.charles设置端口号
charles内点击setting-Proxy Settings, 将port改为8888(或任意四位数字)。
4.手机连接到charles客户端的代理地址(这里以iOS系统为例)
(1):打开手机的设置页面;
(2):选择无线局域网;
(3):IOS点击连接的WIFI后面的感叹号,安卓应该是长按连接的WIFI;(注:这里主要以IOS为例)
(4):点击配置代理–>手动;
(5):输入本机IP地址以及端口号8888,这是我本机的,根据自己情况合理配置,本机IP可以在Charles软件中 - Help - Local IP Address中找到
(6):点击存储
5.手机安装证书
safari浏览器(或手机自带浏览器)进入chls.pro/ssl,会直接弹窗要求下载证书,点击确认即刻完成,进入设置,点击安装。同时去 关于手机-证书信任中打开此证书的信任开关,即可在charles客户端查看手机app抓包情况。
6.安卓手机抓包配置
安卓手机抓包安装证书需要用.cer格式的证书才能安装,charles默认下载的证书是.pem的。可以在Charles- Help- SSL proxying- Save Charles Root Certificate选择.cer格式的证书下载,下载好后传到手机里去,在手机里安装即可(Wi-Fi高级设置或者安全里安装证书)。
目前到这里安卓可以抓到接口了,但是部分https的会显示unknown还未解决?
解决方法:
请开发在安卓的APP代码里配置如下内容,安卓就可以抓包了。
二、常用操作
mac:
windows:
可以将charles的分为以下几个模块:
1.菜单栏
一些全局相关的配置,如:偏好设置、记录显示与编辑、记录展示方式、代理配置、常用的工具、帮助等等。
- File:可以导入导出保存记录,文件格式为.chls。
- View:高亮或者聚焦(会将其他请求折叠进一个文件夹)某个具体的请求,方便调试,也可以在对应请求的URL上面右键选中Focus进行聚焦。
- Proxy(重要):设置代理、网速、HTTPS、断点、DNS等等功能。
Reverse Proxy:反向代理,可以将本地的请求反向代理到其他请求。
Access Control Setting:用来配置局域网中的其他机器代理规则,可以配置哪些ip允许代理,默认会允许所有ip代理的。
弱网测试Throttle Settings下面会详细讲解。
- Tools
Block Cookies:阻塞请求,当请求访问特定地址时,它的 Cookie 就会被阻止,添加后再刷新后再列表中就看不到了。
Help:Local IP Address可以查看本机的IP,下面的install主要用于安装证书,后文会讲到。
2.工具栏
快捷设置菜单,如:清除记录、开关记录、开启弱网、断点设置、执行请求、重新请求等等。
例:重新发送请求
3.请求详情
请求详情来显示当前请求的具体信息,如:请求头、响应主体、请求主体、TLS、Timing(一些请求连接时间)、size、状态码等等信息,还可以用不同类型格式查看请求或响应内容。
三、弱网测试
1.proxy- Throttle Settings
2.勾选Enable Throttling
若仅勾选这个,不设置其他任何域名时,为全局设置,所有的https和http请求都走弱网。
3.Add,添加对应域名信息
勾选Only for selected hosts时,可以设置只对部分域名进行弱网,点击Add,可以添加对应域名信息。
4.设置网速
使用工具内部给定的网速:点击Throttle preset,下拉框选择想要的网速。(一般的弱网选3G就可以了)
5.其他参数解释
Bandwith-带宽、Utilistation-利用百分比、Round-trip-往返延迟、MTU-最大传输单元、download-下行速率、upload-上行速率。一般配置download和upload就够了,其他字段默认就行。
四、修改接口返回数据
1.rewrite
(1)Tools- rewrite
(2)勾选Enable Rewrite
(3)点击右边的第一个Add,添加重写的请求接口数据。
(4)点击右边的第二个Add,添加重写数据的规则。
(5)刷新页面重新请求,接口就会按修改后的请求返回了。
2.Breakpoints
适用于每次请求都需要修改部分值的场景
(1)Proxy-Breakpoint Settings
(2)勾选上Enable Breakpoints
(3)点击Add添加需要修改的请求
(4)刷新页面进行请求
(5)Charles会截取请求
(6)需要修改请求数据,可以点击Add添加修改规则,然后点击Execute执行请求(不修改请求数据就直接点击Execute)。
(7)点击一次Execute后会再次截取请求,可以修改响应数据,编辑后点击Execute即可按修改后的数据返回。
3.MAP
(1)先使用breakpoints,在接口拦截修改页(breakpoints的第7步页面)右击将响应结果保存到本地。
(2)在本地打开响应结果修改想要修改的字段信息
(3)关闭breakpoints,重新发起请求
(4)找到接口,右击选择Map Local
(5)弹出的设置界面,choose选择刚刚本地修改的文件。
(6)重新发起请求即可按预期的响应值返回了。
五、QA
1.Windows 11安装Charles的乱码问题
(1)首先把证书配好
(2)安装好证书后,进入Charles的安装文件夹,在配置文件 Charles.ini 添加一句话:vmarg.5=-Dfile.encoding=UTF-8
(3)点击 Proxy菜单,SSL Proxy Settings,添加Location
(4)点击Add:Host填写*,Port 就填写 HTTPS 的端口:443,重复刚才的步骤,Host填写*,Port 就填写*,然后点击 OK ,接着重启 Charles 不在乱码。
2.Firefox插件问题
如果用户安装了Firefox浏览器,Charles会询问用户是否安装了Firefox的Charles插件。这个插件允许Charles与Firefox集成,以便更容易地捕获网络流量。
六、小结
制作不易,欢迎大家补充哈!😊