关于 charles-proxy-extract
charles-proxy-extract 是用于检查 Charles Proxy .chlsj 会话文件的技能,通过 Python 脚本筛选 HTTP/HTTPS 流量、查看请求与响应数据,并导出 JSON。
主要功能
- 01按 URL 子串匹配请求
- 02按 HTTP 方法筛选
- 03查看请求和响应正文
- 04生成流量统计
- 05将提取数据导出为 JSON
适用场景
- 01检查某个端点的 API 流量
- 02查看 POST 请求正文
- 03汇总代理会话流量
- 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.pyLICENSE.mdREADME.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]
必需参数
<file.chlsj>- Charles Proxy 会话文件的路径(使用用户提供的确切路径)<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