Charles のインストールと使用についてはここでは繰り返しません。Charlesツールは以前に紹介されています。
この記事では、Android スマートフォンでパケット キャプチャ環境を構成する方法に焦点を当てます。
1. Charles 構成を取得する
[ヘルプ] -> [SSL プロキシ] -> [モバイル デバイスまたはリモート ブラウザにチャールズ ルート証明書をインストール] に移動して、構成を表示します。
2. 携帯電話とコンピュータを同じ LAN に接続します
3. モバイルネットワーク用の手動プロキシを設定する
ip パラメータと port パラメータは最初のステップで取得されています
4. モバイルブラウザを使用して証明書をダウンロードしてインストールします。
ブラウザで chls.pro/ssl に移動して証明書をダウンロードし、.pem 形式の証明書をダウンロードします。デバイスが認識できない場合は、サフィックス名を手動で .crt に変更し、ブラウザのダウンロード管理に移動してインストールを選択する必要があります。
インストール後、[設定] -> [セキュリティ] -> [信頼された資格情報] に移動して、新しくインストールされた証明書を確認します。
5. パケットをキャプチャする
Charles で HTTPS を右クリックし、「SSL プロキシを有効にする」を選択してプロキシを開始します。次に、構造をクリアし、キャプチャされたデータを表示するためにインターフェイスを再度要求します。
この時点で、すべての HTTPS をキャプチャできるわけではないことがわかります。Android 7.0 以降、ユーザーがシステムに追加した CA 証明書はデフォルトでは信頼されません。
解決:
- 公式ソリューション: https://developer.android.google.cn/training/articles/security-config.html
- 問題解決に関するブログ投稿: https://blog.csdn.net/mrxiagc/article/details/75329629
- パケットキャプチャソフトウェアの証明書をシステム証明書としてインストールします(ROOTが必要)
逆のことをしたくない場合を除き、ここでは詳細には触れません。
6. 独自のプロジェクト用のパッケージをキャプチャする
私たち自身の Android プロジェクトでは、HTTPS パケットをキャプチャするために、完全なネットワーク構成でそれを設定できます。
res -> xml に移動して、次の構成で network-security-config.xml ファイルを作成します。
<network-security-config>
<base-config cleartextTrafficPermitted="true">
<trust-anchors>
<certificates src="system" />
<certificates src="user" />
</trust-anchors>
</base-config>
</network-security-config>
次に、マニフェスト ファイルに移動して、アプリケーションの networkSecurityConfig を構成します。
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">
<uses-permission android:name="android.permission.INTERNET" />
<application android:networkSecurityConfig="@xml/network_security_config" >
</application>
</manifest>
注: 開発中に、cleartextTrafficPermitted="true" を設定すると、クリア テキスト トラフィックが許可され、パケットのキャプチャが容易になります。ただし、アプリケーションを公開する場合、アプリケーションのセキュリティを向上させるために、通常は平文トラフィックを無効にすることをお勧めします。