Як слідкувати за мережевими дзвінками, здійсненими з iOS Simulator


113

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

Чи є спосіб це зробити, не обнюхуючи весь трафік? Якщо ні, то який інструмент ви б запропонували?

Відповіді:


84

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

Ви також можете налаштувати його, щоб нюхати лише запити на конкретні сервери, а не весь трафік.

Це комерційне програмне забезпечення, але є пробна версія, і IMHO, безумовно, чудовий інструмент.


1
Дійсно простий у використанні та налаштуваннях і робить саме те, що я хотів, дякую!
Mad Echet

3
Не легко працювати, коли ваш сервер захищений TLS, яким він повинен бути.
карбокація

Я спробував Чарльза, але мені не вдалося дуже добре контролювати вихідний трафік. Наприклад, я не міг змінити форматування мого 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.

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

ОНОВЛЕННЯ: Я щойно помітив на веб-сайті, що mitmproxy доступний як домашня установка. Не може бути простіше.


Чи пощастило вам використовувати mitm для iOS-симулятора? У мене це налаштування, але трафік з мого комп’ютера поза тренажером також спійманий, що не найкраще. Використання його на фактичному пристрої дивовижне. Робили це роками.
atreat

mitmweb - це веб-інтерфейс користувача mitmproxy, який дозволяє інтерактивне обстеження та модифікацію трафіку HTTP. Як і mitmproxy, він відрізняється від mitmdump тим, що всі потоки зберігаються в пам’яті, а це означає, що він призначений для взяття та маніпулювання зразків невеликих результатів mitmproxy.readthedocs.io/en/v2.0.2/mitmweb.html
Raunak

15

Нещодавно я знайшов git repo, що робить це легко.

Можна спробувати.

Це скріншот програми: введіть тут опис зображення

З найкращими побажаннями.


Хоча Bagel чудовий і простий, я нещодавно помітив, що він також відображатиме кешовані запити. Отже, якщо ви хочете дізнатися фактично передані байти, наприклад, це не корисно.
BlackWolf

10

Xcode забезпечує діагностичний журнал CFNetwork. Apple док

Щоб увімкнути це, додайте CFNETWORK_DIAGNOSTICS=3в розділ Змінна середовища:

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

Це покаже запити програми з його заголовками та тілом. Зверніть увагу, що OS_ACTIVITY_MODEпотрібно встановити, enableяк показано. Інакше на консолі не відображатиметься жоден вихід.


4

Wireshark це

Виберіть свій інтерфейс

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

Додати filterпочатокcapture

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


Тестування

Клацніть будь-яку дію або кнопку, яка викликала б GET / POST / PUT / DELETE запит

Ви побачите це, перелічене в розділі проводів

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

Якщо ви хочете дізнатися більше деталей про один конкретний пакет, просто виберіть його та слідуйте> HTTP Stream .

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

сподіваюся, що це допоможе іншим !!


3

Якщо у вас є кабельне підключення та Mac, то існує простий і потужний метод:

  1. встановіть безкоштовний Wireshark, переконайтеся, що він може захоплювати пристрої за допомогою (і це потрібно робити після кожного перезавантаження комп'ютера !):

    sudo chmod 644 / dev / bpf *

  2. Тепер діліться своєю мережею з wifi. Налаштування системи> Обмін> Інтернет-обмін. Переконайтеся, що у вас є "Поділитися своїми з'єднаннями з: Ethernet" та використовуючи: Wi-Fi. Ви також можете налаштувати деяку безпеку Wi-Fi, це не порушує моніторинг даних.

  3. Підключіть телефон до новоствореної мережі. Тут мені досить часто потрібно кілька спроб. Якщо телефон не хоче підключатися, поверніть wifi Mac, повторіть крок 2 вище і будьте терплячі.

  4. Почніть Wireshark захоплювати ваш бездротовий інтерфейс з Wireshark, це, мабуть, "en1". Фільтруйте потрібні IP-адреси та / або порти. Коли ви знайдете цікавий пакет, виберіть його, клацніть правою кнопкою миші (контекстне меню)> Слідуйте за потоком TCP, і ви побачите гарне представлення тексту запитів та відповідей.

І що найкраще: точно такий же трюк працює і для Android!


Чи можете ви використовувати це зі своїм тренажером? У мене ще немає додатка на телефоні.
Танець Джошуа

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

1

Телерік Фіддлер - хороший вибір

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


Як це буде працювати на OSX-машині? Зважаючи на два теги, це xcode та ios-симулятор.
Кевін Р

@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 and here telerik.com/download/fiddler/fiddler-osx-beta
Девід Норенья

1
  1. Встановіть WireShark
  2. отримати ip адресу від монітора мереж xcode
  3. слухати інтерфейс wifi
  4. встановити фільтр ip.addr == 192.168.1.122 в WireShark

0

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

Налаштування трохи не болить, але як тільки ви це зробите, ви працюєте добре. Не забудьте використовувати Safari замість Chrome, щоб використовувати його.


0

Я використовую netfox. Це дуже просто у використанні та інтеграції. Ви можете використовувати його на тренажері та пристрої. Тут відображаються всі запити та відповіді. Він підтримує JSON, XML, HTML, зображення та інші типи відповідей. Ви можете обмінюватися запитами, відповідями та повним журналом за форматами обміну за замовчуванням IOS (Gmail, WhatsApp, електронна пошта, слабкий доступ, SMS тощо).

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

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.