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爬虫, 流媒体代理, 自定义脚本, 视频播放器, 链接解析