Charles是一款收费的抓包修改工具,易上手,数据请求易控制,修改简单,功能非常强大。 Charles不仅可以分析电脑本机的网络请求(HTTP和HTTPS),还可以分析移动端设备的网络请求。
抓包(packet capture)就是将网络传输发送与接收的数据包进行截获、重发、编辑、转存等操作。也用来检测网络安全。

上面:是一些快捷操作按钮: Clear:清除; Stop Recording:停止记录(代理的开关) Stop SSL Proxying:停止SSL代理(HTTPS代理的开关) Start Throttling:开始节流(模拟慢速网络) Disable Breakpoints:禁用断点 Compose a new request based on the selection:基于所选内容编写一个新请求 Repeat selected requests:重复请求所选请求 Validate selected responses:使用W3C验证器记录HTML、CSS和RSS/atom响应 Tools:工具 Setting:设置
左侧:是查看视图的方式1,Structure视图是将网络请求按照访问的域名进行分类 2,Sequence视图是将网络请求按照访问时间排序的 最下面有一个Filter过滤器
右侧:视图模式:Overview:概述;Contents:内容,最常用的就是这两个 Contents:Headers:请求头信息;Query String:参数信息;Cookies;Authentication:认证信息;Raw:原始数据
右侧下部分:Response的Headers,Cookie, 多种格式的数据:Text:未经处理的数据;Hex:16进制的数据;Compressed:压缩的数据;JavaScript:js格式的数据;JSON Text:JSON格式化的数据;Raw:原始数据


HTTP请求配置:
1,查看本机ip地址:Help -> Local IP Addresses2,设置代理:Proxy -> Proxy Settings 默认端口是8888 3,配置手机代理:无线局域网-> I -> HTTP代理 -> 手动 -> 配置服务器与端口,与1,2一致 4,启动App,在Charles的弹窗中选择Allow




HTTPS请求配置:
1,电脑安装证书:Help -> SSL Proxying -> Install Charles Root Cerificate2,双击打开证书,选择始终信任 3,安装根证书到手机设备 4,手机配置完代理后,浏览器打开http://chls.pro/ssl 下载描述文件,安装5,证书信任设置:设置 -> 通用 -> 关于本机 -> 证书信任设置 -> 针对根证书启用完全信任 6,Proxy -> SSL Proxying Settings… 添加要抓取的HTTPS请求










配置好代理后,就能看到截取的网络数据了过滤网络请求:通常情况下,网络请求是非常大量的,需要观察某个请求比较费时,那么就需要对网络请求进行过滤,只监控相关的请求。 1,在Sequence界面中Filter栏中填入过滤出来的关键字 2,在Charles的菜单栏选择Proxy -> Recording Settings -> Include,填入需要监控的协议,主机地址,端口号
修改网络请求:
对于捕获的网络请求,我们经常需要修改网络请求的cookie、Headers、Url等信息。Charles提供了对网络请求的编辑和重发功能。只需要修改编辑的网络请求。最后执行一下就可以了。选中该请求 -> 右键Commpose或者点击钢笔图标 -> 修改网络请求的各种参数信息 -> Execute。




Charles提供了Map功能、Rewrite功能、Breakpoints功能,都可以达到修改服务器返回内容的目的。
差异是:Breakpoints功能:适合做临时性的修改 Rewrite功能:适合对网络请求进行一些部分替换或正则替换 Map功能适合长期将某些请求重定向到另一个网络地址或本地文件 Map Local:将请求的返回重定向到本地文件中。 Map Remote:将请求的域名重定向到一个网络地址。
取消修改:Tools -> Map Local…/Map Remote…











差异是:Breakpoints功能:适合做临时性的修改 Rewrite功能:适合对网络请求进行一些部分替换或正则替换 Map功能适合长期将某些请求重定向到另一个网络地址或本地文件 Map Local:将请求的返回重定向到本地文件中。 Map Remote:将请求的域名重定向到一个网络地址。
如果我们只想模拟指定网站的慢速网络,可以再勾选上图中的”Only for selected hotst” 项



1,忘记关闭手机代理,当关闭Charles后,手机网络不可用2,Charles开启后导致有些h5页面加载有问题,或者jsbridge失效 3,最终的数据还是要以服务端下发数据为准


为什么手机安装了Charles根证书后就能正常抓包呢?其实Charles做的就是针对HTTPS的通信双方身份的真实性进行处理; 1,当客户端和服务器建立连接时,Charles会拦截到服务器返回的证书(服务器公钥) 2,然后动态生成一张伪造证书(Charles公钥/假公钥)发送给客户端 3,客户端收到Charles证书后,进行验证;因为之前我们手机设置了信任,所以验证通过;(只要手机不信任这种证书,HTTPS还是能确保安全的) 4,客户端生成会话密钥,使用Charles证书对会话密钥进行加密再传输给服务器 5,Charles拦截到客户端传输的数据,使用自己的Charles私钥进行解密得到会话密钥 6,连接成功后,客户端和服务器通信,客户端对传输的数据使用会话密钥加密并使用公钥对数据摘要进行数字签名,一同传输给服务器; 7,Charles拦截到通信的数据,使用之前获得的会话密钥解密就能得到原始数据; 8,Charles同样也能篡改通信的数据:将篡改后的数据重新加密并重新生成摘要并使用之前获得的公钥进行数字签名,替换原本的签名,再传输给服务器; 9,服务器收取到数据,按正常流程解密验证; 10,服务器返回响应数据时,Charles也是类似拦截过程
Charles功能很强大,本文介绍了如何配置证书;过滤、修改网络请求;修改服务器返回内容;压力测试、模拟慢速网络请求等常用功能。可以结合实际场景去应用,提高开发效率。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/170005.html