JSON Fetcher Ultimate (Advanced InlineConfirm Edition, EphemeralPreview Fixed)

满足各种需求(标题文字颜色同主题配置, 其余功能同前)

您需要先安装一个扩展,例如 篡改猴Greasemonkey暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴Userscripts ,之后才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。

您需要先安装用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

作者
Ann Smith
日安装量
0
总安装量
11
评分
0 0 0
版本
3.5
创建于
2025-04-21
更新于
2025-08-11
大小
122.0 KB
许可证
MIT
适用于

一、脚本简介

脚本名称: JSON Fetcher(JSON请求抓取)
主要功能:

  1. 拦截并记录页面中通过 XMLHttpRequestfetch 发起的 JSON 请求。
  2. 分类显示所有已拦截到的 JSON 数据(如 Backend APIPublic APIAPI其他等)。
  3. 提供可视化面板(浮动窗口),可对拦截到的 JSON 进行:
    • 复制内容到剪贴板
    • 下载单个或批量下载
    • 预览 JSON 内容(带语法高亮)
    • 清空对应分类
    • 记录并下载脚本运行日志
  4. 特殊数据解析:自动解析Claude对话列表和ChatGPT对话列表,并支持对话的单个/批量下载,以及将解析结果导出为表格(CSV)。
  5. 额外功能
    • 浮动面板可最小化关闭拖拽缩放大小,并可“重新打开”
    • 日志记录与下载
    • 一键滚动到顶部/底部
    • Claude 批量下载支持进度条显示完成度
    • 检测并展示(若有)PoW 难度信息

二、使用说明

1. 如何安装脚本

  1. 在浏览器(Chrome / Firefox / Edge 等)里安装 TampermonkeyGreasemonkey等用户脚本管理器插件。
  2. 打开插件的管理面板,新建脚本,将本代码全部复制粘贴进去,然后保存
  3. 当页面匹配到脚本配置的 @match 域名(例如 yiyan.baidu.com, claude.ai, chatgpt.com, poe.com 等)时,脚本会自动运行。

2. 如何查看/操作脚本界面

脚本运行后,会在页面右上方(或左上方)出现三个主要“浮动面板”:

  1. JSON 抓取器

    • 这里展示了所有被脚本捕获的 JSON 请求,并且按照分类展示(如果设置启用分类)或者统一展示。
    • 每个请求条目上,有几个常见按钮:
      • 复制:把该请求的 JSON 内容复制到剪贴板。
      • 下载:下载该单条请求的 JSON 文件。
      • 预览:在独立的小弹窗中查看 JSON 的内容(带着简单的语法高亮)。
    • 面板顶部,还可以进行批量下载清空分类等操作。
  2. 操作日志

    • 这里会记录脚本的一些运行信息和日志,比如“拦截到了哪些URL”“是否下载了日志”等。
    • 可以下载日志或清空日志。
  3. 特殊数据解析

    • 该面板会专门显示ClaudeChatGPT对话列表:脚本能够从返回的 JSON 中识别出包含对话信息的条目,并列出这些对话名称、ID、更新时间等。
    • 你可以点击对应的下载按钮,对某个对话的原始 JSON 数据进行导出;也可批量下载(全部或筛选最近 1 天 / 1 周 / 1 月),甚至可以把这些数据导出为一张 CSV 表格。

3. 浮动面板如何操作

  • 拖拽移动:浮动面板标题栏左侧有一个“小圆把手”,按住它可以拖动面板到屏幕合适位置。
  • 最小化/还原:点击标题栏中“➖”按钮可最小化,再次点击可还原。
  • 关闭:点击标题栏“✖️”会关闭面板,但页面上会出现一个“重新打开”的按钮,点击即可再打开。
  • 缩放:拖动浮动面板右下角的边框,可以手动调整面板大小。
  • 标题栏也提供一键到顶 / 一键到底功能,快速查看面板内容顶部/底部的信息。

