iOSシミュレータから行われたネットワーク呼び出しを監視する方法


113

Firebugと同じように、アプリからサーバーへの呼び出しを監視しようとしています。iOSシミュレータまたはxCodeでそれを確認する方法が見つかりませんでした。

すべてのトラフィックを盗聴せずにそれを行う方法はありますか?いいえの場合、どのツールを提案しますか?

回答:


84

個人的には、チャールズをそのようなものに使用しています。
有効にすると、すべてのネットワークリクエストが監視され、SSLやJSONなどのさまざまなリクエスト/レスポンス形式のサポートなど、拡張リクエストの詳細が表示されます。

また、トラフィック全体ではなく、特定のサーバーへのリクエストのみを傍受するように設定することもできます。

商用ソフトウェアですが、試用版があり、IMHOは間違いなく優れたツールです。


1
本当に使いやすく設定も簡単で、私が望んでいたことを正確に実行してくれます。
Mad Echet

3
サーバーがTLSで保護されている場合、簡単に機能しません。
カルボカチオン

Charlesを試してみましたが、発信トラフィックを十分に監視できませんでした。たとえば、POSTリクエストのフォーマットをJSONに変更することはできませんでした
イエスロドリゲス

24

他の回答で提案されているような中間者プロキシは、HTTP / HTTPSトラフィックのみを表示したい場合に適したソリューションです。 Burp Suiteはかなり良いです。ただし、設定が面倒な場合があります。どうやってシミュレーターに説得して説得するのかわかりません。シミュレータがローカルMacの環境を利用するため、ローカルMacのプロキシをインターセプトするためにプロキシサーバーのインスタンスに設定する必要がある場合があります。

パケットスニッフィングの最良の解決策(シミュレータではなく実際の iOSデバイスでのみ機能します)は、を使用することrvictlです。このブログ投稿にはすばらしい記事があります。基本的にあなたはします:

rvictl -s <iphone-uid-from-xcode-organizer>

次に、Wireshark(またはお気に入りのツール)で作成したインターフェースを嗅ぎ、完了したら、次のコマンドでインターフェースをシャットダウンします。

rvictl -x <iphone-uid-from-xcode-organizer>

シミュレーターをパケットスニッフィングしたい場合は、ローカルMacへのトラフィックも通過rvictlする必要がありますが、USBに接続したiOSデバイスからのトラフィックを表示するだけの仮想インターフェイスを作成するので、これは素晴らしいです。港。


1
Burp Suiteの+1と設定は簡単engadget.com/2011/02/21/…所要時間は10分未満
Vladimir

20

Macで簡単に実行できる無料のオープンソースプロキシツールはmitmproxyです。

このWebサイトには、Macバイナリへのリンクと、Githubのソースコードが含まれています。

ドキュメントには、HTTPSトラフィックを表示するために証明書をテストデバイスにロードするための非常に役立つ紹介が含まれています。

CharlesほどGUIに優れているわけではありませんが、私が必要とするすべてのことを行い、無料で維持されます。良いもので、以前にコマンドラインツールを使用したことがあれば、非常に簡単です。

更新:私はウェブサイトでmitmproxyが自作のインストールとして利用できることに気づきました。簡単にできませんでした。


iOSシミュレーターにmitmを使用して運が良かったですか?私はそれをセットアップしましたが、シミュレーターの外側の私のコンピューターからのトラフィックもキャッチされます。これは最高ではありません。実際のデバイスでの使用は素晴らしいです。何年もやってきた。
atreatを

mitmwebは、HTTPトラフィックのインタラクティブな検査と変更を可能にするmitmproxyのWebベースのユーザーインターフェイスです。mitmproxyと同様に、すべてのフローがメモリに保持されるという点でmitmdumpとは異なります。つまり、小さめのサンプルmitmproxy.readthedocs.io/en/v2.0.2/mitmweb.html
Raunak

15

最近gitリポジトリを見つけました、それを簡単にを。

あなたはそれを試すことができます。

これはアプリのスクリーンショットです。 ここに画像の説明を入力してください

宜しくお願いします。


Bagelは素晴らしくてシンプルですが、最近、キャッシュされたリクエストも表示されることに気付きました。たとえば、実際に転送されたバイト数を知りたい場合、これは役に立ちません。
BlackWolf

10

XcodeはCFNetwork診断ログを提供します。アップルドキュメント

