mcpField
C
charles-proxy-extract

charles-proxy-extract

github.com/wannabehero开发939 次安装43 周前更新
代码仓库

关于 charles-proxy-extract

charles-proxy-extract 是用于检查 Charles Proxy .chlsj 会话文件的技能,通过 Python 脚本筛选 HTTP/HTTPS 流量、查看请求与响应数据,并导出 JSON。

主要功能

  1. 01按 URL 子串匹配请求
  2. 02按 HTTP 方法筛选
  3. 03查看请求和响应正文
  4. 04生成流量统计
  5. 05将提取数据导出为 JSON

适用场景

  1. 01检查某个端点的 API 流量
  2. 02查看 POST 请求正文
  3. 03汇总代理会话流量
  4. 04保存筛选后的响应以供分析

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/wannabehero/charles-proxy-extract-skill --skill charles-proxy-extract

安装后在 Claude Code 中输入/charles-proxy-extract确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

extract_responses.py
LICENSE.md
README.md

详细介绍

Charles Proxy 会话提取器

解析并提取 Charles Proxy 会话文件(.chlsj 格式)中的结构化数据。

前置条件

  • Python 3.x(无需外部依赖)
  • .chlsj 格式的 Charles Proxy 会话文件

适用场景

在用户出现以下情况时使用此技能:

  • 提到“Charles Proxy”或“Charles 会话”
  • 请求“提取”“分析”或“检查” .chlsj 文件
  • 希望按端点或方法筛选 HTTP/HTTPS 请求
  • 需要检查代理日志中的 API 请求/响应数据
  • 希望将网络流量数据导出为 JSON

如何执行此技能

当用户要求提取、分析或检查 Charles Proxy 会话文件时,使用 Bash 工具运行 Python 脚本:

python3 ./extract_responses.py <file.chlsj> <pattern> [options]
必需参数
  1. <file.chlsj> - Charles Proxy 会话文件的路径(使用用户提供的确切路径)
  2. <pattern> - 要匹配的 URL 路径模式(例如,"/today"、"/logs"、"/" 表示全部)
可选标志
  • -m, --method METHOD - 按 HTTP 方法筛选(GET、POST、PUT、PATCH、DELETE)
  • -f, --first-only - 仅显示第一个匹配的请求(用于快速检查)
  • -s, --summary-only - 显示统计信息,不显示响应正文
  • -o, --output FILE - 将响应保存到 JSON 文件
  • --no-pretty - 禁用 JSON 美化打印
执行示例

提取所有 /today 响应:

python3 ./extract_responses.py session.chlsj "/today"

按 POST 方法筛选(自动显示请求正文):

python3 ./extract_responses.py session.chlsj "/logs" --method POST

快速预览(仅显示第一个结果):

python3 ./extract_responses.py session.chlsj "/users" --first-only

仅显示摘要,不包含正文:

python3 ./extract_responses.py session.chlsj "/" --summary-only

导出到文件:

python3 ./extract_responses.py session.chlsj "/items" --output items_data.json
用户请求模式

用户提出以下请求时:

  • “从 [file] 提取 [endpoint]” → 使用基本提取并进行模式匹配
  • “显示发往 [endpoint] 的 POST/PUT/PATCH 请求” → 添加 --method 标志(自动显示请求正文)
  • “[endpoint] 的第一个响应” → 添加 --first-only 标志
  • “总结 [file]”或“[file] 里有什么” → 添加 --summary-only 标志
  • “将 [endpoint] 保存到 [output]” → 添加 --output 标志
  • “将 [endpoint] 与模型比较” → 提取第一个响应,然后分析其结构
重要说明
  • 模式匹配区分大小写,按子字符串进行匹配
  • 方法筛选不区分大小写
  • 应用方法筛选时,POST/PUT/PATCH 方法会自动显示请求正文
  • 使用 "/" 作为模式可匹配所有请求

此技能的功能

从 Charles Proxy 会话文件中提取 HTTP/HTTPS 请求和响应数据,让你能够:

  • 按 URL 模式筛选请求(子字符串匹配)
  • 按 HTTP 方法筛选请求(GET、POST、PUT、PATCH、DELETE)
  • 查看变更操作(POST/PUT/PATCH)的请求正文
  • 将提取的数据导出到 JSON 文件
  • 生成包含统计信息的流量摘要
  • 美化打印 JSON 响应正文

输入要求

必需:

  • Charles Proxy 会话文件的路径(.chlsj 格式)
  • 要匹配的 URL 模式(使用 "/" 匹配所有请求)

可选:

  • HTTP 方法筛选器(GET、POST、PUT、PATCH、DELETE)
  • 输出模式(完整、仅首个、仅摘要)
  • JSON 导出的输出文件路径
  • JSON 格式的美化打印开关

输出格式

摘要模式:

  • 模式匹配统计信息
  • 按请求数量分组的路径
  • 方法和状态码分布

完整模式:

  • 请求详情(方法、路径、状态、时间戳)
  • 请求正文(应用方法筛选时,显示 POST/PUT/PATCH 请求的正文)
  • 响应正文(解析后的 JSON 或原始文本)
  • 默认美化打印 JSON

导出模式:

  • JSON 文件,结构如下:
    {
      "pattern": "/api/endpoint",
      "total_requests": 10,
      "extracted_at": "ISO8601 timestamp",
      "requests": [...]
    }
    

常见使用场景

“从 session.chlsj 提取所有 /today 响应” → 显示所有匹配 /today 模式的请求

“显示发往 /logs 的 POST 请求及其请求正文” → 按 POST 方法筛选并显示请求正文

“将所有 /items 响应导出到 items.json” → 将筛选后的响应保存到 JSON 文件

“总结 Charles 会话中的请求” → 显示统计信息,不包含响应正文

限制

  • 仅支持 Charles Proxy JSON 会话格式(.chlsj)
  • 模式匹配区分大小写,采用子字符串匹配
  • 方法筛选不区分大小写
  • 较大的响应正文可能会在显示时被截断(导出时不会)
  • 仅需 Python 3.x 和标准库(无需外部依赖)

错误处理

该技能会处理:

  • 文件缺失或无法访问(提供清晰的错误消息)
  • 会话文件中的 JSON 无效(提供解码错误详情)
  • 结果集为空(提供说明性消息)
  • 请求或响应结构格式错误(优雅降级)

故障排除

“找不到文件”错误:

  • 确认 .chlsj 文件路径正确
  • 使用绝对路径,或确保文件位于当前目录中

“JSON 无效”错误:

  • 确保文件是有效的 Charles Proxy 会话导出文件
  • 从 Charles Proxy 重新导出会话

未找到结果:

  • 模式匹配区分大小写,请检查大小写
  • 首先尝试使用“/”匹配所有请求
  • 使用 --summary-only 确认会话文件中存在该端点

找不到 Python:

  • 确保已安装 Python 3.x,且可在 PATH 中找到
  • 尝试使用 python 代替 python3,或反之

评论

支持 Markdown