Как отслеживать сетевые вызовы из 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.