これを有効にするにCFNETWORK_DIAGNOSTICS=3は、環境変数セクションに追加します。

ここに画像の説明を入力してください

これにより、アプリのリクエストがヘッダーと本文とともに表示されます。に示すようにOS_ACTIVITY_MODE設定する必要があることに注意してくださいenable。そうしないと、コンソールに出力が表示されません。


4

Wireshark it

インターフェースを選択

ここに画像の説明を入力してください

追加filter開始capture

ここに画像の説明を入力してください


テスト中

GET / POST / PUT / DELETEリクエストをトリガーするアクションまたはボタンをクリックします

あなたはwiresharkにリストされているそれを見るでしょう

ここに画像の説明を入力してください

特定のパケットの詳細を知りたい場合は、そのパケットを選択して、[ フォロー]> [HTTPストリーム]を選択します。

ここに画像の説明を入力してください

これが他の人を助けることを願っています!!


3

あなたがケーブル接続とMacを持っているなら、シンプルで強力な方法があります:

  1. 無料のWiresharkをインストールし、それがでデバイスをキャプチャできることを確認してください(そして、あなたはコンピュータを再起動するたびにこれを行う必要があります!):

    sudo chmod 644 / dev / bpf *

  2. 次に、ネットワークをwifiで共有します。システム設定>共有>インターネット共有。「接続を共有する:イーサネット」で、Wi-Fiを使用していることを確認します。いくつかのwifiセキュリティを設定することもできます。それはデータの監視を妨げません。

  3. 新しく作成したネットワークに電話を接続します。ここで何度か試してみる必要があります。電話が接続したくない場合は、MacのWi-Fiをオフにしてから、上記の手順2を繰り返して、しばらくお待ちください。

  4. Wiresharkでワイヤレスインターフェースのキャプチャを開始します。これはおそらく「en1」です。必要なIPアドレスやポートをフィルタリングします。興味のあるパッケージを見つけたら、それを選択し、右クリック(コンテキストメニュー)> [TCPストリームに従う]をクリックすると、要求と回答のわかりやすいテキスト表現が表示されます。

そして何がベストか:Androidでもまったく同じトリックが機能します!


これをシミュレータで使用できますか?スマートフォンにはまだアプリがありません。
ジョシュアダンス

@Joshua Danceは、外部ネットワーク要求を行う場合、エミュレータで使用できます。localhostへの接続は、 "wire"(ネットワークカード)を渡していないため、wiresharkで追跡できません
JaakL

1

OSXマシンではどのように機能しますか?2つのタグはxcodeとios-simulatorです。
ケビンR

@ KevinR、1。TelerikにはOS X 2のFiddlerのベータ版があります。質問のどこにも、選択肢がOS Xに限定されているとは言われていません。telerik.com/ blogs / using
Konstantinサラバトフ2017

2
@KonstantinSalavatov、元の投稿の件名は、「iOSシミュレータから行われたネットワーク呼び出しを監視する方法」です。iOSシミュレータはOS X上で動作し、そうそう、選択がされて OS Xに限ら
ChillyPenguin

1
+1 Mac OS Xがサポートされるようになったので、今すぐ賛成するべきだと思います。:D telerik.com/fiddler#SupportedTechnologies and here telerik.com/download/fiddler/fiddler-osx-beta
DavidNoreña18年

1
  1. WireSharkをインストールする
  2. xcodeネットワークモニターからIPアドレスを取得する
  3. wifiインターフェイスを聞く
  4. WireSharkでフィルターip.addr == 192.168.1.122を設定します。


0

私はnetfoxを使用しています。使用と統合は非常に簡単です。シミュレーターやデバイスで使用できます。すべての要求と応答が表示されます。JSON、XML、HTML、画像、その他の種類の応答をサポートしています。IOSのデフォルトの共有形式(Gmail、WhatsApp、Eメール、Slack、SMSなど)で要求、応答、完全なログを共有できます

GitHubで確認できます:https : //github.com/kasketis/netfox

Netfoxは、iOSまたはOSXアプリによって実行されたすべての実行済みネットワークリクエストのクイックルックを提供します。すべてのリクエストを取得します-もちろん、あなたのリクエスト、サードパーティのライブラリ(AFNetworking、Alamofireなど)からのリクエスト、UIWebViewsなど

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.