Смотрим траффик на Android
android sniffer capture
TL;DR:
-
Установить Packet Capture.
-
При запуске согласиться на установку сертификата SSL, если нужно смотреть HTTPS.
Муки поиска под катом.
Предыстория
На одном из проектов понадобилось посмотреть, какие запросы летают между сервером и мобильным приложением. Как всегда, нужно было быстро и без головной боли. В интернете предлагают несколько вариантов:
-
Установить adb, потом tcpdump, потом настроить точку доступа на компьютере, потом перенаправить туда траффик с устройства, наконец поймать его в Wireshark и смотреть, смотреть, смотреть! Meh, я поплыл уже на втором пункте, так полжизни пройдёт, пока наконец посмотришь, как твой API (не) работает. Потрачено.
-
Установить Network Utilites или другой сниффер - и вуаля, смотрим траффик. Вот только рут нужен для этого. А планшет у меня без рута, разумеется, и возиться в этих дебрях нет никакого желания.
Попроще нельзя?
Без рута и прямиком с устройства
Вот так мне нужно! К счастью, способ есть, называется Packet Capture. Ставим, запускаем.
В комментариях на Google Play жалуются, что аппа, мол, пустые пакеты показывает (хоть и захватывает их) - я поначалу тоже столкнулся с этим и сразу снёс приложение. Но потом осознал, что пытаюсь смотреть в HTTPS, и, следовательно, не зря Packet Capture просил меня SSL сертификат установить. Ok, снова ставим, запускаем.
Вопреки моим ожиданиям, для установки сертификата не понадобилось призывать средневековых демонов и чертить круги на полу, всё прошло практически незаметно (Android лишь попросил установить пароль на устройство, чтобы использовать защищённое хранилище).
Отлично, всё готово. Packet Capture захватывает траффик без рута, используя VPN-соединение, поэтому при старте нужно согласиться на активацию VPN и убедить систему, что доверяешь этому приложению.
Наконец-то! Вот они, мои пакеты с багами! Всем спасибо!