逆向 115 网盘 API、安装 MCP 服务器、修复 Skill — 折腾记录
起因
拿到一个 115-publish 的 Hermes skill 包,功能很全:扫码登录、文件浏览、搜索、转存、离线下载。但装上一跑,全部 404。
1 | QR_FAIL:Request failed with status code 404 |
115 的 API 已经全面升级换代,旧的 skill 代码全废了。
第一阶段:逆向 QR 登录 API
旧代码用的端点:
webapi.115.com/qrcode/login→ 404passport.115.com/qrcode/generate→ 404passportapi.115.com/qrcode/generate→ 404
全死了。得自己找新的。
浏览器侦查
打开 115.com 的登录页面,找到”二维码登录”按钮。用 Chrome DevTools 摸到关键的 JavaScript 文件:
1 | cdnassets.115.com/login/loginworker/loginWkApi.js |
反混淆后提取到关键信息——新的 QR 码域名:
1 | qrcodeapi.115.com |
新 API 探针
直接请求 token 端点:
1 | GET https://qrcodeapi.115.com/api/1.0/web/1.0/token |
轮询状态:
1 | GET https://qrcodeapi.115.com/get/status/?uid=xxx&time=xxx&sign=xxx |
登录确认(status=2 后调用):
1 | POST https://passportapi.115.com/app/1.0/web/1.0/login/qrcode |
踩坑
Cookie 字段名变了。旧格式用 SE,新格式用 SEID。而且多了一个 USERSESSIONID,缺了这个 sessionId 所有 API 都返回”登录超时”。
1 | // 错误 |
第二阶段:离线下载遇阻
登录搞定后,想试离线下载(lixian),结果:
1 | POST https://lixian.115.com/lixian |
115 已经把离线下载的 web API 关了,只能用他们的客户端。
第三阶段:GitHub 寻宝
搜了一堆 115 离线下载的开源项目:
| 项目 | 状态 | 方法 |
|---|---|---|
| lixian-115 | ❌ 2016 年停更 | 旧 web API 抓取 |
| lx115 | ❌ 2020 年停更 | elevengo 库 |
| Offline-115 | ❌ 2021 年归档 | cookie 抓取 |
| 115-Download-request-forwarding | 🟡 工具已过时 | cookie 代理 |
| Telegram-115bot | 🟢 活跃维护 v3.4.2 | 115 Open Platform API |
| 115-MCP-Server | 🏆 活跃维护 | 115 Open API (官方) |
重点看 115-MCP-Server:
- ✅ 底层
p115client库(最后更新:2 天前) - ✅ 使用 115 官方 Open API(
proapi.115.com/open/offline/),不是抓取 - ✅ 支持 ed2k/磁力/HTTP/FTP/种子离线下载
- ✅ 还是 MCP 服务器 → 可以直接挂到 Hermes 里
第四阶段:安装 115-MCP-Server
1 | git clone https://github.com/lingwunb666/115-MCP-Server.git |
创建 Cookie 文件(从第一步登录拿到的数据):
1 | UID=xxx; CID=xxx; SEID=xxx; KID=xxx; USERSESSIONID=xxx |
加到 Hermes 的 config.yaml:
1 | mcp_servers: |
验证服务正常:
1 | from mcp_115_server.service import P115Service |
第五阶段:修复旧 Skill
同时把旧的 115-skills 也修了。改动:
- auth.js — QR 码 API 端点从
webapi.115.com/qrcode/login换成qrcodeapi.115.com/api/1.0/web/1.0/token - auth.js — Cookie 字段
SE→SEID,新增USERSESSIONID/KID - auth.js — 登录确认流程(status=2 后调用 login/qrcode 接口获取真实 cookie)
- http-client.js — Cookie 头格式修正,包含
KID和USERSESSIONID - cookie-store.js — 新增
kid和sessionId字段存储
最终效果
| 功能 | 旧 skill | 修复后 | MCP Server |
|---|---|---|---|
| 扫码登录 | ❌ 404 | ✅ | ✅ |
| 文件浏览 | ❌ 404 | ✅ | ✅ |
| 搜索文件 | ❌ 404 | ✅ | ✅ |
| 离线下载 | ❌ API 关闭 | ❌ | ✅ |
| 上传文件 | ❌ | ❌ | ✅ |
| 分享转存 | ❌ 404 | ❌ | ✅ |
旧 skill 适合轻量浏览,MCP Server 提供完整能力(特别是离线下载)。
链接汇总
- 115-MCP-Server — 最终使用的 MCP 服务器
- p115client — 底层 115 Python 客户端库
- 115 Open API 文档 — 官方 Open API 文档
- Telegram-115bot — 备选方案,Telegram 机器人
- elevengo — Go 版 115 库