接口抓包测试工具Charles(九)

一、Charles接口抓包测试工具

Charles是一块Http代理服务器和Http监视器,当移动端在无线网连接中要求设置好代理服务器,使所有对网络的请求都经过Charles客户端来转发时,Charles可以监控这个客户端各个程序所有连接互联网的Http通信。

二、Charles的功能

  1. 截取http和https网络封包(抓包)
  2. 支持和重发网络请求
  3. 支持修改网络参数
  4. 支持网络请求请求并修改
  5. 支持弱网测试

三、Charles的原理

  1. 客户端向服务器发起HTTPS请求,Charles拦截客户端的请求,伪装成客户端向服务器进行请求
  2. 服务器向“客户端”(Charles)返回服务器的CA证书
    Charles拦截服务器的响应,获取服务器证书公钥,然后自己制作一张证书,将服务器证书替换后发送给客户端
  3. 客户端接收到“服务器”(Charles)的证书后,生成一个对称密钥,用Charles的公钥加密,发送给“服务器”(Charles)
  4. Charles拦截客户端的响应,用自己的私钥解密对称密钥(Charles拿到了对称密钥),然后用服务器证书公钥加密,发送给服务器
  5. 服务器用自己的私钥解密对称密钥,向“客户端”(Charles)发送响应
  6. Charles拦截服务器的响应,替换成自己的证书后发送给客户端
  7. 至此,连接建立,Charles拿到了 服务器证书的公钥和客户端与服务器协商的对称密钥,之后就可以解密或者修改加密的报文了。
    还有个问题就是问抓取长连接:可以使用工具Wireshark,使用过程程需要连接usb,并且在终端授权:rvictl -s 手机UUID(可以使用xcode,iTools 等工具查看)

总结:
HTTPS抓包的原理还是挺简单的,简单来说,就是Charles作为“中间人代理”,拿到了服务器证书公钥和HTTPS连接的对称密钥,前提是客户端选择信任并安装Charles的CA证书,否则客户端就会“报警”并中止连接。这样看来,HTTPS还是很安全的。

四、Charles的安装

  1. 点击安装文件charles-proxy-4.2.8-win64.msi
    在这里插入图片描述
  2. 点击Next按钮
    在这里插入图片描述
  3. 勾选同意,点击Next按钮
    在这里插入图片描述
  4. 选择安装的路径,继续点击Next按钮
    在这里插入图片描述
  5. 点击Install按钮
    在这里插入图片描述
  6. 等待安装
  7. 点击Finish按钮
    

在这里插入图片描述
8. 安装结束

五、charles的证书下载(web)

  1. 为什么下载charles的ssl证书

默认情况下,charles不能解析https协议的接口,里面的请求和响应数据都是乱码格式,所以我们需要下载ssl证书,来获取里面的数据

  1. 点击help,选中ssl Proxying ,点击Install Charles Root Certificate
    在这里插入图片描述
  2. 点击”安装证书”按钮
    在这里插入图片描述
  3. 点击”下一步”按钮
    在这里插入图片描述
  4. 选中”将所有的证书都放入下列存储”,点击”游览”按钮
    在这里插入图片描述
  5. 选中”受新任的根证书颁发机构”,点击”确定”按钮
    在这里插入图片描述
  6. 点击”下一步”按钮
    在这里插入图片描述
  7. 点击”完成”按钮
    在这里插入图片描述
  8. 界面弹出”导入成功”弹框
    在这里插入图片描述
  9. 点击proxy按钮,选中Proxy Settings…
    在这里插入图片描述
  10. 勾选允许传输http代理,接着点击OK按钮
    在这里插入图片描述
  11. 点击proxy按钮,选中SSL Proxyig settings…
    在这里插入图片描述
  12. 点击勾选运行代理,点击Add按钮
    在这里插入图片描述
  13. 填写Host和Port都为*,正则表达式为匹配所有,再点击OK按钮
    在这里插入图片描述
  14. 点击OK按钮
    在这里插入图片描述
  15. 重启Charles,即可
  16. 验证是否可以获取web端的https接口
    a. 打开Charles
    b. 打开游览器输入数据
    c. 查看Charles
    在这里插入图片描述
    d. 从上图所看,能获取htpps的包数据,即可对web端进行抓包

