最近のiOSアプリでは、ソーシャルゲームのようにゲームはiPhoneやiPadなどの端末でプレイするもののデータはサーバー上に保存されるようなものが多数あります。
そうでなくて、ゲーム内で課金アイテム(アドオン)を購入するなどサーバーとの通信が行われるものがあります。
通常、インターネットでホームページを見る場合はアドレスバーにそのホームページのURI(アドレス)が表示されますが(このサイトであればhttps://bm2dx.com/なんちゃらっていうやつ)、アプリ内での通信ではそういうのが見れません。
アドレスが存在しないわけではなく見れないだけです。
今回は、そのアドレスを見る方法の説明です。
準備するもの
・i-Funbox(または同等のソフト)とiOS端末とPCを接続するもの(方法)
・PupSQLite(SQLiteファイルを開くソフト。他の同じことができるソフトでもOK)
cache.dbとは?
アプリ内でのHTTP通信は「 cache.db 」というファイルに履歴が記録されます。
ただし、過去の通信が全て保存されているわけではなく、cache.dbのファイルサイズで20MBまで保存され、それ以上になる場合は古いものから削除される?ようです。
参考:iOS5からUIWebViewのキャッシュはディスク上にも保存される
つまりそのcache.dbを見ればどこのサーバーと通信してるかがなんとく見ることが出来る。
見たからなんかできる訳じゃないものもありますけどw
ファイルをコピーする
履歴ファイルを見るので当たり前ですけど、最初にアプリを起動して調べたい通信を行うことを忘れないようにしてください。
20MBまで保存されているので、結構前の情報まで残っていたりするんで、アプリ起動して通信しなくても残っていたりはしますw
ファイルをコピーするためにはi-Funboxを使います。
https://bm2dx.com/jubeat/plus/playlist/i-funbox.shtml
使い方は、うちのサイトで別に解説したページがあるので基本的なところはそちらを参照。
アプリ内の/Library/cache/cache.db あたりにファイルがあったと思うので、それをPCへコピーしてください。
iOS 7から仕様が変更され、cache.db-walとcache.db-shmというファイルがある場合はそれも同じくコピーしてください。
ファイルを開く
コピーしたファイルはSQLiteというデータベースの形式なので、開くために「 PupSQLite 」等のソフトが必要です。
ソフトを起動して、cache.dbを開きます。cache.db-wal等は開くと消えますが問題ありません。
Tablesのところに「cfurl_cache_blob_data」、「cfurl_cache_receiver_data」、「cfurl_cache_response」、「cfurl_cache_schema_version」という4つのテーブルがあるはずなので、「cfurl_cache_response」を開きます。
request_keyというフィールドにhttp://から始まるURIが入っているはずです。
表示されない場合はこの方法では見れない通信なんだと思います。
特にアクセスを制限していない、暗号化をしてないアプリの場合はPCのブラウザからアクセスすると内容を見ることが出来る場合もあります。
通信の内容まで見ることができないものもありますが、ある程度は見ることができるはず。
怪しいアプリが変なサーバーと通信していないか?の確認はこの方法である程度はできます。
例えばjubeat plus、REFLEC BEAT plusはSTOREをタップした際に、サーバーに情報を取得にいき(これがcache.dbに保存される)、最新のパックの情報などがJSON形式で返ってきます。
パックをタップすると詳細の情報をサーバーに取りにいき・・・という感じで各通信がわかります。
GET送信してるみたいなので、アドレス全部コピペすればブラウザから見れたりします。
関連記事:【jubeat plus】JSON仕様とjbtファイルの中身