phicdy devlog

Androidアプリ開発やその他技術系の記事をたまに書きます

AndroidとかiOSとかモバイル多め。その他技術的なことも書いていきます。

mitmproxyで端末の通信内容を見る

mitmproxyとは

mitmproxyはコンソール型の通信監視ツールである。

mitmproxyは、プロキシを通じて通信サーバと端末の間に入り、その通信内容を表示する。

mitmproxy - home

f:id:phicdy:20150530154256p:plain


例えばモバイルのアプリケーションを開発している際に、端末から実際に行っている通信内容を確認したいときがある。

ログなどに出力すれば見ることはできるが、細かい情報を見ようとするならば実際に通信内容を見るしかない。

mitmproxyを使えば、リアルタイムに通信内容を確認できる。

今回はVirtualBox上のUbuntuにインストールして、Androidの通信を見てみた。

環境

 

インストール

pipを使ってインストールできる。

RUN apt-get -y update

# Install pip
sudo apt-get -y install python-dev
sudo apt-get -y install libxml2-dev
sudo apt-get -y install libxslt1-dev
sudo apt-get -y install zlib1g-dev
sudo apt-get -y install libffi-dev
sudo apt-get -y install libssl-dev
sudo apt-get -y install python-pip

# Install mitmproxy
sudo pip install mitmproxy

 

準備

端末

Androidの場合、Wi-Fi設定にてプロキシを設定できるのは3.2 以上のみである。

まず端末とmitmproxyの入ったUbuntuを同ネットワーク上に繋ぐ。

次に端末のWi-Fi設定から接続しているSSIDを長押しする。

そして「ネットワークを変更」から「詳細オプションを表示」にチェックを入れてプロキシを設定する。

プロキシのホストはUbuntuIPアドレス、ポートは自由に設定できる。

 

証明書のインストール

mitmproxyを使うと、mitmproxyを通じて通信を行うことになるので、端末に証明書をインストールする必要がある。

まずmitmproxyを起動する。デフォルトのポートは8080なので、プロキシのポートを8080以外に設定した場合は、-pオプションで変更する。

mitmproxy -p 8001

証明書をインストールする方法は2つある。

  • http://mitm.it にアクセスする。
  • adb pushで証明書を端末に直接入れてインストールする。

http://mitm.it にアクセスする際はmitmproxyを起動しておかないと接続できない。

証明書はmitmproxyを1度実行後、~/.mitmproxy/mitmproxy-ca-cert.cer に置かれるのでこれをadb pushで端末に入れる。

証明書を端末に入れた後は、設定 -> セキュリティ -> ストレージからインストール でインストールできる。

 

使い方

mitmproxyはコンソールで操作するツールになっている。

左にカーソルがあり、見たい通信のところでEnterキーを押すことで詳しい中身が見れる。

下の画像はAmazonにアクセスしたときのリクエスト内容である。

f:id:phicdy:20150530154314p:plain


tabキーを押すことでサーバからのレスポンスを確認できる。

f:id:phicdy:20150530154323p:plain

 

その他にも通信内容を変更して送り返したり、通信のフィルタリングを行ったりといろいろな機能がある。

下記記事に詳しい使い方が書いてある。

モバイルアプリ開発者のための mitmproxy 入門 - Qiita