【要約】Chrome DevTools Protocol で『拡張機能では見えない』メディアストリームを観測する [Zenn_Python] | Summary by TechDistill
> Source: Zenn_Python
Execute Primary Source
// Problem
開発者がブラウザ内の通信を解析しようとする際、標準的なDevToolsや拡張機能では通信を見落とす問題に直面する。従来の観測手法では、以下の要因によりメディアリクエストが捕捉できない。
- ・OOPIF(別オリジンiframe)内の通信が、トップフレームの観測範囲から漏れる。
- ・MSE(Media Source Extensions)により、映像がblob URLとして動的に取得される。
- ・UMP/SABR等の新方式により、メディアが独自形式でカプセル化される。
// Approach
開発者はCDPを用いて、ブラウザ全体のターゲットを網羅的に捕捉する手法を採用する。ブラウザ階層のエンドポイントから接続し、以下のステップで観測を行う。
- ・
Target.setAutoAttach(flatten: true)を用い、OOPIFやWorkerへ自動アタッチする。 - ・
Network.enableを全ターゲットに適用し、通信を可視化する。 - ・署名対象外のクエリを削除し、HTTP
Rangeヘッダを用いて生のfMP4を取得する。 - ・
Runtime.evaluateでプレーヤー内部のstreamingDataを直接抽出する。
// Result
この手法により、エンジニアは複雑なストリーミングの内部構造を詳細に把握できる。具体的には以下の成果が得られる。
- ・拡張機能では見えないiframe内の通信を、URLやヘッダと共に完全に取得できる。
- ・UMP包装を回避し、ffmpegを用いて映像と音声を無劣化で結合できる。
- ・配信側の仕様変更(SABRの進化やDRM導入)によるリスクを技術的に整理できる。
Senior Engineer Insight
> 本手法はブラウザの内部構造を突いた強力な観測手段である。しかし、配信側の防御策(SABRの厳格化やDRM導入)は、この種の迂回策を無効化する方向に進化している。実戦投入においては、単なるURL取得に留まらず、再生状態の検証や暗号化への対応といった、より高度な解析能力が求められるだろう。技術的な「いたちごっこ」を前提とした設計が必要だ。