web-dev-qa-db-ja.com

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

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

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

98
Mad Echet

個人的には、Charlesを使用します。
有効にすると、すべてのネットワーク要求を監視し、SSLやJSONなどのさまざまな要求/応答形式のサポートを含む拡張要求の詳細を表示します...

また、トラフィック全体ではなく、特定のサーバーへの要求のみをスニッフィングするように構成することもできます。

それは商用ソフトウェアですが、試用版があり、私見は間違いなく素晴らしいツールです。

78
Macmade

組み込みの ネットワークアクティビティモニター機器 を使用します。

28
Andy

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

パケットスニッフィングの最適なソリューション(シミュレータではなくactualiOSデバイスでのみ動作しますが)私が見つけたのは、rvictlを使用することです。 このブログ投稿 には素晴らしい記事があります。基本的にあなたがすること:

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

次に、Wireshark(またはお気に入りのツール)で作成したインターフェイスをスニッフィングし、完了したらインターフェイスをシャットダウンします:

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

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

24
mpontillo

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

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

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

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

更新:私はmitmproxyがhomebrewインストールとして利用可能であることにウェブサイトでちょうど気づきました。簡単にできませんでした。

18
giff

最近、簡単にできる git repo を見つけました。

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

これはアプリのスクリーンショットです: enter image description here

宜しくお願いします。

5

XcodeはCFNetwork診断ログを提供します。 Apple doc

有効にするには、環境変数にCFNETWORK_DIAGNOSTICS = 3を追加します

これにより、アプリからのリクエストがヘッダーと本文とともに表示されます。

4
Evan

ケーブル接続とMacがある場合、簡単で強力な方法があります。

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

    Sudo chmod 644/dev/bpf *

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

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

  4. Wiresharkを起動して、Wiresharkでワイヤレスインターフェイスをキャプチャします。おそらく「en1」です。必要なIPアドレスやポートをフィルタリングします。おもしろいパッケージを見つけたら、それを選択し、右クリック(コンテキストメニュー)> TCP St​​reamをフォローすると、リクエストと回答の素敵なテキスト表現が表示されます。

そして、何が最高なのか:Androidでもまったく同じトリックが機能します!

3
JaakL
  1. WireSharkをインストールする
  2. xcodeネットワークモニターからIPアドレスを取得
  3. wi-Fiインターフェイスを聞く
  4. wireSharkでフィルターip.addr == 192.168.1.122を設定
1
August Lin

Wireshark it

インターフェースを選択してください

enter image description here

filterを追加して、captureを開始します

enter image description here


テスト中

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

Wiresharkのリストに表示されます

enter image description here

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

enter image description here

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

1
kyo

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

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

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

0

chromeインスペクターツールに慣れている場合の適切なソリューションは、Ponyデバッガーです。 https://github.com/square/PonyDebugger

セットアップには少し苦労しますが、一度実行するとうまく機能します。ただし、Chromeの代わりにSafariを使用してください。

0
Simon Epskamp