iPhone App Storeの無料アプリ総合ランキング2位に「iLoveMusic」という無料で音楽を聞けるアプリがありました。目立つので気になっていた人も多いかと思います。私も気になって説明を読んでみたのですが、すぐわかったのは、音楽データはインターネット上で公開されているサービスに掲載されているコンテンツで、ダウンロード機能はない(ストリーミング再生)ということでした。そしてユーザーは、著作権にまつわる問題や法律(違法かどうか)が気になっているようです。
そこでとりあえず、「このアプリが音楽データを一体どこから持ってきているのか」、「本当にインターネット上で公開されているデータからストリーミング再生しているのか(iLoveMusicのサーバーでキャッシュしていたりしないのか)」が気になりましたし、多くのユーザーやその他のいろいろな立場の人も気になっていると思われます。そこで今回は、WiresharkでiPhoneのパケットキャプチャを行い、音楽データはどこからストリーミングされているのかを調べてみました。紹介します。
最終的に、中国の音楽ストリーミングサービスから直接ストリーミング再生していることが判明しました。
そして、「こういう音楽無料再生アプリって、こんなふうに作れてしまうんだなぁ」、ということがよくわかりました。
目次
iLoveMusicについて
iLoveMusic は、4/17にiOS版がリリースされたばかりの新しいアプリです。
しかし、既にiTunesの無料アプリの総合ランキング上位にあり、100万ダウンロードを突破済みで、無料総合ランキング1位も経験しているようです。
作者の名前は「Yinlong Tan」という人で、中国系かな、と思わせるのですが、アプリの対応言語は「日本語」「英語」で中国語はありません。
というか、オリコンのランキングが全面だったり、アプリ内の日本語説明文が日本語ネイティブが書いたと思われる自然な日本語だったので、もしかすると作者が日本人なのかもしれません。
音楽データ(コンテンツ)の入手元に関する公式情報
さて、このアプリの解説文には、「無料で数千万曲が聴き放題」と書かれているのですが、その音楽データについては、次のように説明されています。
【コンテンツについて】 当アプリ内においての音楽は一般にインターネット上で公開されているサービス上に掲載されているコンテンツであり、ダウンロードする機能はありません。
当アプリでは当該コンテンツの著作権に関しては関知しておりませんのでご了承ください。
本アプリにおいて著作権を侵害している又はその恐れがあるものについては、対応致しますのでお問合わせより御連絡下さい。
ここで重要なのは、「音楽データは、ほかのサービスから取得している」ということと、「ダウンロード機能はない」ということです。
どちらも、法律的な問題を回避するため(回避できているかは不明)の文言だと思われます。とはいえ、それはアプリ作者の話ではなく、ユーザーを安心させるための文章のように感じました(ダウンロード機能がない、というところが特に)。
ちなみに、このアプリには、大量の広告が掲載されています。
Wiresharkで通信をキャプチャしてみる
さて、iPhone端末の通信をWiresharkでパケットキャプチャする方法は別掲することにして、分析結果を紹介します。
音楽データは中国からストリーミングしている模様
アプリを起動して、通信先を特定する目的で、最初の画面に表示された音楽を1つ、再生してみました。そしてそこから、中国国内のIPアドレスからストリーミングされていることが分かりました。
IPアドレスから中国のIPアドレスであることはわかったのですが、IPアドレスだけでは、どこのなんという名前のどういうサービスからストリーミングされているのかは不明でした(後ほど判明します)。
これだけだと、このアプリ作者(※所在は分からない)が中国国内にサーバーを借りて、自らストリーミングサーバーを立てている可能性も考えられます。
検索機能をチェックしてみる
IPアドレスで中国だ、とわかっても、そこからサービスまで特定するのは難しそうでした。IPアドレスからの逆引きはできませんでした。
そこで目をつけたのが、iLoveMusicの音楽の検索機能です。
ストリーミングサーバーは別のサイトであっても、検索サーバーは、iLoveMusicの所有するサーバーかもしれない!と思ったからです(注:この時点で、いろいろなサービスから音楽データをかき集めてきたのだと思っていた)。
そこで、Wiresharkで、検索機能を使った直後のHTTPヘッダを見てみました。
中華サイトXiami.comの音楽検索APIの利用が判明
すると、「GET /app/android/search-part?key=searchword&type=songs&page=1 HTTP/1.1 Host: api.xiami.com ...」や「GET /app/android/search-part?key=searchword&type=albums&page=1 HTTP/1.1 Host: api.xiami.com ...」というリクエストヘッダを見つけることができました。
つまり、iLoveMusicは、Xiami.comの音楽・アルバム検索APIを利用していたとわかったのです。また、他のサービスへの検索リクエストは見当たりませんでした。
ここから、「xiami.com」というサイトの、検索APIを叩いていることが分かりました。また、そのドメインから、「虾米音乐网(xiami.com)」というサイトが見つかりました。
このxiami.comについて調べてみると、Xiami.comは、中国の無料音楽ストリーミングサイトであるとわかりました。
APIから音楽ファイル(.mp3)のURLが返ってくる
そしてこのAPIからは、アルバムのジャケット画像(.jpg)や、xiami.com上のmp3ファイルのURL、アルバム名、アーティスト名、曲名、音楽固有のID などがごっそり取得できているようでした。
つまり、iLoveMusicに表示される音楽情報は、丸ごとこのXiami.comのAPIから取得できるものだということがわかりました。つまり、自前の音楽情報サーバーは必要なかったのです。
検索APIについて
「こんな音楽ファイル検索APIがあるとは!」という軽い衝撃です。
ただ、よくAPIのURLを見てみると、api.xiami.com/app/android/...となっており、なぜか「android」という文字が入っています。
そこで、APIのURLで検索してapi.xiami.comの解説を探したのですが、公式の解説ページは見つからず(フォーラムの書き込みが見つかるくらい)、その代わりに、xiami.comの公式アプリ「虾米音乐」があることがわかりました(iOS、Android、Windows、Macなどなど)。
このことから、xiami.comの公式アプリ(虾米音乐)が利用している音楽検索APIを使っていると予想出来ました。
音楽はXiami.comからストリーミングされていた
ここで、検索APIから返ってきている.mp3のあるホスト(m5.file.xiami.com)のドメインをnslookupしてみると、先ほど詳細不明だった、音楽ファイルのストリーミング元IPアドレスと一致しました。
こうしてようやく、音楽ファイルはXiami.comから持ってきているということが明らかになりました。
iLoveMusicはXiami.comのクライアントアプリだった
また、検索APIのところで指摘したように、他のサービスは使っておらず、Xiami.comの検索APIと、Xiami.comの音楽ファイルのみを使っていると考えられます。
ということから、iLoveMusicは、Xiami.comという中国のサイトに完全に乗っかった、クライアントアプリだということがわかりました。
感想
とりあえず、こんなに簡単に音楽ファイルを検索できるAPIが利用可能だとは思いませんでした。いくつかのサイトをクロールして音楽データの情報を収集しているのかと最初は思っていたので、驚きました。
そして、この仕組みから、類似アプリがいくらでも作られる可能性がある、ということも分かりました。
今回は調べていませんが、他のアプリもこういうAPIを利用していているのかもしれません。
本当はもっと調べればいろいろわかるはずですが、もう事前に知りたかった重要なところは判明したので、アプリはアンインストールしました。
最終更新日:2014年5月11日