简介
Charles是一款代理服务器,通过成为电脑或者浏览器的代理,然后截取请求和请求结果达到分析抓包的目的。该软件是用Java写的,能够在Windows,Mac,Linux上使用。开发iOS都在Mac系统上吧,安装Charles的时候要先装好Java环境。
Charles 是一款收费软件,未注册的版本会以 10 秒延迟启动、每 30 分钟自动退出的方式折腾用户,要想顺畅地使用,
可以使用在help->Register Charles,输入注册码注册即可:
Registered Name: https://zhile.io
License Key: 48891cf209c6d32bf4
主要功能
1、抓取 http 和 https 的请求和响应,这是最常用的。
2、重发网络请求,方便后端调试。
3、修改网络请求参数(客户端向服务器发送的时候,可以修改后再转发出去)。
4、网络请求的截获和动态修改。
5、支持模拟慢速网络,主要是模仿手机上的2G/3G/4G的访问流程。
6、支持本地映射和远程映射,比如你可以把线上资源映射到本地某个文件夹下,这样可以方便的处理一些特殊情况下的bug和线上调试(网络的css,js等资源用的是本地代码,这些你可以本地随便修改,数据之类的都是线上的环境,方面在线调试)。
7、可以抓手机端访问的资源(如果是配置HOST的环境,手机可以借用host配置进入测试环境)。
一、安装配置
1、windows安装
2、mac安装
二、代理设置
(1)查看默认端口:Proxy->Proxy Settings 在这个页面会看到HTTP Proxy的默认端口是8888
2)查看当前电脑的ip:
a、windows在cmd控制台使用命令:ipconfig来查看自己对应的ip
b、mac在terminal终端使用命令:ifconfig来查看自己对应的ip
(3)手机上设置代理(记住手机跟电脑要在同一个网络)
ps:手机连接到Charles时会弹出提示框是否连接,点击Allow允许即可
(4)设置Charles SSL代理:Proxy>SSL Proxying Settings
1) Enable SSL Proxying复选框打上勾
2) 添加你想要的设置代理的域名,端口默认443
(5)手机下载ssl证书
1)Help->SSL Proxying ->Install Charles Root Certificate on a Mobile Device or Remote Browser,会弹出如下提示框:
2) 手机浏览器输入网址:http://chls.pro/ssl,即可自动下载证书到手机端
三、常用功能使用
1、抓包
连接上charles后即可拦截http、https的请求。
2、过滤
a、Structure(结构形式)
b、Sequence(按照顺序)
方法一:在主界面的中部的 Filter 栏中输入需要过滤出来的关键字。
方法二:菜单栏选择 “Proxy”->”Recording Settings”,在弹出的窗口中选择 Include 栏,再点击“Add”,在弹出的窗口中输入需要监控的协议,主机地址,端口号等信息,来添加一个项目。如下图所示:
方法三:在想过滤的网络请求上右击,选择 “Focus”,之后在 Filter 一栏勾选上 Focussed 一项,如下图所示:
可以临时性、快速地过滤掉一些没有通过关键字的网络请求。
3、重放
1)适用场景:
当不想在页面操作,直接验证开发改的bug时。
一般配合断点来重新请求接口,进行数据验证
2)具体使用:
选中某条访问的请求,然后直接去点击菜单栏下方的回放按钮即可请求。
4、断点
常用的使用场景:
a、前端做了一些长度或者必填校验,也想验证后端接口是否也有对应校验时。
b、返回一些特定的数据来查看前端的显示是否正确(比如前端某个字段超过4个字后...显示等)
c、新增模拟大量数据来查看前端显示是否正确
d、具体的4xx、5xx错误时,前端显示是否正确
1)添加断点
断点一般用于串改接口的请求参数或者返回的response的具体值。
方法一:选中某个请求,右键选中“Breakpoints”,加入断点
方法二:菜单栏选择 “Proxy”->”Breakpoint Settings”,在弹出的窗口中选择 Include 栏,再点击“Add”,在弹出的窗口中输入需要请求类型、host、端口号、path路径等信息,来添加一个项目。如下图所示:
2)拦截串改Request请求值
3)拦截串改Response返回的值
5、网络环境模拟
1)适用场景:
需要进行弱网测试时,可以使用该功能。
2)具体使用:
菜单栏选择 “Proxy”->”Throttle Settings”,在弹出的窗口中选择对应的Throttle preset模式来选择不同类型的限流情况(可定义),勾选“Enable Throttling”启用。如下图所示:
6、本地文件映射
1)适用场景:很多时候需要频繁修改数据内容,这个时候总联系后台改数据库会比较麻烦,而且数据变化也会影响到其他开发者。这个时候用本地模拟数据就可以完美解决。既方便又不影响别人。
如图为线上抓到的网络请求数据:
1.在本地电脑任意位置新建一个记事本:复制抓到的数据格式粘贴到这里
2.设置URL使用本地数据:选中url右键 — Map Local — choose 本地记事本路径
3.再次请求该接口:如下说明配置成功,以后想改数据直接在记事本里改就可以了
7、重定向
1)适用场景:对第三方进行联调测试,无法访问乙方测试环境,直接访问乙方正式环境,设置请求url重定向指向乙方开发公网测试环境,自主与乙方进行交互联调测试。
打开charles,工具栏–tools–map remote settings–勾选允许重定向–点击add新增
charles新增重定向页面输入拦截url重定向到目的url
至此charles重定向已完成设置,移动端设置charles代理,所有符合设置条件的url重定向目的url;
8、DNS欺骗
1)适用场景:一般的开发流程中,在上线之前都需要在测试环境中先行进行验证,而此时手机客户端请求的域名是不太容易改变的,可以通过设置dns方式把域名转发到测试机上,具体设置Tools->DNS Spoofing Settings比如要把所有包含xxxxxx.com的域名转到10.0.0.71的服务器上,其实用修改HOST的方式是可以解决的;
2)操作流程: