遥かへのスピードランナー

シリコンバレーでAndroidアプリの開発してます。コンピュータービジョン・3D・アルゴリズム界隈にもたまに出現します。

HTTPリクエスト・レスポンスをサーバー側で解析する

モバイルサイトを構築する仕事をしていると、携帯端末やキャリアとの通信内容についてよく問題になる。携帯端末から送られてくるHTTPヘッダを解析して、端末の属性情報を取得したり、ダウンロード完了通知が携帯端末から送られてきたり、マイメニューに登録するときにキャリアからコールバックのHTTPリクエストがサーバーに送られてくるetc...

特に携帯端末が毎回固定で送っているHTTPヘッダならば、情報を取得するCGIでも作れば中身は分かるわけだが、ダウンロード完了通知みたいに特定のタイミングでしか送られない、とかキャリアから直接送られるリクエストだとそうはいかない。

こういう場合、リクエストを受けるWEBサーバーがLinuxサーバーならば、tcpdumpコマンドで、リクエストヘッダの中身を参照するとよい。

# tcpdump -i eth2 -X -s 0 port 80 -w hogehoge.txt &

上記は、eth2インターフェースに80番ポートで通信した中身をhogehoge.txtに書き出した例

他にも詳細な条件を指定することが可能で、たとえば書き出し対象のIPアドレスを限定するとかもできる。

詳細は以下を参照。
http://members.jcom.home.ne.jp/j-klein/unix/tcpdump.html