概述

Charles 是一款功能强大的网络抓包工具,其中的脚本功能(Scripting)为用户提供了高度灵活的定制能力。通过脚本,用户可以自动化处理请求和响应,完成批量修改、动态数据模拟等高级任务,大幅提升工作效率。本篇文章将以详细步骤和实例演示,帮助小白用户快速掌握脚本功能。

脚本功能

内置的脚本功能(Scripting)支持用户通过 JavaScript 编写规则,实现自动化处理请求和响应。利用脚本功能,用户可以大幅提升抓包效率,处理复杂的任务,如批量修改请求、模拟动态数据注入等。

常见的应用场景包括:

  • 自动添加或修改请求头、请求体内容。
  • 按特定规则过滤和拒绝请求。
  • 批量修改或记录数据,方便离线分析。

3. 启用和配置脚本

3.1 安装 Java 环境:
  • Charles 的脚本功能基于 JavaScript,运行脚本需要安装 Java Development Kit (JDK)。
  • Oracle 官方网站 下载并安装 JDK。
    • 下载对应操作系统的安装包。
    • 双击安装包,按照提示完成安装。

  • 安装完成后,打开命令行输入 java -version,若显示版本信息说明安装成功。

3.2 打开脚本管理器:
  • 启动 Charles,依次点击菜单栏中的 Tools > Scripts
  • 在弹出的脚本管理器窗口中,可以看到已有脚本列表。
  • 点击 Add 按钮,新建一个脚本条目。

3.3 加载或编写脚本:
  • 点击 Edit 按钮,打开内置的脚本编辑器。
  • 在编辑器中输入 JavaScript 代码。
  • 若已准备好脚本文件,可以点击 Load 按钮加载外部脚本(文件扩展名应为 .js)。
3.4 编写自动化脚本示例

下面的脚本示例展示了如何拦截特定的请求并修改其头部信息和内容:

function processRequest(request) {
    //request.url.contains("example.com") 用于判断请求的目标 URL 是否包含指定域名。
    if (request.url.contains("example.com")) {
        //request.setHeader 添加或修改请求的头部信息,例如为接口请求添加认证信息。
        request.setHeader("Authorization", "Bearer custom_token");
        //request.body.replace 修改请求体中的内容,例如替换数据字段的值。
        request.body = request.body.replace("old_value", "new_value");
    }
}

保存脚本:

  • 在编辑器中完成脚本编写后,点击 Save 按钮保存。
  • 返回脚本管理器界面,确保勾选新添加的脚本条目。
  • Charles 将在符合条件的请求发送时自动执行脚本。

4. 功能应用

4.1 批量处理请求:

编写脚本批量修改所有目标请求的参数,例如更改多个接口的域名或路径。

function processRequest(request) {
    if (request.url.contains("gateway.clonbrowser.com")) {
        request.url = request.url.replace("gateway.clonbrowser.com", "www.clonbrowser.com");
    }
}
4.2日志记录:

通过脚本捕获和记录网络请求的关键信息,方便后续排查问题。

function processResponse(response) {
    console.log("URL: " + response.url + "\nResponse Body: " + response.body);
}
4.3 安全检测:

模拟恶意流量,例如注入攻击代码,验证目标系统的安全性。

function processRequest(request) {
    if (request.url.contains("vulnerable-endpoint.com")) {
        request.body += "<script>alert('Attack!');</script>";
    }
}

5. 总结

通过 Charles 的脚本功能,用户可以将复杂的抓包任务实现自动化,提升效率并满足个性化需求。本篇文章从基础配置到高级应用,结合实例详细讲解了脚本功能的使用方法。即使是小白用户,也可以通过简单的学习,掌握这项强大的工具功能,解决实际问题。

Logo

一站式 AI 云服务平台

更多推荐