Firebug と同じように、アプリからサーバーへの呼び出しを監視しようとしています。iOS シミュレーターまたは xCode でそれを確認する方法が見つかりませんでした。
すべてのトラフィックをスニッフィングせずにそれを行う方法はありますか? いいえの場合、どのツールをお勧めしますか?
Firebug と同じように、アプリからサーバーへの呼び出しを監視しようとしています。iOS シミュレーターまたは xCode でそれを確認する方法が見つかりませんでした。
すべてのトラフィックをスニッフィングせずにそれを行う方法はありますか? いいえの場合、どのツールをお勧めしますか?
個人的には、チャールズをそういうものに使っています。
有効にすると、すべてのネットワーク リクエストを監視し、SSL のサポートや JSON などのさまざまなリクエスト/レスポンス フォーマットを含む拡張リクエストの詳細を表示します。
トラフィック全体ではなく、特定のサーバーへのリクエストのみをスニッフィングするように構成することもできます。
これは商用ソフトウェアですが、試用版があり、IMHO は間違いなく優れたツールです。
他の回答で示唆されているように、中間者プロキシは、HTTP/HTTPS トラフィックのみを表示する場合に適したソリューションです。Burp Suiteはかなり良いです。ただし、構成するのは面倒かもしれません。シミュレーターに話しかけるように説得する方法がわかりません。シミュレーターはローカル Mac の環境を利用するため、ローカル Mac のプロキシーをプロキシー・サーバーのインスタンスに設定してインターセプトする必要がある場合があります。
私が見つけたパケット スニッフィングの最善の解決策は (シミュレーターではなく、実際のrvictl
iOS デバイスでのみ機能しますが) を使用することです。このブログ投稿には素晴らしい記事があります。基本的にあなたは:
rvictl -s <iphone-uid-from-xcode-organizer>
次に、Wireshark (またはお気に入りのツール) を使用して作成されたインターフェイスを盗聴し、終了したら次のコマンドでインターフェイスをシャットダウンします。
rvictl -x <iphone-uid-from-xcode-organizer>
シミュレーターをパケット スニッフィングする場合は、ローカル Mac へのトラフィックも通過する必要がありrvictl
ますが、USB に接続した iOS デバイスからのトラフィックのみを表示する仮想インターフェイスを作成するため、これは便利です。ポート。
Mac で簡単に実行できる無料のオープン ソース プロキシ ツールはmitmproxyです。
この Web サイトには、Mac バイナリへのリンクと、Github のソース コードが含まれています。
ドキュメントには、証明書をテスト デバイスにロードして HTTPS トラフィックを表示するための非常に役立つ紹介が含まれています。
Charles ほど GUI には向いていませんが、私が必要とするすべての機能を備えており、無料で保守されています。以前にいくつかのコマンドラインツールを使用したことがある場合は、非常に簡単です。
更新: Web サイトで、mitmproxy が自作インストールとして利用できることに気付きました。これ以上簡単なことはありません。
これは最近追加されたようです。command
シミュレータで+ control
+をクリックするとz
、デバッグ メニューがポップアップ表示されます。そのメニューから、 をクリックしますInspect
。Inspect はタブを表示します。ネットワーク タブをクリックすると、行われているすべてのネットワーク リクエストが表示されます。
ケーブル接続と Mac がある場合は、シンプルで強力な方法があります。
無料の Wireshark をインストールし、デバイスをキャプチャできることを確認します (コンピュータを再起動するたびにこれを行う必要があります!):
sudo chmod 644 /dev/bpf*
ネットワークを Wi-Fi で共有します。システム設定 > 共有 > インターネット共有。「接続を共有する: イーサネット」と使用する: Wi-Fi があることを確認します。Wi-Fi セキュリティを設定することもできますが、データの監視が妨げられることはありません。
電話を新しく作成したネットワークに接続します。ここでは、何度か試行する必要があります。電話が接続したくない場合は、Mac の Wi-Fi をオフにしてから、上記の手順 2 を繰り返して、しばらく待ちます。
Wireshark を開始し、Wireshark でワイヤレス インターフェイスをキャプチャします。おそらく "en1" です。必要な IP アドレスやポートをフィルタリングします。興味のあるパッケージを見つけたら、それを選択し、右クリック (コンテキスト メニュー) > [TCP ストリームに従う] をクリックすると、要求と応答の適切なテキスト表現が表示されます。
そして何が最高なのか: まったく同じトリックが Android でも機能します!
chrome インスペクター ツールに慣れている場合の良い解決策は、Pony デバッガーです: https://github.com/square/PonyDebugger
設定が少し面倒ですが、一度やってみるとうまくいきます。ただし、Chrome ではなく Safari を使用してください。
https://github.com/BugBlock/BugBlock-iOSを使用してみてください。これは私が作成した小さなツールなので、必要なものはすべて次のとおりです。
import BugBlock
それから
var config = BBConfiguration()
config.consoleLoggingEnabled = false
config.serverLoggingEnabled = true
config.crashReportingEnabled = true
BBLog.start(appId: "SDK key", configuration: config)
ネットワークインターセプターのセットアップ
let conf = URLSessionConfiguration.default
BBLog.networkLogging(with: conf)
let session = URLSession(configuration: conf)
次にsession
、リクエストで を使用します。ログをキャッチするのに役立つことを願っています。