web-dev-qa-db-ja.com

アプリがandroidで行っているHTTP要求(get、postなど)を監視する方法

私自身のアプリでは、何らかの形でネットワーク呼び出し(HTTPリクエスト)を行うさまざまなサードパーティSDKを使用しています。このコードを編集せずに、すべてのGETおよびPOSTアプリが作成しているリクエストをインターセプトするために、アプリケーション内でコードを個別に作成できますか?

これらのHTTP呼び出しをアプリに記録したい

Fiddler および Charles proxy tools を使用することは承知していますが、これはアプリの外部ですが、これらのHTTP呼び出しをアプリに記録できないため、これは機能しません。

それを行う方法はありますか?

編集:コードでGoogle Analytics SDKとFacebook SDKを使用しています。これらのSDKがアプリから作成しているすべてのネットワーク呼び出しを監視したい

24
atmaish

ルート化されていない電話では、Android OSプロキシおよびリダイレクトトラフィックを使用できます。ただし、一部のアプリはそれを尊重しません。直接接続を行います。 SandroProxyへのトラフィック。SandroProxyでトラフィックをキャプチャした後のビデオ SandroProxy with Chrome devtools SandroProxyはpcapfilesもキャプチャできます。pcapフローでssl mitmを作成することもできます。サポート

7

Charlesプロキシは良い方法です。

その他には、アプリがシングルトンネットワーククラスを使用している場合(理想的です)、getとpostに1つの関数を作成します。クラスからこれらの関数を呼び出し、log.dを使用してコンソールにデータを出力します。要求の応答または所要時間を追跡できます。

3
blockwala

HTTP呼び出しを記録できるアプリを探している場合。 Android Snooper ライブラリは、あなたが探しているソリューションです。

2
Prateek Jain

Stethoを検討しましたか?

http://facebook.github.io/stetho/

とりわけ、すべての着信および発信要求を監視および変更できます。

2
FrostRocket

https://github.com/jgilfelt/chuck/

ネットワーク要求が行われるたびに通知を送信する新しいアプリが追加され、要求の詳細を確認できます。

https://github.com/facebook/stetho

chrome devツールを使用して、Androidアプリから作成されたリクエストを監視できます。他のクールな機能の中でも)

1

デバイスをルート化するか、デバッグ(adb)で実行する場合、おそらくこれが役立つでしょう: http://code.tutsplus.com/tutorials/analyzing-Android-network-traffic--mobile-1066

そうでなければ、あなたがやりたいことをすることができるとは思いません。ただし、次のような一般的なネットワークを監視できます。

すべてのトラフィック統計については、以下を参照してください。
https://developer.Android.com/reference/Android/net/TrafficStats.html (アプリのユーザーIDを渡すだけです)

ネットワークステータスを監視する場合:
https://developer.Android.com/reference/Android/net/ConnectivityManager.html

0