逆向 115 网盘 API、安装 MCP 服务器、修复 Skill — 折腾记录

作者 mcx 日期 2026-06-11
逆向 115 网盘 API、安装 MCP 服务器、修复 Skill — 折腾记录

逆向 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 → 404
  • passport.115.com/qrcode/generate → 404
  • passportapi.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
2
3
4
5
6
7
8
9
10
11
GET https://qrcodeapi.115.com/api/1.0/web/1.0/token

→ {
"state":1,
"data":{
"uid":"5df54c49...",
"time":1781179327,
"sign":"c4268934...",
"qrcode":"https://115.com/scan/dg-..."
}
}

轮询状态:

1
2
3
4
5
6
7
8
GET https://qrcodeapi.115.com/get/status/?uid=xxx&time=xxx&sign=xxx

status:
0 = 等待扫码
1 = 已扫码待确认
2 = 登录成功
-1 = 过期
-2 = 取消

登录确认(status=2 后调用):

1
2
3
4
POST https://passportapi.115.com/app/1.0/web/1.0/login/qrcode
account=xxx&app=web

→ 返回 cookie: UID, CID, SEID, KID + Set-Cookie: USERSESSIONID

踩坑

Cookie 字段名变了。旧格式用 SE,新格式用 SEID。而且多了一个 USERSESSIONID,缺了这个 sessionId 所有 API 都返回”登录超时”。

1
2
3
4
5
// 错误
SE=xxx → API 返回 "登录超时"

// 正确
SEID=xxx; USERSESSIONID=yyy → API 返回用户信息

第二阶段:离线下载遇阻

登录搞定后,想试离线下载(lixian),结果:

1
2
POST https://lixian.115.com/lixian
→ {"state":false,"error_msg":"请升级新版本的115客户端"}

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 APIproapi.115.com/open/offline/),不是抓取
  • ✅ 支持 ed2k/磁力/HTTP/FTP/种子离线下载
  • ✅ 还是 MCP 服务器 → 可以直接挂到 Hermes 里

第四阶段:安装 115-MCP-Server

1
2
3
4
git clone https://github.com/lingwunb666/115-MCP-Server.git
cd 115-MCP-Server
uv venv --python 3.12 .venv
uv pip install -e .

创建 Cookie 文件(从第一步登录拿到的数据):

1
UID=xxx; CID=xxx; SEID=xxx; KID=xxx; USERSESSIONID=xxx

加到 Hermes 的 config.yaml

1
2
3
4
5
6
mcp_servers:
115:
command: "/path/to/.venv/bin/115-MCP-Server"
args: ["--transport", "stdio"]
env:
P115_COOKIES_PATH: "/path/to/115-cookies.txt"

验证服务正常:

1
2
3
4
from mcp_115_server.service import P115Service
svc = P115Service()
info = svc.get_account_info()
print(info.keys()) # → ['state', 'code', 'message', 'data']

第五阶段:修复旧 Skill

同时把旧的 115-skills 也修了。改动:

  1. auth.js — QR 码 API 端点从 webapi.115.com/qrcode/login 换成 qrcodeapi.115.com/api/1.0/web/1.0/token
  2. auth.js — Cookie 字段 SESEID,新增 USERSESSIONID/KID
  3. auth.js — 登录确认流程(status=2 后调用 login/qrcode 接口获取真实 cookie)
  4. http-client.js — Cookie 头格式修正,包含 KIDUSERSESSIONID
  5. cookie-store.js — 新增 kidsessionId 字段存储

最终效果

功能 旧 skill 修复后 MCP Server
扫码登录 ❌ 404
文件浏览 ❌ 404
搜索文件 ❌ 404
离线下载 ❌ API 关闭
上传文件
分享转存 ❌ 404

旧 skill 适合轻量浏览,MCP Server 提供完整能力(特别是离线下载)。

链接汇总