基于Node.js和Koa框架的网盘直链解析服务,支持多种网盘的分享链接解析,可部署到Vercel等平台。API接口格式与Java版本netdisk-fast-download完全一致。 接口地址:https://nfd-vercel-ai.vercel.app
- 🚀 多网盘支持: 支持蓝奏云、奶牛快传、123云盘等多种网盘
- ⚡ 高性能: 基于Koa框架,响应速度快
- 💾 智能缓存: 内置缓存系统,减少重复解析
- 🔒 安全可靠: 完善的错误处理和日志记录
- 🌐 Vercel部署: 支持一键部署到Vercel平台
- 📊 监控统计: 提供详细的统计信息和健康检查
- 🔄 API兼容: 与Java版本netdisk-fast-download完全兼容
| 网盘名称 | 类型标识 | 支持功能 | 单文件限制 |
|---|---|---|---|
| 蓝奏云 | lz |
普通分享、加密分享 | 100M |
| 奶牛快传 | cow |
普通分享 | 无限制 |
| 123云盘 | pan123 |
普通分享、加密分享 | 100G |
- 克隆项目
git clone <repository-url>
cd nfd-vercel-ai- 安装依赖
npm install- 启动开发服务器
npm run dev- 访问服务
http://localhost:3000
-
Fork项目到你的GitHub账户
-
导入到Vercel
- 登录 Vercel
- 点击 "New Project"
- 选择你的GitHub仓库
- 点击 "Deploy"
-
配置环境变量(可选)
NODE_ENV: 环境模式(production/development)LOG_LEVEL: 日志级别(debug/info/warn/error)
GET /GET /healthGET /supportedGET /parser?url=分享链接&pwd=xxx或者
GET /parser?url=UrlEncode(分享链接)&pwd=xxx参数说明:
url: 分享链接(支持URL编码)pwd: 密码(可选)
示例:
# 解析蓝奏云分享
curl "https://your-domain.vercel.app/parser?url=https://www.lanzoux.com/ia2cntg"
# 解析带密码的分享
curl "https://your-domain.vercel.app/parser?url=https://www.lanzoux.com/ia2cntg&pwd=123456"
# 使用URL编码
curl "https://your-domain.vercel.app/parser?url=https%3A%2F%2Fwww.lanzoux.com%2Fia2cntg&pwd=123456"GET /d/网盘标识/分享key@分享密码参数说明:
网盘标识: 网盘类型(lz、cow、pan123等)分享key: 分享ID分享密码: 密码(可选,用@分隔)
示例:
# 解析蓝奏云分享
curl "https://your-domain.vercel.app/d/lz/ia2cntg"
# 解析带密码的分享
curl "https://your-domain.vercel.app/d/lz/ia2cntg@123456"GET /json/parser?url=分享链接&pwd=xxx示例:
# 解析蓝奏云分享(JSON格式)
curl "https://your-domain.vercel.app/json/parser?url=https://www.lanzoux.com/ia2cntg"
# 解析带密码的分享(JSON格式)
curl "https://your-domain.vercel.app/json/parser?url=https://www.lanzoux.com/ia2cntg&pwd=123456"GET /json/网盘标识/分享key@分享密码示例:
# 解析蓝奏云分享(JSON格式)
curl "https://your-domain.vercel.app/json/lz/ia2cntg"
# 解析带密码的分享(JSON格式)
curl "https://your-domain.vercel.app/json/lz/ia2cntg@123456"GET /statsGET /cache/statsPOST /cache/flushPOST /test/:panType
Content-Type: application/json
{
"shareId": "ia2cntg",
"password": "123456"
}对于 /parser 和 /d/ 接口,成功时直接重定向到下载链接。
对于 /json/parser 和 /json/ 接口,返回JSON格式的解析结果:
{
"panType": "lz",
"shareId": "ia2cntg",
"fileName": "example.zip",
"fileSize": "50.2 MB",
"downloadUrl": "https://download.example.com/file/xxx",
"timestamp": "2024-01-01T00:00:00.000Z"
}{
"success": false,
"message": "错误信息"
}本Node.js版本完全兼容Java版本netdisk-fast-download的API接口:
| 功能 | Java版本 | Node.js版本 | 兼容性 |
|---|---|---|---|
| 解析并跳转 | /parser?url=分享链接&pwd=xxx |
/parser?url=分享链接&pwd=xxx |
✅ 完全兼容 |
| 直接路径跳转 | /d/网盘标识/分享key@分享密码 |
/d/网盘标识/分享key@分享密码 |
✅ 完全兼容 |
| JSON格式解析 | /json/parser?url=分享链接&pwd=xxx |
/json/parser?url=分享链接&pwd=xxx |
✅ 完全兼容 |
| JSON直接路径 | /json/网盘标识/分享key@分享密码 |
/json/网盘标识/分享key@分享密码 |
✅ 完全兼容 |
| URL编码支持 | 支持UrlEncode | 支持encodeURIComponent | ✅ 完全兼容 |
| 响应格式 | 302重定向/JSON | 302重定向/JSON | ✅ 完全兼容 |
nfd-vercel-ai/
├── config/ # 配置文件
│ └── app-config.js # 应用配置
├── parsers/ # 解析器模块
│ ├── lanzou-parser.js # 蓝奏云解析器
│ ├── cow-parser.js # 奶牛快传解析器
│ ├── pan123-parser.js # 123云盘解析器
│ └── parser-manager.js # 解析器管理器
├── routes/ # 路由模块
│ └── api.js # API路由
├── utils/ # 工具模块
│ ├── cache.js # 缓存工具
│ ├── http-client.js # HTTP客户端
│ └── logger.js # 日志工具
├── test/ # 测试文件
│ └── test.js # API测试
├── logs/ # 日志文件目录
├── index.js # 主应用文件
├── package.json # 项目配置
├── vercel.json # Vercel配置
├── README.md # 项目文档
└── DEPLOYMENT.md # 部署指南
cache: {
defaultTTL: 3600, // 默认缓存时间(秒)
lanzouTTL: 1800, // 蓝奏云缓存时间
cowTTL: 3600, // 奶牛快传缓存时间
pan123TTL: 7200, // 123云盘缓存时间
// ... 其他网盘缓存时间
}request: {
timeout: 10000, // 请求超时时间(毫秒)
retries: 3, // 重试次数
userAgent: '...' // 用户代理
}- 创建解析器文件
// parsers/new-parser.js
class NewParser {
constructor() {
this.panType = 'new';
}
async parse(shareId, password = '') {
// 实现解析逻辑
}
validateUrl(url) {
// 实现URL验证
}
}
module.exports = NewParser;- 注册到解析器管理器
// parsers/parser-manager.js
const NewParser = require('./new-parser');
this.parsers = {
// ... 现有解析器
'new': new NewParser()
};- 添加配置
// config/app-config.js
netdisk: {
new: {
baseUrl: 'https://example.com',
apiUrl: 'https://example.com/api',
headers: { /* ... */ }
}
}# 运行测试
npm test
# 测试特定解析器
curl -X POST "http://localhost:3000/test/lz" \
-H "Content-Type: application/json" \
-d '{"shareId": "ia2cntg"}'项目已配置好Vercel部署,包含:
vercel.json: Vercel配置文件- 无状态设计,适合Serverless环境
- 自动环境变量配置
- 传统服务器
npm install --production
npm start- Docker部署
FROM node:18-alpine
WORKDIR /app
COPY package*.json ./
RUN npm ci --only=production
COPY . .
EXPOSE 3000
CMD ["npm", "start"]# 查看应用日志
tail -f logs/combined.log
# 查看错误日志
tail -f logs/error.log- 访问
/stats查看系统状态 - 访问
/cache/stats查看缓存状态 - 访问
/health进行健康检查
A: 检查以下几点:
- 分享链接是否有效
- 密码是否正确
- 网盘服务是否正常
- 查看日志获取详细错误信息
A:
- 确保网络连接稳定
- 适当调整请求超时时间
- 使用代理服务(如需要)
- 定期更新解析器逻辑
A:
- 检查缓存配置是否正确
- 确认缓存键生成逻辑
- 查看缓存统计信息
A:
- 部署方式更简单(支持Vercel一键部署)
- 启动速度更快
- 内存占用更少
- API接口完全兼容
A: 是的,完全支持URL编码。可以使用原始URL或编码后的URL:
- 原始:
/parser?url=https://www.lanzoux.com/ia2cntg - 编码:
/parser?url=https%3A%2F%2Fwww.lanzoux.com%2Fia2cntg
欢迎提交Issue和Pull Request!
- Fork项目
- 创建功能分支
- 提交更改
- 创建Pull Request
MIT License
- 本项目仅供学习和研究使用
- 请遵守相关网盘服务的使用条款
- 开发者不对使用本项目造成的任何后果负责
- 初始版本发布
- 支持蓝奏云、奶牛快传、123云盘
- 基础缓存和日志功能
- Vercel部署支持
- 与Java版本API完全兼容
- 支持所有Java版本的接口格式