Как отслеживать сетевые вызовы из iOS Simulator


113

Я пытаюсь отслеживать звонки из приложения на мой сервер, как это делает Firebug. Я не мог найти способ увидеть это в iOS Simulator или в xCode.

Есть ли способ сделать это, не перехватывая весь трафик? Если нет, какой инструмент вы бы посоветовали?

Ответы:


85

Лично я использую Чарльза для таких вещей.
Когда он включен, он будет отслеживать каждый сетевой запрос, отображая расширенные детали запроса, включая поддержку SSL и различных форматов запросов / ответов, таких как JSON и т. Д.

Вы также можете настроить его для прослушивания только запросов к определенным серверам, а не всего трафика.

Это коммерческое программное обеспечение, но есть пробная версия, и IMHO, безусловно, отличный инструмент.


1
Действительно проста в использовании и настройке и делает именно то, что я хотел, спасибо!
Mad Echet

4
Непросто работать, когда ваш сервер защищен 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создается виртуальный интерфейс, который просто показывает вам трафик с устройства iOS, которое вы подключили к USB. порт.


1
+1 за Burp Suite, и без труда его настроить: engadget.com/2011/02/21/… Это займет меньше 10 минут
Владимир

20

Бесплатный прокси-инструмент с открытым исходным кодом, который легко запускается на Mac, - mitmproxy .

На веб-сайте есть ссылки на двоичный файл Mac, а также исходный код на Github.

Документы содержат очень полезное введение в загрузку сертификата в ваше тестовое устройство для просмотра трафика HTTPS.

Не такой красивый, как у Charles, но он делает все, что мне нужно, бесплатно и поддерживается. Хороший материал и довольно простой, если вы раньше использовали некоторые инструменты командной строки.

ОБНОВЛЕНИЕ: я только что заметил на веб-сайте, что mitmproxy доступен как домашняя установка. Не может быть проще.


Вам повезло с использованием mitm для симулятора iOS? У меня есть настройки, но трафик с моего компьютера за пределами симулятора также перехватывается, что не самое лучшее. Использовать его на реальном устройстве просто потрясающе. Делал это годами.
atreat

mitmweb - это пользовательский веб-интерфейс mitmproxy, который позволяет интерактивно изучать и изменять HTTP-трафик. Как mitmproxy, она отличается от mitmdump в том , что все потоки хранятся в памяти, что означает , что она предназначена для принятия и обработки небольших иш образцов mitmproxy.readthedocs.io/en/v2.0.2/mitmweb.html
Raunak

15

Недавно я нашел репозиторий git, который упрощает задачу.

Можешь попробовать.

Это скриншот приложения: введите описание изображения здесь

С уважением.


Хотя Bagel отличный и простой, я недавно заметил, что он также показывает кешированные запросы. Так что, например, если вы хотите знать фактические переданные байты, это не поможет.
BlackWolf 05

10

Xcode обеспечивает ведение журнала диагностики CFNetwork. Документ Apple

Чтобы включить его, добавьте CFNETWORK_DIAGNOSTICS=3в раздел Environment Variable:

введите описание изображения здесь

Это покажет запросы от приложения с их заголовками и телом. Обратите внимание, что OS_ACTIVITY_MODEнеобходимо установить, enableкак показано. В противном случае никакие выходные данные не будут отображаться на консоли.


4

Wireshark это

Выберите свой интерфейс

введите описание изображения здесь

Добавить filterначалоcapture

введите описание изображения здесь


Тестирование

Щелкните любое действие или кнопку, которые вызовут запрос GET / POST / PUT / DELETE.

Вы увидите это в списке в wirehark

введите описание изображения здесь

Если вы хотите узнать больше об одном конкретном пакете, просто выберите его и нажмите Follow> HTTP Stream .

введите описание изображения здесь

надеюсь, что это поможет другим !!


3

Если у вас есть кабельное соединение и Mac, то есть простой и мощный метод:

  1. установите бесплатный Wireshark, убедитесь, что он может захватывать устройства (и это нужно делать после каждой перезагрузки компьютера !):

    Судо chmod 644 / dev / bpf *

  2. Теперь поделитесь своей сетью с Wi-Fi. Системные настройки> Общий доступ> Общий Интернет. Убедитесь, что у вас есть «Поделиться своими подключениями из: Ethernet» и что вы используете: Wi-Fi. Вы также можете настроить безопасность Wi-Fi, это не мешает мониторингу данных.

  3. Подключите телефон к вновь созданной сети. Мне здесь часто нужно несколько попыток. Если телефон не хочет подключаться, выключите Wi-Fi на Mac, затем повторите шаг 2 выше и проявите терпение.

  4. Запустите Wireshark для захвата беспроводного интерфейса с помощью Wireshark, вероятно, это "en1". Отфильтруйте необходимые IP-адреса и / или порты. Когда вы найдете интересный пакет, выберите его, щелкните правой кнопкой мыши (контекстное меню)> Follow TCP Stream, и вы увидите красивое текстовое представление запросов и ответов.

И что самое лучшее: точно такой же трюк работает и на Android!


Можете ли вы использовать это на своем симуляторе? У меня еще нет приложения на телефоне.
Джошуа Дэнс

@Joshua Dance, вы можете использовать его с эмулятором, если он выполняет внешний сетевой запрос. Подключения к localhost невозможно отследить с помощью wirehark, так как они не проходят через «провод» (сетевую карту)
JaakL 02

1

Telerik Fiddler - хороший выбор

http://www.telerik.com/blogs/using-fiddler-with-apple-ios-devices


Как это будет работать на OSX-машине? Учитывая, что два тега - это xcode и ios-simulator.
Kevin R

@KevinR, 1. У Telerik действительно есть бета-версия Fiddler для OS X 2. Нигде в вопросе не говорится, что выбор ограничен OS X telerik.com/blogs/using-fiddler-with-apple-ios-devices
Константин Салаватов

2
@KonstantinSalavatov, Тема оригинального поста - "Как отслеживать сетевые звонки из iOS Simulator". IOS Simulator работает только на OS X, так что да, выбор будет ограничен в OS X.
ChillyPenguin

1
+1 Я думаю, вам стоит проголосовать за это сейчас, потому что теперь есть поддержка Mac OS X! : D telerik.com/fiddler#SupportedTechnologies и здесь telerik.com/download/fiddler/fiddler-osx-beta
David Noreña

1
  1. Установить WireShark
  2. получить IP-адрес от сетевого монитора xcode
  3. слушать интерфейс Wi-Fi
  4. установить фильтр ip.addr == 192.168.1.122 в WireShark

0

Хорошим решением, если вы привыкли к инструментам инспектора Chrome, является отладчик Pony: https://github.com/square/PonyDebugger

Настроить это немного сложно, но как только вы это сделаете, все будет хорошо. Обязательно используйте Safari вместо Chrome, чтобы использовать его.


0

Пользуюсь netfox. Его очень легко использовать и интегрировать. Вы можете использовать его на симуляторе и устройстве. Он показывает все запросы и ответы. Он поддерживает JSON, XML, HTML, изображения и другие типы ответов. Вы можете обмениваться запросами, ответами и полным журналом с помощью форматов обмена по умолчанию IOS (Gmail, WhatsApp, электронная почта, Slack, смс и т. Д.)

Вы можете проверить на GitHub: https://github.com/kasketis/netfox

Netfox обеспечивает быстрый просмотр всех выполненных сетевых запросов, выполняемых вашим приложением iOS или OSX. Он захватывает все запросы - конечно, ваши, запросы от сторонних библиотек (таких как AFNetworking, Alamofire или другие), UIWebViews и т. Д.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.