六、charles的功能操作

1:断点调试

方法一: breakpoints(修改request)

  1. 接口处 鼠标右击,选择breakpoints(允许本接口使用breakpionts功能)
    在这里插入图片描述
  2. 开始设置断点值
    在这里插入图片描述
    在这里插入图片描述
  3. 输完值记得点【ok】按钮保存设置。。。
  4. 重新请求接口(charles的界面变为可编辑状态),修改请求参数,执行请求
    在这里插入图片描述
  5. 关掉breakpoint,点击【abort】
    如果点击了【cancel】,只关闭此次编辑。下次访问此接口时还会进入breakpoints页面。
    请添加图片描述
    方法二: breakpoints(修改response)
  6. 接口处 鼠标右击,选择breakpoints(允许本接口使用breakpionts功能)
  7. 开始设置断点值
  8. 输完值记得点【ok】按钮保存设置。。。
  9. 重新请求接口(charles的界面变为可编辑状态),修改请求参数,执行请求
  10. 刷新页面,请求接口(返回值便是上一步已经修改好的值)
  11. 关掉breakpoint,点击【abort】
    如果点击了【cancel】,只关闭此次编辑。下次访问此接口时还会进入breakpoints页面。

2:本地修改

对于maplocal功能的理解:
接口返回值通过抓包工具处理成了 一个本地文件。这个本地文件中的设定值被作为接口返回值了。
复制 response内容,保存为.txt 文件,存在电脑本地。
注意:
保存为txt 后,将文件“另存为”编码方式选择utf-8,否则接口可能无法识别汉字导致出现乱码
2.修改response指向(选中需要修改response值的接口 后点击右键,选中maplocal功能)
注意:记得点击【OK】键才能将配置保存成功!!!
3.修改txt文件中 需要修改的字段值,保存
4.重新请求此接口,此时接口返回值已经是 txt文件中的期望值了
5.不用的时候,关掉maplocal。

3:弱网测试

模拟超慢网速(会导致接口数据返回超时的那种…)
设置带宽和延迟时间(毫秒)
注:可以根据下图中的翻译体会下导致网络延迟的原因:
2.打开 throt settings (功能生效后 接口数据返回会很慢)

4:关注接口

抓包列表中有好多抓包结果是我们不会关注的,用下面的方法可以让这些我们不关注的接口在列表中隐藏
添加关注的接口
在这里插入图片描述
注:host : baidu 代表 host中含有"baidu"字符的所有host
protocol :http 或者https. 如果什么都选,代表 两中协议都会生效,相当于二者兼选
port: protocol为http 时填 80 ,protocol 为https时填 443 。什么都不填也没有关系。
2.启用关注接口
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
3.重新抓包结果
不在上一步配置中的接口,都会隐藏在other host中
在这里插入图片描述

七、Charles的证书下载(虚拟器)

1:第一步:打开虚拟机设备
在这里插入图片描述
2:第二步:去掉window peoxy的勾选项(对app端测试)
在这里插入图片描述
3:点击proxy选中proxy Setting
在这里插入图片描述
4:启动http代理端口(默认8888)
在这里插入图片描述
5:在help中选中SSL Proxying 中的Mobile Device 安装
在这里插入图片描述
6:显示如下图所示信息
在这里插入图片描述
在这里插入图片描述
7:点击设置按钮
在这里插入图片描述
8:点击”wifi”
在这里插入图片描述
9:长按已连接的WiFi
在这里插入图片描述
10:点击”修改网络”
在这里插入图片描述
11:勾选”高级选项”
在这里插入图片描述
12:点击代理下拉框
在这里插入图片描述
13:选中”手动”
在这里插入图片描述
14:填写代理信息(ip和端口信息)
在这里插入图片描述
15:点击”保存”
在这里插入图片描述
16:打开模拟器中的游览器
在这里插入图片描述
17:输入对应的网址:chls.pro/ssl ,下载证书
在这里插入图片描述
18:点击下载的证书
在这里插入图片描述
19:给证书命名并确定
在这里插入图片描述
20:显示证书已安装
在这里插入图片描述
21:打开模拟器上的app,观察Charles中捕获的接口
在这里插入图片描述
22:以上为模拟器上安装证书操作,接下来就可以捕获接口操作了