[UI重构] 悬浮球控制 | 独立接口监听开关 | 暗黑模式 | 自动解析 X/Twitter 高清原图/视频 | 自动多级目录 | 发送至 Motrix | 🚫 彻底去除敏感内容遮罩
基于您提供的 `UserScript` 代码,这是一份详尽的功能描述与技术分析报告。
该脚本名为 **"X/Twitter High-Res Image to Motrix (Pro UI Version + Dark Mode)"**,是一个用于 Tampermonkey(油猴)的高级浏览器扩展脚本。它的主要作用是拦截 X (Twitter) 的网络流量,自动提取高质量媒体资源,并通过 RPC 协议发送给下载工具 Motrix(或任何支持 Aria2 RPC 的下载器),同时具备解除敏感内容遮罩和现代化的 UI 交互界面。
以下是详细的功能分析:
---
### 1. 核心功能概览
* **全自动媒体嗅探**:无需手动点击下载按钮,脚本会自动监听用户浏览的时间线、详情页和搜索结果,一旦加载出图片或视频数据,后台即刻解析。
* **最高画质获取**:
* **图片**:强制请求原图格式(`name=orig`),确保下载的是服务器存储的最高分辨率版本。
* **视频**:自动分析视频流的多个变体(Variants),按码率(Bitrate)排序,选取最高码率的 MP4 版本。
* **Motrix/Aria2 对接**:通过 JSON-RPC 接口将下载任务推送到本地运行的 Motrix 或 Aria2 服务,支持自定义 RPC 地址和密钥。
* **智能文件命名与归档**:
* 自动创建目录结构:`域名/发布者ID/描述_时间_序号.后缀`。
* 自动清理文件名中的非法字符(如 `|`, `*`, `?` 等)。
* **🚫 敏感内容解锁 (强力功能)**:通过底层拦截 API 响应,强制修改数据字段,去除“敏感内容”警告遮罩,直接展示媒体内容。
* **现代化 UI**:包含可拖拽的悬浮球、暗黑模式适配的配置面板、以及实时的 Toast 状态通知。
---
### 2. 详细功能拆解
#### A. 网络拦截与数据解析 (核心引擎)
脚本运行在 `document-start` 阶段,利用 **XHR Hook (XMLHttpRequest 劫持)** 技术实现对 X.com 数据流的完全控制。
1. **接口监听范围**:
* `UserTweets`:用户主页和时间线。
* `TweetDetail`:推文详情页(包含评论区)。
* `SearchTimeline`:搜索结果页。
* *配置项*:用户可在设置面板中独立开启或关闭上述任意接口的监听。
2. **JSON 数据清洗**:
* X 的 API 返回结构极其复杂(嵌套极深)。脚本通过递归查找 `instructions` -> `entries` -> `content` -> `tweet_results`,精准提取推文对象。
* 兼容普通推文、转发推文以及评论区中的媒体内容。
* 自动过滤广告内容。
3. **敏感内容解锁机制 (`unlockSensitive`)**:
* **原理**:重写了 `XMLHttpRequest.prototype.responseText` 的 `getter` 属性。
* **操作**:在浏览器前端渲染数据之前,脚本利用正则暴力替换 JSON 字符串中的关键字段:
* `"possibly_sensitive": true` ➔ `false`(欺骗前端该推文不敏感)。
* `"profile_interstitial_type": "sensitive_media"` ➔ `""`(移除主页级敏感警告)。
* 破坏 `mediaVisibilityResults` 结构,防止前端逻辑再次触发遮罩。
#### B. 下载任务构建与发送
1. **文件命名规范**:
* **作者**:取 `user_results.result.core.name` 或 `user_id_str`。
* **描述**:截取推文内容的前 50 个字符。
* **时间戳**:精确到秒(`YYYYMMDD_HHmmss`)。
* **序号**:多图推文会自动添加 `_p0`, `_p1` 等后缀。
2. **RPC 通信**:
* 使用 `GM_xmlhttpRequest` 跨域发送 POST 请求。
* 调用 Aria2 标准方法 `aria2.addUri`。
* 自动携带 `User-Agent`、`Referer` 和 `Origin` 头信息,防止下载请求被 X 服务器拒绝(403 Forbidden)。
* 设置了分片下载(Split: 8)和超时重试策略。
#### C. 用户界面 (UI) 与 交互体验
1. **悬浮控制球**:
* **图标**:使用 X 官方 SVG Logo。
* **状态反馈**:通过背景色实时反馈工作状态。
* 💜 **紫色**:空闲/就绪。
* 💛 **黄色**:正在发送 RPC 请求。
* 💚 **绿色**:推送成功。
* ❤️ **红色**:推送失败或连接错误。
* **交互**:支持任意位置拖拽,点击可展开/收起配置面板。位置会被记忆。
2. **配置面板**:
* **毛玻璃效果**:采用 `backdrop-filter: blur(15px)` 实现类似 iOS/Win11 的视觉效果。
* **暗黑模式 (Dark Mode)**:
* UI 代码中深度集成了暗黑模式样式。
* 既可以手动切换,也会根据配置自动调整。
* Toast 通知也会随之改变颜色风格。
* **热更新**:修改配置点击保存后立即生效,无需刷新页面(敏感内容解锁除外,需刷新加载新数据)。
3. **Toast 通知系统**:
* 在屏幕右上方弹出非阻塞式的通知气泡。
* 显示具体的成功文件名或错误原因。
* 具备进场/出场动画。
---
### 3. 配置选项详解 (Settings)
用户可以通过点击悬浮球打开面板,进行以下设置:
| 选项 | 默认值 | 描述 |
| --- | --- | --- |
| **启用总开关** | 开启 | 脚本的总电源,关闭后停止一切解析和推送。 |
| **解除敏感内容限制** | 开启 | 是否开启底层 JSON 替换功能,去除 NSM (Not Safe Media) 遮罩。 |
| **监听: 主页/时间线** | 开启 | 是否解析用户主页的数据流。 |
| **监听: 推文详情页** | 开启 | 是否解析单条推文详情页的数据流。 |
| **监听: 搜索结果页** | 开启 | 是否解析搜索页面出现的数据流。 |
| **RPC 地址** | `localhost:16800` | Motrix 或 Aria2 的 JSON-RPC 接口地址。 |
| **RPC 密钥** | 空 | 如果 Aria2 设置了 `rpc-secret`,需在此填入。 |
| **暗黑模式** | 关闭 | 切换配置面板和通知消息的视觉风格(深色/浅色)。 |
| **调试日志** | 关闭 | 开启后会在浏览器控制台 (F12) 输出详细的解析日志。 |
---
### 4. 技术依赖总结
* **API 权限**:
* `GM_xmlhttpRequest`:用于突破浏览器同源策略,向本地 RPC 端口发送请求。
* `GM_setValue`/`GM_getValue`:用于持久化存储用户的配置项和悬浮球位置。
* `GM_addStyle`:用于注入 CSS 样式。
* **运行环境**:
* 支持 Chrome/Edge/Firefox 等主流浏览器。
* 必须配合 **Motrix** 或 **Aria2** 后端服务使用,否则仅能解析无法下载。
### 总结
这是一个**“重后端逻辑 + 轻前端交互”**的高级脚本。它不仅仅是一个简单的下载器,更是一个针对 X 平台 API 及其前端渲染机制的“补丁”,解决了官方限制图片质量、敏感内容遮罩以及批量归档困难的痛点。代码结构清晰,模块化程度高(UI、解析、RPC 分离),具备较高的健壮性。