mirror of
https://github.com/qtmleap/revkit.git
synced 2026-09-28 22:11:50 +02:00
- 旧ドキュメント (docs/netflix/, docs/instructions/ 等) を削除 - docs/spec/: appboot ピンニング解析、iOS再生フロー、 MSL CBOR鍵交換解析、キャプチャ復号状況、暗号化フロー図を追加 - docs/netflix_client_spec.md, platform_flow_comparison.md を追加 - iOS認証・マニフェスト・ライセンス取得フロー詳細を追加 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2.9 KiB
2.9 KiB
Netflix iOS 動画再生フロー
API コールシーケンス (起動 → 動画再生)
| Phase | Step | Endpoint | Host | Protocol |
|---|---|---|---|---|
| Boot | 1 | GET /iosui/healthcheck/15.48 |
ios.prod.ftl.netflix.com | HTTP/JSON |
| Boot | 2 | GET /iosui/user/15.48 (cold start) |
ios.prod.ftl.netflix.com | HTTP/JSON |
| Boot | 3 | POST /appboot/NFAPPL-02-... |
appboot.netflix.com | CBOR (MSL) |
| Auth | 4 | POST /graphql (FTL) |
ios.prod.ftl.netflix.com | HTTP/JSON |
| DRM | 5 | POST /nq/iosplatform/pbo_license/.../router |
ios.prod.ftl.netflix.com | MSL (msl_v1) |
| UI | 6 | POST /iosui/user/15.48 |
ios.prod.ftl.netflix.com | HTTP/JSON |
| Catalog | 7 | POST /graphql (NGP) |
ios.ngp.prod.cloud.netflix.com | HTTP/JSON |
| Telemetry | 8 | POST /msl/playapi/ios/logblob |
ios.prod.cloud.netflix.com | MSL (msl_v1) |
| Catalog | 9 | POST /graphql (Cloud) |
ios.prod.cloud.netflix.com | MSL (msl_v1) |
| Browse | 10 | GET /iosui/warmer/15.48 (lolomo) |
ios.prod.ftl.netflix.com | HTTP/JSON |
| Browse | 11 | GET /iosui/user/15.48 (video metadata) |
ios.prod.ftl.netflix.com | HTTP/JSON |
| Playback | 12 | POST /msl/playapi/ios/manifest |
ios.prod.ftl.netflix.com | MSL (msl_v1) |
| Playback | 13-14 | GET /iosui/user/15.48 (playback details) |
ios.prod.ftl.netflix.com | HTTP/JSON |
| Network | 15-16 | GET /ftl/probe |
ios.prod.ftl.netflix.com / oca-api.netflix.com | HTTP |
| Telemetry | 17 | POST /cl2 |
ichnaea-web.netflix.com | HTTP/JSON |
| DRM | 18 | POST /nq/iosplatform/pbo_license/.../router |
ios.prod.ftl.netflix.com | MSL (msl_v1) |
| Stream | 19 | GET /range/... |
*.oca.nflxvideo.net | HTTP (binary) |
ホスト別役割
| Host | 役割 |
|---|---|
| ios.prod.ftl.netflix.com | UI API, GraphQL, マニフェスト, DRM ライセンス |
| ios.prod.cloud.netflix.com | MSL テレメトリ (logblob), GraphQL (MSL ラップ) |
| ios.ngp.prod.cloud.netflix.com | GraphQL (NGP カタログ) |
| appboot.netflix.com | アプリ初期設定 (ESN 登録, trust store 配信) |
| oca-api.netflix.com | OCA ネットワークプローブ |
| ichnaea-web.netflix.com | クライアントテレメトリ |
| *.oca.nflxvideo.net | CDN (動画/音声セグメント配信) |
MSL vs Plain HTTP
- MSL (Content-Encoding: msl_v1): manifest, logblob, pbo_license, cloud graphql
- Plain HTTP/JSON: iosui/*, appboot, FTL graphql, ftl/probe, cl2
依存関係
- healthcheck + appboot → nfvdid Cookie, deviceIdToken 取得
- iosui/user (cold start) → プロファイル・設定
- graphql (FTL) → 認証 Cookie 必要 (NetflixId, SecureNetflixId)
- pbo_license (releaseLicense) → 既存 DRM セッション解放
- warmer/lolomo → 認証済みセッション必要
- iosui/user (video paths) → 動画メタデータ取得
- msl/playapi/ios/manifest → ESN, auth, メタデータ必要 → CDN URL 返却
- OCA segments → マニフェストの CDN URL からストリーミング