最近話題のClubhouseですが、だいたい遊び尽くした感じがする(※3日くらい)ので、どんな技術を使ってるのか調べてみました。一部ではありますが、下記を使ってそうです。
- agora メディアストリーム基盤
- AWS S3とCloud Frontを使ってそう
- Cloudflare CDN
- baiduドメインのなにか
- pubnub pubsub基盤
先行して調べてた人
DNSパケットを見てagora使ってそうなことを調べてました。
調査方法
Apple公式の方法でiPhoneのパケットをキャプチャできます。
DNSパケットから使ってるサービスを探し出す
アプリからどんなサービスを使っているかを探り出すのは、DNSパケットを眺めるのが一番簡単です。大抵の場合暗号化されないですし、名前解決は必ず行われるからです。この部分をキャプチャしたのが下図。
関連ありそうなこちらのパケットにも注目。
iPhoneの色々なパケットが飛ぶので他のが混ざっている可能性はあるんですが、何回かトライした結果、下記は使われていそうだなーという感想です。
- agora メディアストリーム基盤
- AWS S3とCloud Frontを使ってそう
- Cloudflare CDN
- baiduドメインのなにか
- pubnub pubsub基盤
音声Codecは多分独自?
UDPパケットをみればCodecがわかりそうかなと思って見てみました。
いくつか見てみるとData長+000100で始まるのが特徴的なバイト列だということはわかるんですが、詳細は不明です。RTP+Opusとかがありがちな感じかと思ったのですが、RTPヘッダらしきものが見当たらないのでよくわかりません。
検索をしてみると、音声のストリーミングに使っているAgoraには独自Codecがあるようなのでこれかもしれません。暗号化されている可能性もなくはないのでこれ以上のことを調べるのはちょっとむずかしいかなというところでした。
もっと調べるには
もう少し深く調べるためには下記のようなことができそうです。誰か暇な人やらないかな・・・・?
- バイナリをiPhoneから抜いてシンボルテーブルを調べる(多分使ってるライブラリがわかる)
- Fridaをつかってアプリの挙動を調べる