1. 目录
- Charles工具介绍
- Charles Mock实战
2. Charles功能
- 支持SSL代理支持流量控制
- 支持重发网络请求,方便后端调试
- 支持修改网络请求参数
- 支持网络请求的截获并动态修改
- 可以自动将json或xml数据格式化,方便查看
3. Charles安装
4. 抓包原理
5. http抓包
- 确认端口
- 发送http请求
- 查看数据信息
-
设置代理
-
打开本地代理设置
模拟http抓包
- 抓取http请求
- 本地发起http请求:
curl http://rest-assured.io -x 127.0.0.1:8888
,-x
使用代理
6. https抓包
- 安装证书
- PC端证书:mac、windows
-
移动端证书:android,ios
-
设置ssl
具体安装步骤:
模拟https抓包
- 抓取https请求
- 本地发起https请求:
curl https://www.baidu.com -x 127.0.0.1:8888 -k
,加上-k
才能发https的请求
-
发现抓的包为unknown,此时应安装证书
-
配置证书和ssl后再抓包
7. 移动端代理配置
- 设备和电脑处于同一wifi
- 网络设置
- 服务器ip地址
-
端口
- 安装证书
-
系统浏览器访问
chls.pro/ssl
-
允许抓包
iOS:描述文件中安装证书
-
- iOS:信任证书
8. Charles Mock实战
- Mock:修改数据模拟各种场景
限速模拟
常见网络类型
模拟带宽
丢包延迟
-
点击小乌龟进行限速模拟
-
设置宽带
断点
- 编辑请求
-
右键某个接口选择
Breakpoints
-
当出现目标接口时,就会进行拦截
-
编辑请求,Edit Request-> Add-> Execute
- 编辑响应
-
进入proxy-> Breakpoint Settings
-
双击保存好的断点,只选择Response
-
编辑响应
要注意网络超时问题,因为在修改断点的时候,网络请求并未停止。
Rewrite进行Mock
-
Rewrite原理
Rewrite实战
- 修改雪球行情页面的股票名称
- 修改雪球行情页面的股票价格
- 修改雪球行情页面的请求头信息
- 进行Rewrite设置
-
进入Tools-> Rewrite
-
Rewrite设置
-
刷新页面,目标位置修改为自定义字段
- 使用正则表达式修改股票价格,修改时一定要勾选Regex
-
修改请求数据,测试H5S的时候用得多,因为H5跨域(跨域是指,请求的URL中协议、域名或端口任意一个与当前的URL不同,称为跨域)的场景较多
-
将头信息中的
User-Agent
修改为自定义字段
-
进行Rewrite设置
-
刷新页面,发现请求头的
User-Agent
修改为自定义字段
-
-
增加头信息
-
增加请求信息
MapLocal进行Mock,实现复杂的Mock测试
- MapLocal原理
-
客户端的请求并未发给服务端,而是将本地文件当做Response返回给客户端
- MapLocal实战
- 把百度首页修改为自己写的json文件
-
创建
baidu.json
文件
-
对百度的url进行MapLocal
-
刷新页面,查看结果
-
- 实现一个小型的服务器
- 需求:
- 请求携带正确用户名——返回token
- 请求携带token——返回登录成功信息
- 实现:
- 创建
token.json
和login.json
-
设置MapLocal
- 发送请求:
curl https://www.jd.com?get_token=feier -x 127.0.0.1:8888 -k
-
curl https://www.jd.com?token=123456 -x 127.0.0.1:8888 -k
- 创建
- 需求:
- 修改雪球行情页面的股票名称
- 修改雪球行情页面的股票价格
-
获取响应数据
queto.json
文件
-
修改文件中三处位置
-
进行MapLocal设置
-
刷新页面
直接修改
queto.json
文件保存后,直接刷新页面便可实现修改,方便进行Mock
-
MapRemote实现切换测试环境
-
MapRemote原理
MapRemote实战
- 访问百度,转发至京东
-
设置MapRemote
-
刷新页面,发现百度首页跳转到京东商品页
-
- 访问开发环境,转发至测试环境
- 前端:http://stuq.ceshiren.com:8081/#/mapLocal
- 开发环境接口:http://39.102.36.84:8089/report/showMapLocal
- 测试环境接口:http://39.102.36.84:9098/report/showMapLocal
1. 设置MapRemote
2. 刷新页面,结果开发环境(端口8089)跳到了测试环境(端口9098)