4. 常见问题

  1. 为什么有些 JSON 没被拦截到?

    • 脚本只拦截带有 application/json 类型的响应。如果后端没返回正确的 Content-Type,或者数据不是 JSON,则可能不会显示在列表里。
  2. 批量下载是怎么操作的?

    • 在“JSON 抓取器”的分类区,点“⬇️”即可批量下载当前分类下所有已捕获的 JSON 请求。
    • 在“特殊数据解析”的 Claude / ChatGPT 列表,也提供“⬇️全部”或“下载最近 N 天”按钮,点击后会依次自动下载。
  3. 下载的 JSON 文件名是怎么生成的?

    • 默认使用 URL 最后的部分(剥离掉参数)作为文件名,如果没有就会使用通用名,比如 download.json
    • 对于 Claude 或 ChatGPT 对话,会包含对话名称(Claude)或对话 ID(ChatGPT)等信息方便区分。

三、技术细节说明

1. 核心原理

  • XHR 与 Fetch 的拦截:脚本在 XMLHttpRequest.prototype.open/sendwindow.fetch 上进行重写(Monkey patch),从而在请求完成后对响应进行捕获和处理。
  • 分类规则:脚本通过匹配 URL 中的一些关键词(如 backend-api, public-api, /api/ 等)来对抓到的请求进行分类。如果你想自定义分类,需在 CATEGORY_RULES 中进行修改。
  • 去重处理:脚本会根据完整 url 去重,防止同一个请求重复添加。

2. 主要模块概览

  1. RequestInterceptor

    • overrideXHR()overrideFetch() 分别改写了 XMLHttpRequestfetch
    • 完成后检查 Content-Type 是否包含 application/json,若符合则保存到 capturedRequests
    • 根据 URL 规则,给每条请求打上 category
    • 提供 starUuid 机制,若页面 URL 中带有 /c/<uuid>/chat/<uuid>,则自动判定该 UUID 对应的请求归类到 “星标” 类别。
  2. UILogger

    • 负责管理操作日志,支持在本地 localStorage 中存储并回放。
    • 提供可视化日志面板,以及“下载日志”为 .log 文件的功能。
    • 提供“清空日志”操作。
  3. UIManager

    • 包含了“JSON 抓取器”面板和“特殊数据解析”面板的管理逻辑。
    • 能对捕获到的请求进行展示、下载、预览,以及搜索过滤和批量操作。
    • “特殊数据解析”主要调用 SpecialDataParser 的结果。
  4. FloatingPanel

    • 自定义的通用浮动面板类,实现了可拖拽、可缩放、可最小化、可关闭等功能。
    • 面板位置、大小、最小化状态、关闭状态等都会存到 localStorage,页面刷新后能保持。
  5. SpecialDataParser

    • 用来识别特别的 JSON 数据结构,如 Claude 对话列表、ChatGPT 对话列表:
      • Claude 列表结构:匹配 .../api/organizations/xxx/chat_conversations 并解析其返回的数组。
      • ChatGPT 列表结构:匹配 .../backend-api/conversations?... 并解析其返回中的 items 数组。
    • 提供对单条对话和批量对话的下载逻辑。
    • 能将解析结果(对话名、时间等)以 CSV 文件形式导出。
  6. PoWParser

    • 简单检测 JSON 里是否含有 proofofwork 字段并显示 PoW 难度(仅作示例,可在需要时扩展)。

3. 关键点与可定制性

  1. @match 范围:脚本头部的 @match 标签指定了生效域名,若要在其他网站使用,可自行添加或修改。
  2. 分类逻辑:如需更改或扩充分类,可在 RequestInterceptor.CATEGORY_RULES 中添加/修改相应的正则或字符串匹配。
  3. 存储:日志与面板状态都会存到 localStorage,如需进行多标签页同步或跨站共享,需要额外的存储机制(如 GM_setValue / GM_getValue 或自己实现服务端存储)。
  4. UI 样式:脚本末尾的 <style> 中定义了所有面板、列表、按钮、进度条等样式,你可以自行调整配色或布局。

4. 安全与性能

  • 拦截方式基于常见的 Monkey patch,理论上不会拦截到内部非标准使用的请求,但对于常规的 AJAX / Fetch 请求都有效。
  • 如果某网站有很多 JSON 请求,脚本会在内存中维持相应数量的数据(RequestInterceptor.capturedRequests 数组),可能占用一定内存,每条 JSON 只保存一次,不会无限增长,且可以随时在界面上手动清理。
  • 面板操作、日志等都在本地浏览器完成,与服务器无交互,安全性依赖于浏览器环境。