feat: 新增WordPress mShots代理服务实现
实现基于Node.js的WordPress mShots反向代理服务,主要功能包括: - 代理请求到上游服务并缓存响应 - 自动检测目标主机SSL支持 - 提供缓存兜底机制 - 支持省略协议自动补全
This commit is contained in:
55
README.md
Normal file
55
README.md
Normal file
@@ -0,0 +1,55 @@
|
||||
# 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" 占位图),以便下次请求时能重新尝试获取真实截图。
|
||||
Reference in New Issue
Block a user