Как отслеживать сетевой трафик, отправляемый и получаемый от моего эмулятора Android?
127
Есть два способа захвата сетевого трафика непосредственно из эмулятора Android:
Скопируйте и запустите ARM-совместимый двоичный файл tcpdump на эмуляторе, возможно, записав вывод на SD-карту (например tcpdump -s0 -w /sdcard/emulator.cap
).
Запустите, emulator -tcpdump emulator.cap -avd my_avd
чтобы записать весь трафик эмулятора в локальный файл на вашем ПК
В обоих случаях вы можете проанализировать файл pcap с помощью tcpdump или Wireshark как обычно.
The -tcpdump flag is not supported in QEMU2 yet and will be ignored.
предупреждение, добавьте - движок классический для вашей команды , как это:emulator -tcpdump emulator.cap -avd my_avd -engine classic
. Это приведет к принудительному использованию устаревшего движка эмулятора, но он должен работать, пока проблема не будет устранена.avd
находится?Также можно использовать http-прокси для отслеживания http-запросов от эмулятора. Вы можете передать
-http-proxy
флаг при запуске нового эмулятора, чтобы установить прокси (пример burp ) для мониторинга трафика Android. Пример использования./emulator -http-proxy localhost:8080 -avd android2.2
. Обратите внимание, что в моем примере я использую Burp, и он прослушивает порт 8080. Более подробную информацию можно найти здесь .источник
Для OS X вы можете использовать Charles , это просто и удобно.
Для получения дополнительной информации, пожалуйста, ознакомьтесь с публикацией в блоге Android Emulator и Charles Proxy .
источник
Charles
раньше. Но, насколько я понимаю, он специфичен для HTTP. Но вопрос ОП - нет.Текущая версия Android Studio неверно применила этот
-tcpdump
аргумент. Мне все еще удалось захватить дамп, передав соответствующий параметр в qemu следующим образом:источник
Да, wirehark будет работать.
Я не думаю, что есть простой способ отфильтровать только трафик эмулятора, поскольку он исходит с того же IP-адреса src.
Возможно, лучшим способом было бы создать очень простую среду VMware и запускать только там эмулятор, по крайней мере, так не было бы слишком большого фонового трафика.
источник
Вы можете использовать Fiddler для отслеживания http-трафика:
http://aurir.wordpress.com/2010/03/22/tutorial-getting-android-emulator-working-with-fiddler-http-proxy-tool/
Вы также можете использовать Fiddler2 здесь .
источник
10.0.2.2
IP-адресом хост-машины в эмуляторах Android, не нужно выяснять, что это такое.Теперь можно использовать Wireshark напрямую для захвата трафика эмулятора Android. Есть плагин extcap под названием androiddump, который делает это возможным. У вас должен быть
tcpdump
исполняемый файл в образе системы, работающий на эмуляторе (он есть в большинстве последних образов, протестирован с образами API 24 и API 27) иadbd
работающий от имени пользователя root на хосте (просто запуститеadb root
). В списке доступных интерфейсов в Wireshark (только версия Qt, устаревший GTK + его нет) или в списке, показанном с помощью,tshark -D
должно быть несколько интерфейсов Android, позволяющих прослушивать трафик Bluetooth, Logcat или Wifi, например:android-wifi-tcpdump-emulator-5554 (Android WiFi Android_SDK_built_for_x86 emulator-5554)
источник
Эмулятор можно запустить командой
-avd Adfmf -http-proxy http://SYSTEM_IP:PORT
. Я использовал HTTP Analyzer, но он должен работать для всего остального. Более подробную информацию можно найти здесь: http://stick2code.blogspot.in/2014/04/intercept-http-requests-sent-from-app.htmlисточник
Вы можете использовать http://docs.mitmproxy.org/en/stable/install.html
Его легко настроить и не потребуется никаких дополнительных настроек.
Я пробовал разные инструменты, но оказалось, что это действительно хорошо и легко.
источник
mitmproxy
раньше. Но, насколько я понимаю, он специфичен для HTTP. Но вопрос ОП - нет.Вы можете отслеживать сетевой трафик из Android Studio. Перейдите в Android Monitor и откройте вкладку Network.
http://developer.android.com/tools/debugging/ddms.html
ОБНОВЛЕНИЕ: ⚠️ Android Device Monitor устарел в Android Studio 3.1. Подробнее см. Https://developer.android.com/studio/profile/monitor.
источник
Я бы посоветовал вам использовать Wireshark .
Вы можете использовать другие упомянутые здесь методы фильтрации, чтобы получить определенный трафик.
источник