sharoon7171/mixdrop-direct-resolver
GitHub: sharoon7171/mixdrop-direct-resolver
通过逆向解析 MixDrop 嵌入播放器脚本来提取带签名 CDN 直链,并提供 Referer 代理以实现本地浏览器播放的 Node.js 服务。
Stars: 0 | Forks: 0
# MixDrop 直连链接解析器
将 MixDrop **文件 ID** 解析为带签名的直接 `mxcontent.net` MP4 URL。服务器对嵌入播放器页面进行了逆向工程处理;内置 UI 可用于在本地测试播放。
**输入:** `el09xempuzkxz4` — 不是完整的 URL。
## 架构
```
flowchart TB
subgraph client ["Browser"]
UI["public/app.js"]
VID["<video>"]
end
subgraph server ["Node server :8789"]
IDX["index.js"]
RES["POST /api/resolve"]
STR["GET /api/stream"]
DEC["decode-page.js"]
HTTP["http/client.js"]
end
subgraph upstream ["Upstream"]
EMB["miixdrop.net/e/{id}"]
CDN["*.mxcontent.net/v2/{id}.mp4"]
end
UI -->|file ID| RES
RES --> HTTP
HTTP -->|HTTP/2| EMB
EMB --> DEC
DEC -->|MDCore.wurl| RES
RES -->|directLink + referer| UI
UI -->|proxy URL| STR
STR --> HTTP
HTTP -->|HTTP/1.1 + Referer| CDN
STR -->|range passthrough| VID
```
| 层级 | 主机 | 角色 |
|---|---|---|
| 站点 | `miixdrop.net` | 规范源;镜像重定向至此 |
| 嵌入 | `miixdrop.net/e/{id}` | 包含流媒体 URL 的打包播放器脚本 |
| CDN | `*.mxcontent.net` | 带签名的 MP4 分发 |
## 流媒体解析
解析是一条单一路径 — 没有镜像列表,没有协议重试。
```
sequenceDiagram
participant API as /api/resolve
participant H2 as HTTP/2 client
participant Embed as miixdrop.net
participant Decode as decode-page
participant H1 as HTTP/1.1 client
participant CDN as mxcontent.net
API->>H2: GET /e/{id}
H2->>Embed: Chrome TLS + document headers
Embed-->>H2: HTML + packed eval()
H2-->>API: page body
API->>Decode: unpack eval → MDCore.wurl
Decode-->>API: https://a-delivery46.mxcontent.net/v2/{id}.mp4?s=…
API->>H1: Range bytes=0-15, Referer miixdrop.net/
H1->>CDN: probe
CDN-->>H1: 206 + ftyp
API-->>API: validate host ends with mxcontent.net
```
1. **获取嵌入页面** — 通过 HTTP/2 发送 `GET https://miixdrop.net/e/{id}` 请求,使用复用的 session 和类似 Chrome 的 TLS。
2. **解包播放器** — 页面提供了一个经过打包的 `eval()` 字符串。`decode-page.js` 对其进行解包并读取 `MDCore.wurl`,这是一个协议相对的 CDN URL(`//a-delivery46.mxcontent.net/v2/{id}.mp4?…`)。
3. **探测 CDN** — 通过 HTTP/1.1 `GET` 请求该带签名的 URL(CDN 会拒绝 HTTP/2),并带有 `Referer: https://miixdrop.net/`。`bytes=0-15` 范围请求必须返回 **206** 和一个 MP4 `ftyp` atom。
4. **响应** — 返回包含 `directLink`、`referer`、`title` 和 `videoId` 的 JSON。
带签名的查询参数(`s`、`e`、`_t`)由 MixDrop 签发并会过期;当链接失效时请重新进行解析。
## 播放
直接的 CDN URL 是真实的流媒体地址。设置代理仅仅是因为浏览器无法在 `
标签:GNU通用公共许可证, MITM代理, Node.js, Web爬虫, 流媒体代理, 自定义脚本, 视频播放器, 链接解析