Как отслеживать сетевые вызовы, сделанные с помощью iOS Simulator

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

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

Ответ 1

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

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

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

Ответ 3

Прокси-сервер "человек в середине", как и другие ответы, является хорошим решением, если вы хотите видеть только HTTP/HTTPS-трафик. Burp Suite довольно хорош. Однако может быть больно настроить. Я не знаю, как вы могли бы убедить симулятора поговорить с ним. Возможно, вам придется установить прокси-сервер на своем локальном Mac в ваш экземпляр прокси-сервера, чтобы он мог перехватить, так как симулятор будет использовать локальную среду Mac.

Лучшее решение для пакетного обнюхивания (хотя оно работает только для реальных устройств iOS, а не для имитатора), я нашел использование rvictl. В этом сообщении в блоге есть хорошая запись. В основном вы:

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

Затем вы нюхаете интерфейс, который он создает, с помощью Wireshark (или вашего любимого инструмента), и когда вы закончите работу с интерфейсом:

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

Это хорошо, потому что, если вы хотите упаковать sniff на симулятор, вам придется пробираться через трафик и на свой локальный Mac, но rvictl создает виртуальный интерфейс, который показывает вам трафик с устройства iOS. 'подключен к вашему USB-порту.

Ответ 4

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

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

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

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

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

Ответ 5

Недавно я нашел git repo, который облегчает его.

Вы можете попробовать это.

Это скриншот приложения: enter image description here

С уважением.

Ответ 6

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

Чтобы включить его, добавьте CFNETWORK_DIAGNOSTICS=3 в разделе Переменная среды:

enter image description here

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

Ответ 7

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

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

    sudo chmod 644/dev/bpf *

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

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

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

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

Ответ 8

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

Ответ 9

Wireshark это

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

enter image description here

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

enter image description here


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

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

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

enter image description here

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

enter image description here

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

Ответ 10

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

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

Ответ 12

Я использую Netfox. Это очень легко использовать и интегрировать. Вы можете использовать его на симуляторе и устройстве. Он показывает все запросы и ответы. Он поддерживает JSON, XML, HTML, изображения и другие типы ответов. Вы можете обмениваться запросами, ответами и полным журналом с помощью стандартных форматов обмена IOS (Gmail, WhatsApp, электронная почта, slack, sms и т.д.).

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

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