メインコンテンツまでスキップ

Android デバイスとエミュレータ

デスクトップ版 Proxyman で Android デバイスとエミュレータの HTTP/HTTPS 通信をキャプチャします。プロキシ設定、証明書、自動スクリプト、Google Play イメージの手順を説明します。

このガイドでは、Android デバイスまたはエミュレータの通信を、お使いのパソコン上の Proxyman に送信する方法を説明します。プロキシの設定、証明書のインストール、HTTPS 検査のためのアプリの証明書の信頼について解説します。

お使いのデバイスに合ったセットアップを選択してください:

  • Android の実機: 下記の手動セットアップに従ってください。デバイスは、ネットワーク経由で Proxyman を実行しているパソコンに接続できる必要があります。
  • Android エミュレータ: まずは自動セットアップスクリプトをお使いください。
  • Google Play エミュレータイメージ: Google Play と Magisk のガイドに従ってください。標準の自動セットアップでは、すべてのイメージには対応していません。

パソコンを使わずにスマートフォンで直接キャプチャするには、スタンドアロン版の Proxyman Android アプリをご利用ください。

デスクトップでキャプチャする場合は、Proxyman で対応するガイドを開いてください:

  • Certificate Menu → Install Certificate on Android → Physical Devices…
  • Certificate Menu → Install Certificate on Android → Emulators…
備考

Android エミュレータの場合は、Android エミュレータ用の自動スクリプトをご覧ください

動画​

API 36 の Android エミュレータで、ネイティブ Android アプリ(OkHttp)の HTTPS 通信をキャプチャ
Proxyman for Android アプリで、Android の HTTP/HTTPS 通信をキャプチャ · proxyman.com で視聴

1. Android セットアップガイド​

手動でセットアップする場合は、まずデバイスのプロキシを設定し、次に証明書をインストールして、開発中のアプリで証明書の信頼を設定してください。証明書をインストールしただけでは、すべての Android アプリがその証明書を信頼するわけではありません。以下の手順をすべて実行してください:

Wi-Fi プロキシサーバーとポート、proxy.man/ssl のリンク、ネットワークセキュリティ構成 XML を示す Proxyman の Android セットアップガイド

Android デバイスのセットアップガイド

Certificate メニュー → Install Certificate on Android → Physical Devices… の順にガイドを開き、次の手順に従ってください:

  1. Mac に Root Proxyman Certificate をインストールします。macOS ガイドに従ってください。
  2. Android デバイスまたはエミュレータを用意し、Settings アプリを開いて Wi-Fi を選択し、接続中の Wi-Fi を選択します。下の表の値で HTTP プロキシを設定します。
項目値
サーバー IPMac の現在の IP アドレス
ポートProxyman の現在のポート。デフォルトは 9090 です
認証なし
備考

一部の Samsung 製デバイスでは、HTTP プロキシを設定すると、インターネットに接続できなくなることがあります。その場合は、現在のネットワークを削除してから、再度接続してください。

VPN アプリを使用している場合は、必ず終了してください。一部の VPN アプリは HTTP/HTTPS プロキシの設定と競合するためです。

3. Android デバイスの Web ブラウザで http://proxy.man/ssl または http://cert.proxyman.io を開き、Proxyman 証明書をインストールします。

Android 11、Android 12 以降:​

  • Google Chrome アプリで http://proxy.man/ssl にアクセスし、証明書をダウンロードします。
  • Android 11 以降では、Settings アプリで証明書を手動でインストールする必要があります。
  • Settings アプリ → Security → Encryption & Credentials → Install a Certificate → "CA Certificate" を選択 → ストレージ内の Proxyman CA 証明書を選択

Android 10 以前:​

  • http://proxy.man/ssl にアクセスすると、Android デバイスが証明書を自動的にダウンロードしてインストールします。VPN and App Section を選択してください。
備考

Android 12 以降で「Can't install the Certificate: This file can't be used as a VPN & app user certificate」という警告が表示された場合は、代わりに "CA Certificate" を選択してください。

参考:https://stackoverflow.com/a/70261393/3127477

備考

http://proxy.man/ssl は、Proxyman 内蔵の HTTP サーバーが配信するローカルの Web サイトです。開けない場合は、Wi-Fi ネットワークを削除して再接続し、Proxyman アプリが開いていることを確認してください。

4. Android 11 以降では、証明書を確認します。Settings → Security → Encryption & Credentials → Trusted Credentials を開き、User タブを表示してください。

下のスクリーンショットのように、Proxyman CA 証明書が表示されていることを確認してください。

