sharoon7171/streamtape-direct-resolver

GitHub: sharoon7171/streamtape-direct-resolver

一个 Node.js 编写的 Streamtape 视频直链解析器,通过重放前端混淆逻辑和跟随网关重定向,将文件 ID 或页面 URL 转换为可直接播放的 tapecontent.net MP4 地址。

Stars: 0 | Forks: 0

# Streamtape 直链解析器 将 Streamtape **文件 ID 或 URL** 解析为直接的 `tapecontent.net` MP4 链接。一个小型 Node 服务器执行解析;内置的 UI 在浏览器中解析并播放流。 **输入示例:** `LQYwpG81BwiRGOv` 或 `https://streamtape.to/v/LQYwpG81BwiRGOv` ## 架构 ``` flowchart TB subgraph client ["Browser"] UI["public/app.js"] VID["<video>"] end subgraph server ["Node server :8790"] IDX["src/server/index.js"] API["POST /api/resolve"] RES["src/streamtape/resolve.js"] end subgraph upstream ["Upstream"] PAGE["streamtape.to/v/{id}"] GATE["streamtape.to/get_video?…"] CDN["*.tapecontent.net"] end UI -->|videoId| API API --> RES RES -->|GET| PAGE PAGE -->|HTML + obfuscated JS| RES RES -->|GET + Referer| GATE GATE -->|302 Location| RES RES -->|Range probe| CDN RES -->|directLink + title| API API --> UI UI -->|directLink| VID VID -->|GET| CDN ``` | 层级 | 主机 | 角色 | |---|---|---| | 视频页面 | `streamtape.to/v/{id}` | 在混淆的内联 JavaScript 中提供已签名的 `get_video` 参数 | | 验证网关 | `streamtape.to/get_video` | 验证 token;以 **302** 响应重定向至 CDN | | CDN | `*.tapecontent.net` | 交付 MP4 (`Access-Control-Allow-Origin: *`) | ## 解析原理 Streamtape 不会将 CDN URL 嵌入页面中。视频页面包含诱饵链接,并在运行时通过 `substring` 混淆来构建真实的 `get_video` 路径。解析器会重放那段客户端逻辑,然后跟随网关重定向。 ``` sequenceDiagram participant API as /api/resolve participant Res as resolve.js participant Page as streamtape.to participant Gate as get_video participant CDN as tapecontent.net API->>Res: resolve(videoId) Res->>Page: GET /v/{id} Page-->>Res: HTML Res->>Res: eval innerHTML assignments → get_video path Res->>Gate: GET …&stream=1, Referer /v/{id} Gate-->>Res: 302 Location Res->>CDN: Range bytes=0-15 CDN-->>Res: 206 + ftyp Res-->>API: { videoId, title, directLink } ``` 1. **获取视频页面** — `GET https://streamtape.to/v/{id}`。 2. **解码混淆** — 定位 `document.getElementById(…).innerHTML` 代码块,在隔离的 `document` mock 中执行它,并读取在播放器脚本中与 `&stream=1` 绑定的元素。 3. **跟随网关** — 使用 `redirect: manual` 并将 `Referer` 设置为视频页面来请求解码后的 `get_video` URL。预期响应 **302**;读取 `Location`。 4. **探测 CDN** — `Range: bytes=0-15` 必须返回带有 MP4 `ftyp` atom 的 **206** 响应。主机名必须以 `tapecontent.net` 结尾。 `expires`、`ip` 和 `token` 由服务器端针对每个请求签发。链接过期时需重新解析。 ## 播放原理 没有使用代理。CDN 允许跨域访问 (`Access-Control-Allow-Origin: *`),因此 UI 将直链分配给 `
标签:API, BeEF, GNU通用公共许可证, MITM代理, Node.js, Web服务, 数据可视化, 流媒体, 爬虫, 网络测绘, 视频解析