1
0
Files
WordPress-mShots-Proxy/README.md
Snowz 07d9afdce5 feat: 新增备用接口机制提升截图服务高可用性
当 mShots 返回无效图片或失败时,自动降级尝试使用 thum.io 获取截图。主要修改包括:
- 新增 fallback 请求处理逻辑
- 扩展缓存元数据记录来源信息
- 在响应头中添加 X-Source 标识备用接口
2026-01-20 23:21:16 +08:00

57 lines
2.2 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# WordPress mShots Proxy
这是一个基于 Node.js 的 WordPress mShots 服务反向代理,主要用于缓存截图请求,减少回源次数,并支持自动协议检测。
## 功能特性
- **反向代理**: 代理请求到 `https://s0.wp.com/mshots/v1`
- **持久化缓存**: 将有效的图片响应缓存到本地文件系统 (`cache/` 目录)。
- **兜底机制**: 当上游服务不可用时,尝试返回本地已有的缓存。
- **自动协议检测**: 支持省略 URL 协议http/https系统会自动检测目标主机是否支持 HTTPS (端口 443),若支持则优先使用 HTTPS否则降级为 HTTP。
## 安装与运行
1. 安装依赖:
```bash
npm install
```
2. 启动服务:
```bash
npm start
```
默认运行在端口 `11489`。
## 使用方法
### 基础用法
直接将目标 URL 附加到代理服务地址后面:
- `http://localhost:11489/https://www.baidu.com`
- `http://localhost:11489/http://example.com`
### 自动协议检测 (新功能)
你可以省略 `http://` 或 `https://`,服务会自动判断:
- `http://localhost:11489/www.baidu.com`
- 系统会尝试连接 `www.baidu.com:443`。
- 如果连接成功,将代理到 `https://s0.wp.com/mshots/v1/https://www.baidu.com`。
- 否则,将代理到 `https://s0.wp.com/mshots/v1/http://www.baidu.com`。
## 环境变量
- `PORT`: 指定服务监听端口 (默认 11489)。
## 更新日志
- **2026-01-20**:
- 重构代码,提取核心代理逻辑。
- 新增 `checkPort443` 函数,实现目标主机的 SSL/HTTPS 自动检测。
- 更新路由处理,支持无协议前缀的 URL 请求(如 `/www.baidu.com`)。
- 添加详细的代码注释。
- 优化协议检测逻辑:当目标主机 443 端口无法连接或超时时,自动降级并打印日志 `falling back to HTTP`,确保非 SSL 站点也能正常访问。
- 优化缓存逻辑:不再缓存小尺寸(< 15KB的 GIF 图片(通常是 mShots 的 "Generating" 占位图),以便下次请求时能重新尝试获取真实截图。
- 新增备用接口机制:当 mShots 返回无效图片(如生成中 GIF或失败时自动降级尝试使用 `thum.io` 获取截图,确保高可用性。