はじめに
ここ最近のスマホアプリには、Webブラウザの機能を実装したものが少なくありません。 ("スマホアプリ内で立ち上がるブラウザ「アプリ内ブラウザ」"の機能は「WebView」というコンポーネントを用いて実装されています。)
昨今のWebサイト、サービス運営に於いて、「通常のWebブラウザ」からのリクエストなのか「アプリ内ブラウザ」からのリクエストなのか判断しなければいけないケースがあります。
この判断にはご存じ、"UserAgent"(以下UA)を用いるわけですが、実際に「通常のWebブラウザ」や「アプリ内ブラウザ」がどういったUAでリクエストを送信しているのか、調査に利用するツール「Charles」の設定をご紹介しながら、スマホアプリのUAを見ていきたいと思います。
Charlesの設定
Charlesについて
CharlesはPC上に仮想のHTTPproxyを立ち上げ、端末の通信をモニタリングし、リクエストやレスポンスの内容を書き換えたりすることができます。
有償のツールですが、試用版(30日)があります。 なお、試用版は30分ごとに強制終了されてしまう制約があります。
Charlesは以下のサイトからダウンロードできます。 http://www.charlesproxy.com/ なお、記事執筆時の最新バージョンは3.10.2となっており、本記事ではバージョン3.10.2を使用します。
Proxyの設定(PC側)
以下の手順でProxyの設定を行います。
【Proxy】>【Proxy Settings…】を選択すると 【Proxy Settings】のポップアップが開きます。 【Port】を【8888】に指定します。(おそらくデフォルト設定の状態)
なお、デフォルトではhttpsのモニタリングが無効になっているため、以下の手順でSSLを有効化します。
【Proxy】>【SSL Proxy Settings…】で【Enable SSL Proxying】にチェックを入れ、【Add】ボタンを押下し、【Host】に【*】を追加します。
iPhoneの設定
ProxyとなるPCと検証対象のiPhoneは同一のネットワークに接続する必要があります。 そのため、iPhone側でもProxyへ接続するための設定を行います。
設定画面から接続しているWifiの設定を開き、【HTTPプロキシ】を【手動】に設定し、 【サーバ】にProxyとするPCのIPアドレスを入力し、【ポート番号】にCharlesで設定した【8888】番を入力します。
また、SSL通信の中身を見るには証明書が必要になります。 iPhoneにSSL証明書をインストールするため、Safariで以下のリンクへアクセスし、Charlesの証明書を取得します。 http://charlesproxy.com/charles.crt
以上で設定は完了です。
この状態でiPhoneのアプリの起動やブラウザを立ち上げる等、通信が発生する操作を行うと 以下のような形でHTTP通信をモニタリングすることができます。
各スマホアプリUA一覧まとめ
最後に個人的に抜粋したスマホアプリのUAを一覧表にまとめてみました。 (検証端末はiPhone6のiOS8.1です。)
アプリ名 | UserAgent |
Mozilla/5.0 (iPhone; CPU iPhone OS 8_1 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko) Mobile/12B411 [FBAN/FBIOS;FBAV/36.0.0.40.231;FBBV/13431455;FBDV/iPhone7,2;FBMD/iPhone;FBSN/iPhone OS;FBSV/8.1;FBSS/2; FBCR/ | |
Mozilla/5.0 (iPhone; CPU iPhone OS 8_1 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko) Mobile/12B411 Twitter for iPhone | |
LINE | Mozilla/5.0 (iPhone; CPU iPhone OS 8_1 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko) Mobile/12B411 Safari Line/5.2.1 |
NAVERまとめ | Mozilla/5.0 (iPhone; CPU iPhone OS 7_0_4 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Version/7.0 Mobile/11B554a Safari/9537.53 NaverMatome-iPhone |
はてブ | Mozilla/5.0 (iPhone; CPU iPhone OS 8_1 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko) Mobile/12B411 hatenaBookmarkiPhoneApp/2.23.1 |
Gunosy | gunosy/4.3.3 (iPhone; iOS 8.1; Scale/2.00) |
SmartNews | Mozilla/5.0 (iPhone; CPU iPhone OS 8_1 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko) Mobile/12B411 |
Amazon | Mozilla/5.0 (iPhone; CPU iPhone OS 8_1 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko) Mobile/12B411 ※iOSWebViewのUAでした |
楽天市場 | Mozilla/5.0 (iPhone; CPU iPhone OS 8_1 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko) Mobile/12B411 IchibaApp-jp.co.rakuten.ichiba/2.7.3 |
Yodobashi | Yodobashi 1.1.20 rv:1.1.20.1 (iPhone; iPhone OS 8.1; ja_JP) |
アプリによっては独自のUAを設定しているものや、設定していなもの、 アプリのバージョンを記載しているものや、そうでないもの等色々ありますね。
このUA一覧が何かのお役に立てれば幸いです。。。
※これは2015/8/12時点の情報です。スマホアプリのUAはアプリ開発側で適宜変更される可能性があります。