2012-06-20 3 views
77

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

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

ответ

64

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

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

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

+1

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

+1

Нелегко работать, когда ваш сервер защищен TLS, каким он должен быть. – carbocation

+0

Я пробовал Чарльза, но я не мог нормально отслеживать исходящий трафик. Например, я не могу изменить форматирование моего запроса POST в JSON –

24

Используйте встроенный network activity monitor instrument.

+3

Спасибо, это звучит здорово, но я не могу найти, где это (извините за то, что он такой новичок, но я получил свой первый Mac два дня назад ...) , –

+11

Спасибо! Я буду играть с этим, но с первого взгляда я не мог найти способ увидеть содержание того, что выходит и возвращается (заголовок запроса + контент и ответ, как в Firebug или эквивалент в Chrome/Safari). Может быть, это где-то, я продолжу копать. –

+0

У вас, ребята, есть совет по КАК делать это с помощью этого инструмента? –

23

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

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

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

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

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

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

+1

+1 для Burp Suite, и никакой боли для его настройки: https: //www.engadget.com/2011/02/21/how-to-inspect-ioss-http-traffic-without-spend-a-dime/Требуется меньше 10 минут – Vladimir

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!

+0

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

+0

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

16

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

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

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

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

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

+0

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

0

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

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

-2

Telerik Скрипач является хорошим выбором

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

+0

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

+0

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

+1

@KonstantinSalavatov, Предметом оригинального сообщения является «Как отслеживать сетевые звонки, сделанные с помощью iOS Simulator». IOS Simulator работает только на OS X, так что да, выбор * * ограничен OS X. – ChillyPenguin

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