walterwhite-69/Miruro-API
GitHub: walterwhite-69/Miruro-API
一个绕过 Miruro 平台 Web Crypto 加密层的原生 Python REST API,可直接提取动漫元数据和 M3U8 流媒体地址,无需无头浏览器。
Stars: 18 | Forks: 34
# Miruro API v2.0 **Miruro 的终极、解密且完全逆向工程的 Python 原生后端。** [https://github.com/walterwhite-69/Miruro-API](https://github.com/walterwhite-69/Miruro-API)
## 功能介绍 Miruro 的前端通过一个 `secure/pipe` 隧道与其后端通信,该隧道对每个请求进行 base64 编码、gzip 压缩和加密。本项目绕过了所有这些机制,为您提供简单、直接的 REST 端点,以实现以下功能: 1. **搜索与过滤** 动漫,包含完整的 AniList 元数据 2. **获取完整的动漫信息** — 角色、制作人员、关联推荐、预告片、统计数据及所有元数据,只需一次请求 3. **浏览合集** — 流行、热门、即将播出、最近发布、时间表和精选推荐 — 均支持分页 4. **列出剧集**,包含来自多个提供商的解码剧集 ID 5. **获取 M3U8 流媒体 URL** 用于任何剧集 6. **自动补全** 搜索下拉框 UI 的建议 无需无头浏览器,无需 Selenium — 只有轻量级的异步 HTTP 请求。
## 所有端点 ### 🔍 搜索与发现 | 端点 | 描述 | 参数 | |---|---|---| | `GET /search?query={name}` | 包含丰富元数据(每个结果 20 个以上字段)的动漫全文搜索 | `query` (必填), `page`=1, `per_page`=20 | | `GET /suggestions?query={name}` | 用于下拉菜单的轻量级自动补全 — 返回 id, title, poster, format, status, year。最多 8 个结果。 | `query` (必填) | | `GET /filter` | 高级浏览/过滤,支持按类型、标签、年份、季度、格式、状态、排序的任意组合筛选 | 全部可选 — 见下文 | #### Filter 参数 | 参数 | 值 | |---|---| | `genre` | Action, Romance, Comedy, Drama, Fantasy, Sci-Fi 等 | | `tag` | Isekai, Time Skip, Reincarnation 等 | | `year` | 2025, 2024 等 | | `season` | WINTER · SPRING · SUMMER · FALL | | `format` | TV · MOVIE · OVA · ONA · SPECIAL | | `status` | RELEASING · FINISHED · NOT_YET_RELEASED · CANCELLED | | `sort` | SCORE_DESC · POPULARITY_DESC · TRENDING_DESC · START_DATE_DESC | | `page` / `per_page` | 分页 (默认值: 1 / 20, per_page 最大值: 50) | ### 📊 合集 (全部支持分页) | 端点 | 描述 | |---|---| | `GET /trending` | 当前流行趋势的动漫 | | `GET /popular` | 史上最受欢迎的动漫 | | `GET /upcoming` | 最受期待的即将播出动漫 | | `GET /recent` | 正在播出 / 本季动漫 | | `GET /spotlight` | 精选的“热门”列表 (流行 + 热门) | | `GET /schedule` | 未来一周的播出时间表 | 所有合集端点均接受 `page` 和 `per_page` 查询参数,并返回: ``` { "page": 1, "perPage": 20, "total": 5000, "hasNextPage": true, "results": [ ... ] } ``` `results` 中的每部动漫包含 20 个以上字段:title (romaji/english/native)、coverImage、bannerImage、format、season、seasonYear、episodes、duration、status、averageScore、meanScore、popularity、favourites、genres、source、countryOfOrigin、studios、nextAiringEpisode、startDate、endDate 等。 ### 📖 动漫详情 | 端点 | 描述 | |---|---| | `GET /info/{anilist_id}` | **完整的动漫页面** — 一次请求获取所有内容 | | `GET /anime/{id}/characters` | 包含配音演员的分页角色列表 | | `GET /anime/{id}/relations` | 所有关联媒体 (续集、前传、番外篇、衍生作品) | | `GET /anime/{id}/recommendations` | 按评分排序的社区推荐 | #### `/info/{id}` 返回的内容 构建完整动漫详情页所需的一切: - **核心**: id, idMal, title (romaji/english/native), description, coverImage, bannerImage - **元数据**: format, season, seasonYear, episodes, duration, status, source, countryOfOrigin - **评分**: averageScore, meanScore, popularity, favourites, trending - **分类**: genres, tags (带有 rank 和 spoiler 标志), synonyms, hashtag - **人物**: characters (25 个,带配音演员), staff (25 个,带职位) - **相关**: relations (续集/前传等), recommendations (10 个,带评分) - **媒体**: trailer (YouTube/Dailymotion), streamingEpisodes, externalLinks - **统计**: scoreDistribution, statusDistribution - **工作室**: name, isAnimationStudio, siteUrl - **日期**: startDate, endDate, nextAiringEpisode - **链接**: siteUrl, externalLinks (MAL, 官方网站等) ### ▶️ 流媒体播放 (3 步流程) 要获取视频流,请按顺序执行以下 3 个步骤: #### 第 1 步:获取剧集 — `GET /episodes/{anilist_id}` 返回来自多个提供商 (kiwi, arc, zoro, jet 等) 的所有剧集,按音频类型组织。 ``` { "mappings": { "anilistId": 178005, "malId": 56885, "kitsuId": ... }, "providers": { "kiwi": { "episodes": { "sub": [ { "id": "watch/kiwi/178005/sub/animepahe-1", "number": 1, "title": "Episode Title", "image": "https://serveproxy.com/url?url=...", "airDate": "2026-01-04", "duration": 1420, "description": "...", "filler": false } ], "dub": [ ... ] } }, "arc": { ... }, "zoro": { ... } } } ``` #### 第 2 步:获取播放源 [超级简单] 只需从第 1 步的响应中提取直接的 `id`,并将其用作 URL。无需手动参数或复杂的 ID! **端点:** `GET /{id}` **示例:** `GET /watch/kiwi/178005/sub/animepahe-1` ``` { "streams": [ { "url": "https://.../master.m3u8", "type": "hls", "quality": "1080p" } ], "subtitles": [ { "file": "https://...", "label": "English", "kind": "captions" } ], "intro": { "start": 0, "end": 90 }, "outro": { "start": 1300, "end": 1420 } } ```
备选 / 详细选项
如果你需要手动控制,可以使用传统端点: `GET /sources?episodeId=...&provider=...&anilistId=...&category=...`## 安装设置 ``` git clone https://github.com/walterwhite-69/Miruro-API.git cd Miruro-API pip install -r requirements.txt uvicorn api:app --host 0.0.0.0 --port 8000 ``` 然后打开 `http://localhost:8000/` 查看交互式 API 文档。
## 免责声明 本项目仅用于教育目的和 API 完整性研究。作者对网络使用不承担任何责任。代码中不包含任何可供直接恶意利用的制品。
**作者:** Walter | **GitHub:** [walterwhite-69](https://github.com/walterwhite-69)
标签:AniList, API, Base64解码, BeEF, DNS解析, Gzip解压, IP 地址批量处理, M3U8, Miruro, Python, REST API, URL抓取, Web Crypto, 云资产清单, 元数据提取, 免浏览器提取, 加密流量解密, 动漫API, 安全对抗, 开源项目, 异步编程, 抓包分析, 接口破解, 数据抓取, 无后门, 流媒体, 流媒体代理, 爬虫, 绕过加密, 视频解析, 解密, 计算机取证, 进程保护, 逆向工具, 逆向工程, 防御绕过