zhihu-immersive-reader API
沉浸式知乎油猴脚本的版本状态与本站免翻墙镜像 API。服务启动时立即检查 GreasyFork,之后默认每 4 小时通过本机 mihomo 请求脚本状态 API:
https://greasyfork.org/zh-CN/scripts/573678.json
如果发现 version 变化,服务会通过本机 mihomo 代理 127.0.0.1:7890 下载 code_url 指向的 .user.js 文件,并保存为:
/zhihu-immersive-reader/v<version>.user.js
例如 GreasyFork 版本 4.3.1 会保存为:
https://6767.chat/zhihu-immersive-reader/v4-3-1.user.js
同时会原子更新固定别名和更新元数据:
https://6767.chat/zhihu-immersive-reader/latest.user.js
https://6767.chat/zhihu-immersive-reader/latest.meta.js
镜像文件会把 @downloadURL 和 @updateURL 改写为上述本站地址。因此通过“个人站点路线”安装后,首次安装和后续油猴自动更新都不需要浏览器直连 GreasyFork。
落地页:
https://6767.chat/zhihu-immersive-reader/
路由
| 方法 | 路径 | 说明 |
|---|---|---|
GET | /api/zhihu-immersive-reader | 文档页入口。 |
GET | /api/zhihu-immersive-reader/health | 返回同步服务状态。 |
GET | /api/zhihu-immersive-reader/status | 返回本站实际提供的版本、安装链接、同步状态、安装量和 GreasyFork 元数据;?force=1 可立即执行一次探针。 |
GET /status
示例:
curl "https://6767.chat/api/zhihu-immersive-reader/status"
返回示例:
{
"success": true,
"service": "zhihu-immersive-reader",
"status": "current",
"version": "5.1.2",
"versionName": "v5.1.2",
"fileName": "v5-1-2.user.js",
"publicPath": "/zhihu-immersive-reader/v5-1-2.user.js",
"publicUrl": "https://6767.chat/zhihu-immersive-reader/v5-1-2.user.js",
"latestUrl": "https://6767.chat/zhihu-immersive-reader/latest.user.js",
"installUrl": "https://www.tampermonkey.net/script_installation.php#url=https%3A%2F%2F6767.chat%2Fzhihu-immersive-reader%2Flatest.user.js",
"lastCheckedAt": "2026-07-22T07:22:00.000Z",
"nextProbeAt": "2026-07-22T11:22:00.000Z",
"sync": {
"enabled": true,
"intervalMs": 14400000,
"synchronized": true,
"error": null
},
"greasyfork": {
"id": 573678,
"version": "5.1.2",
"dailyInstalls": 3,
"totalInstalls": 181,
"codeUrl": "https://update.greasyfork.org/scripts/573678/..."
}
}
字段说明:
| 字段 | 说明 |
|---|---|
version | 本站 latest.user.js 实际提供的版本号。 |
versionName | 页面显示用版本名,例如 v4.3.1。 |
fileName | 本站托管脚本文件名,版本号里的点会转成短横线。 |
publicUrl | 当前版本的本站下载 URL。 |
installUrl | Tampermonkey 安装确认页 URL。 |
latestUrl | 固定别名 URL,始终指向最近一次成功下载的脚本内容。 |
sync | 自动同步是否开启、本轮是否下载、同步间隔和错误。 |
greasyfork | 从 GreasyFork .json API 规整后的元数据。 |
proxy.mihomo | 状态探针和脚本下载使用的本机 mihomo 地址。 |
立即检查
在服务端本机请求 force=1 可以跳过状态缓存,立即检查并同步:
curl "http://127.0.0.1:3013/api/zhihu-immersive-reader/status?force=1"
更新策略
- 服务启动后立即执行一次同步检查。
- 每 4 小时通过 mihomo 探针 GreasyFork
.jsonAPI;间隔可通过SYNC_INTERVAL_MS调整。 - 探针和脚本下载均固定通过 mihomo,不依赖服务器直连 GreasyFork。
- 下载前会校验域名、脚本 ID、Userscript 元数据块、文件大小和
@version。 - 版本文件、
latest.meta.js、latest.user.js使用临时文件加重命名方式发布,失败时保留上一可用版本。 - 镜像会将下载和更新 URL 改为
6767.chat,保证浏览器端后续更新无需访问 GreasyFork。 - 同步状态保存在
data/zhihu-immersive-reader-state.json。
错误
| HTTP | 场景 |
|---|---|
500 | 本地镜像文件无法读取,或状态构建失败。 |
sync_failed | HTTP 请求成功,但下载、校验或原子发布失败;继续提供上一版本。 |
stale_upstream | GreasyFork 暂时不可达,返回上次持久化的上游状态和当前本地版本。 |