WebSurfer's Home

トップ > Blog 1   |   ログイン
APMLフィルター

Android の HTTP 通信を Fiddler でキャプチャ

by WebSurfer 2022年7月1日 12:56

Wi-Fi でネットワークに接続した Android スマホの HTTP 通信を、同じ LAN 内の PC にインストールした Fiddler Classic (Windows 専用の無償版) でキャプチャする方法を備忘録として書いておきます。

注: HTTP のみです。HTTPS は証明書の問題で警告が出ます。詳細は後述します。

Fiddler でキャプチャ

上の画像がその結果で、自分の Android スマホの Chrome で自分の HP に接続し、要求・応答をキャプチャした結果を表示したものです。

Fiddler はプロキシとして HTTP 通信をキャプチャするという仕組みになっています。なので、Android スマホの HTTP 通信がプロキシ (Fiddler) を通るように設定すれば、上の画像のように要求・応答が表示されるはずです。

その設定方法を以下に書きます。この記事を書いた時点での Windows OS, Fiddler, スマートフォンのバージョン等は以下の通りです。

  • Windows 10 Pro 64-bit 21H2
  • Fiddler Classic v5.0.20211.51073
  • スマートフォン Sony SO-04H, Android 8.0.0
  • Chrome 103.0.5060.70

最初に書きましたが、Android は Wi-Fi で LAN に接続、Fiddler は同じ LAN 内の PC にインストールしたものを使うということと、HTTP のみで HTTPS はダメという制約がありますので注意してください。

(1) Fiddler の設定

Windows PC の Fiddler に Android スマートフォンが接続できるように設定します。

Fiddler を立ち上げてメニューバーの[Tools]⇒[Options...]をクリックし下の Options ダイアログを表示します。

Fiddler のオプション設定

Options ダイアログの[Connections]タブを開いて[Allow remote computers to connect]にチェックを入れます。

(2) Android スマートフォンの設定

注: この記事で使ったスマートフォンは 2016 年のもので、今の機種では設定方法は変わっているかもしれません。プロキシの設定はどの機種でもできるはずなので、検索などで調べれば機種固有の設定方法は分かると思います

まず[アプリ]⇒[設定]⇒[ネットワークとインターネット]⇒[Wi-Fi]とクリックしていって Wi-Fi 設定画面を表示し、接続に使っている項目 (この記事の例では Buffalo-G-E90) を長押しすると下の画像のメニューが現れるので[ネットワークを変更]をクリックします。

ネットワークを変更

デフォルトでは[詳細オプション]のプロキシが[設定しない]になっているはずですが、これを[手動]にすると、下の画像のように利用するプロキシを設定できるようになります。

プロキシ設定

上の画像の[プロキシのホスト名]に Fiddler をインストールしてある PC の IP アドレスを、[プロキシポート]に 8888 を入力し、[保存」をクリックすれば Android 側の設定は完了です。

以上で HTTP 通信であればこの記事の一番上の画像のように Android のブラウザで任意のサイトにアクセスして要求・応答をキャプチャできます。

HTTPS 通信はサーバー証明書問題で警告が出ます。これは Fiddler の証明書 DO_NOT_TRUST_FiddlerRoot が Android にはインストールされてないからだと思われます。

先の記事「Firefox で Fiddler を使う方法」で書きましたが、Fiddler をインストールした PC には OS の「信頼されたルート証明機関」の中に Fiddler の証明書が含まれるようになります。

Fiddler の証明書 DO_NOT_TRUST_FiddlerRoot

なので、Fiddler をインストールした PC では HTTPS 通信で証明書の問題は出ません。Fiddler の証明書が無い Android ではそうはいかないということのようです。

Android に Fiddler の証明書 DO_NOT_TRUST_FiddlerRoot がインストールできるのか、できたとして証明書の問題が解決され Fiddler でキャプチャできるようになるのかは調べてないので分かりません。今後の検討課題ということで・・・


【2022/7/4 追記】

上に書いた HTTPS 通信でサーバー証明書の問題で警告が出る件ですが、Telerik のサイトの記事 Configure Fiddler Classic for Android Devices に対応方法の説明がありました。

それによると "Ensure that you have installed and using BouncyCastle as a certificate generator" ということで、証明書は Bouncy Castle を使って生成したものを使わないとダメらしいです。

上のページからリンクが張ってある Understanding Fiddler Certificate Generators によると "On Windows, Fiddler includes the MakeCert and CertEnroll certificate generators by default" とのことで、Bouncy Castle を使うには別途ダウンロードしてインストールする必要があるそうです。(自分の Fiddler を調べてみたら CertEnroll となってました)

ダウンロードしてみようとそのページの Bouncy Castle Certificate Generator のリンク (http://www.fiddler2.com/r/?fiddlercertMaker) をクリックしたら「fiddlercertmaker.exe を安全にダウンロードすることはできません」と出て失敗します。

そのリンクの応答は 301 Moved Permanently となっています。応答ヘッダに指定されている Location の http://telerik-fiddler.s3.amazonaws.com/fiddler/addons/fiddlercertmaker.exe を直接ブラウザのアドレスバーに設定して要求をかけると fiddlercertmaker.exe というファイルがダウンロードできます。

fiddlercertmaker.exe が Fiddler を Update して Bouncy Castle 証明書を発行できるようにするインストーラーらしいです。

fiddlercertmaker.exe をインストールし、Fiddler Echo Service にアクセスし (Fiddler を起動してからブラウザのアドレスバーに http://<IP アドレス>:8888/ と入力して要求をかけると表示されます)、証明書をダウンロードして、Android にインストールすれば HTTPS 通信もキャプチャできるようになる・・・

・・・はずですが、まだ未検証です。今のところ Android + Fiddler で HTTPS 通信をキャプチャする必要がないので、余計なことをしてトラブるのもアレですので。(笑)

どうしても HTTPS 通信をキャプチャする必要が出てきたらやってみてその結果を追記します。

Tags: ,

DevelopmentTools

About this blog

2010年5月にこのブログを立ち上げました。主に ASP.NET Web アプリ関係の記事です。

Calendar

<<  2024年4月  >>
31123456
78910111213
14151617181920
21222324252627
2829301234
567891011

View posts in large calendar