User タブに Proxyman CA 証明書が表示されている Android の Trusted credentials 画面

5. アプリのソースコードを開き、次の 2 つの xml ファイルを追加します。

  • res/xml/network_security_config.xml を追加します
network_security_config.xml
<network-security-config>
<debug-overrides>
<trust-anchors>
<!-- Trust user added CAs while debuggable only -->
<certificates src="user" />
<certificates src="system" />
</trust-anchors>
</debug-overrides>

<base-config cleartextTrafficPermitted="true">
<trust-anchors>
<certificates src="system" />
<certificates src="user" />
</trust-anchors>
</base-config>
</network-security-config>
  • AndroidManifest.xml に追加します
manifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest ... >
<application android:networkSecurityConfig="@xml/network_security_config" ... >
...
</application>
</manifest>
備考

詳しくは Network Security Configuration を参照してください

備考

これらの設定は、必ず Release ビルドから削除してください。削除しないと、Production ビルドで HTTP/HTTPS リクエストが傍受され、機密データが漏えいするおそれがあります。

6. Android エミュレータを使用している場合は、エミュレータを再起動してください

7. 完了 ✅

2. トラブルシューティング​

デバイス接続のトラブルシューティングガイドの Android の項目をご覧ください。

3. Android サンプルプロジェクト​

XML の設定でお困りの場合は、設定済みのシンプルなプロジェクトをご覧ください:

GitHub のリンク:https://github.com/ProxymanApp/OKHTTP-Android-Sample

4. React Native の Android アプリ​

Android アプリで React Native を使用している場合は、React Native のページをご覧ください。

5. 埋め込み WebView の通信をインターセプト​

アプリによっては、HTTPS 通信をインターセプトするために追加の手順が必要な、埋め込みの WebView があります。

  1. Android アプリで他の HTTPS 通信が表示されていることを確認してください。表示されていれば、証明書が正しく設定されていることを意味します。
  2. 次のコードを WebView に挿入します
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
WebView.setWebContentsDebuggingEnabled(true);
}

// The following two lines help with disabling asset caching
webView.getSettings().setAppCacheEnabled(false);
webView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);

3. パソコンで新しい Chrome タブを開き、chrome://inspect にアクセスします

4. WebView を開くと、その WebView が Chrome タブに表示されます。inspect をクリックすると、リモートデバッガを使用できます。

6. ルート化したデバイスで SSL Proxying を使用​

クレジット:Shirshak

Android 7 より前のバージョンでは、この手順は不要です。Android 7 以降では、Google が追加のセキュリティ機能を導入し、既定では中間者攻撃(MITM)ツールがアプリの通信を読み取れないようになっています。

端末のルート化によって生じた問題について、当社は一切の責任を負いません。このガイドは自己責任でご利用ください。

備考

新しいバージョンの Proxyman では、証明書は ~/Library/Application Support/com.proxyman.NSProxy/app-data/proxyman-ca.pem に保存されます。Mac に ~/.proxyman フォルダが存在しない場合は、代わりにそのフォルダを使うか、Certificate メニュー → Export → Root Certificate as PEM から証明書をエクスポートしてください。

  1. magisk フレームワークを使って端末をルート化します。

  2. 制限されたシステムフォルダ内のファイルをコピー&ペーストできるよう、ルート対応のファイルブラウザをインストールします。

  3. コマンドラインで次のスクリプトを入力します

    $ cd ~/.proxyman
    // We copy certificate to another file name just so we may need it later
    $ cp proxyman-ca.pem temp.pem
    $ hash=$(openssl x509 -inform PEM -subject_hash_old -in temp.pem | head -1)
    $ mv temp.pem "$hash.0"
  4. ~/.proxyman フォルダに、名前が数字で始まり .0 で終わるファイルが表示されます。

  5. そのファイルを Android デバイスにコピーします。

  6. ルート対応のファイルブラウザを使って、そのファイルを /system/etc/security/cacerts/ に移動します。

  7. これで、プロキシ経由の通信を確認できます。

備考
  1. Android スマートフォンでは、ゲートウェイに誤った IP アドレスを設定してください。こうすると、すべての通信が必ず Proxyman のプロキシを経由します。
  2. macOS のインターネット共有機能を使うと、モバイルホットスポットを作成できます。そうすると、Android スマートフォンから Proxyman のプロキシを簡単に使用できます。ルーターがスマートフォンと Mac の間のリクエストを遮断することがあるため、この方法の方が確実です。

追加のリソース​

さらに詳しく​