简介

Charles是一款用于网络调试和分析的代理工具,可以拦截和查看设备与服务器之间的网络通信。通过Charles,可以监视应用程序的网络流量、修改请求和响应,甚至模拟不同的网络条件。其主要功能包括:

  • 截取http和https网络封包。
  • 支持重发网络请求,方便后端调试。
  • 支持修改网络请求参数。
  • 支持网络请求的截获并动态修改。
  • 支持模拟慢速网络。

Charles是一个HTTP代理服务器,HTTP监视器,反转代理服务器,当浏览器连接Charles的代理访问互联网时,Charles可以监控浏览器发送和接收的所有数据。

使用Charles进行Web网络抓包非常简单,启动Charles会自动与浏览器设置成代理,不需要进行过多的设置,接下来就是通过浏览器发送网络请求,Charles就会直接抓取到这些信息和响应信息。

Charles抓包不仅仅可以抓取来自电脑端的HTTP请求,也能够抓取来自App发出的HTTP请求,但是手机抓包需要在电脑端配置下,并且需要手机和电脑在同一网络下,即需要完成下面的设备代理设置步骤。

虽然现在Charles能够直接抓包了,但是https协议的报文我们是抓取不了的,需要安装SSL证书才可以,即需要完成下面的Charles证书下载与证书安装步骤。

Charles配置流程

Charles整体的配置流程分为以下三步:

  1. 设备代理设置。

    1. 查看Charles的IP地址。

      • Charles的IP地址查看方式:点击【Help】---\>【Local IP Address】查看。

      • 电脑IP地址查看方式:打开“运行”(快捷键:win+R键或者在任务栏的”搜索”按钮中查找并点击”运行”),输入“cmd”后进入命令行窗口,在命令行窗口中输入”ipconfig”命令查看IP。
    2. 设置Charles侧的调试端口号。

      • 点击 【Proxy】---\>【SSL Proxy Settings...】---\>在Include栏下点击【Add】---\>添加【*:*】即 Host输入【*】Port输入【*】,添加 【*:443】,即Host输入【*】Port输入【443】---\>最后点击【ok】;

      • 点击 【Proxy】---\>【Proxy Settings...】---\>设置【HTTP Proxy】下的Port(即Charles监听的端口,默认是8888)---\>勾选【Enable transparent HTTP proxying】---\>最后点击【ok】。

    3. 手机与PC连接在同一局域网下,手机Wi-Fi设置为手动代理,服务器主机名与端口为Charles的IP地址和Charles监听的端口。

      点击需要连接的Wi-Fi进入密码输入页面---\>在输入密码前点击【代理】---\>选择【手动】---\>设置代理的【服务器主机名】为Charles的IP地址,【服务器端口】为Charles监听的端口,即设置成8888---\>最后输入密码,连接上Wi-Fi。

      说明:
      第一次连接手机时需要在电脑Charles弹出的连接窗口中选择【Allow】。
  2. Charles证书下载。

    1. 安装Charles根证书到PC可信任的目录下:

      点击顶部菜单栏【Help】---\>选择【SSL Proxying】---\>点击【install Charles Root Certificate】---\>点击【安装证书】---\>设置存储位置(可选择当前用户或是本地计算机)后点击【下一步】---\>选择【将所有的证书都放入下列存储】---\>点击【浏览】---\>设置证书存储路径为【受信任的根证书颁发机构】。

    2. 导入系统根证书至手机:

      点击Charles顶部菜单栏【Help】---\>选择【SSL Proxying】---\>点击【Install Charles Root Certificate On a Mobile Device or Remote Browser】---\>在手机的自带浏览器中访问http://chls.pro/ssl---\>点击【立即下载】,将证书下载至手机内存内。

      <p id="p1897112555512">【Install Charles Root Certificate On a Mobile Device or Remote Browser】</p> <p id="p139718512554">访问http://chls.pro/ssl</p>
      <p id="p129725515514"><span><img id="image7972259557" src="figures/导入-new.png" height="159.60000000000002" width="523.6875"></span></p> <p id="p1897218518550"><span><img id="image89725510554" src="figures/zh-cn_image_0000002043941893.png"></span></p>
  3. 在移动设备上安装Charles证书。

    证书在手机上的安装步骤如下:

    在手机端点击【设置】---\>【隐私和安全】---\>下滑点击【高级】---\>选择【证书与凭据】进入证书的安装选项中---\>选择【从存储设备安装】---\>点击【CA证书】---\>点击【继续】---\>选择【浏览】---\>找到下载的证书的位置---\>点击证书---\>弹出【安装证书成功】的弹窗文字,则安装成功。

    <p id="p189271853185519"><span>选择【从存储设备安装】</span></p> <p id="p15927185311558"><span>点击【CA证书】</span></p>
    <p id="p10927145318554"><span><img id="image1992705365514" src="figures/zh-cn_image_0000002007782874.png"></span></p> <p id="p1892715532559"><span><img id="image12927105312557" src="figures/zh-cn_image_0000002043820913.png"></span></p>

网络请求过滤

通常情况下,我们需要对网络请求进行过滤,只监控指定目录服务器上发送的请求。对于这种需求,有以下两种办法:

  1. 在主界面的中部点击Ctrl+F快捷键打开搜索栏中填入需要过滤出来的关键字。例如我们监听的地址是:www.charlesproxy.com, 那么只需要在上方过滤条件中填入或勾选你需要的信息后点击【Find】按钮即可。

  2. 在 Charles 的菜单栏选择【Proxy】---\>【Recording Settings...】---\>然后选择 Include 栏---\>点击【Add】添加一个项目---\>按需填入需要监控的协议后重新监听,这样就可以只截取目标网站了。

常见问题

Q1:通过web组件是否支持使用charles工具抓包 ?

A1:当前能力可支持。

Q2:2300077 Problem with the SSL CA cert (path? access rights?) 证书无法使用或路径下证书不存在报错如何解决?

A2:需要检查下capath设置证书路径是否可访问、证书文件是否存在。

Q3:2300060 远程服务器SSL证书或SSH秘钥不正确是什么原因导致?

A3:使用为charles证书或系统根证书无法通过https校验 ,需替换为请求的域名证书。

Q4:在手机的自带浏览器中访问http://chls.pro/ssl失败如何解决?

A4:请检查是否在同一局域网下,并确保手机与电脑正常连接,需在第一次弹窗弹出时选择Allow选项。请检查是否按照上述设备代理设置的步骤执行,并将Charles根证书安装到PC受信任的根证书颁发机构目录下。


HarmonyOS码上奇行
6.7k 声望2.7k 粉丝