Bagaimana cara memantau lalu lintas jaringan yang dikirim dan diterima dari emulator android saya?
127
Ada dua cara untuk menangkap lalu lintas jaringan langsung dari emulator Android:
Salin dan jalankan biner tcpdump yang kompatibel dengan ARM di emulator, tulis keluaran ke kartu SD, mungkin (misalnya tcpdump -s0 -w /sdcard/emulator.cap
).
Jalankan emulator -tcpdump emulator.cap -avd my_avd
untuk menulis semua lalu lintas emulator ke file lokal di PC Anda
Dalam kedua kasus tersebut, Anda dapat menganalisis file pcap dengan tcpdump atau Wireshark seperti biasa.
The -tcpdump flag is not supported in QEMU2 yet and will be ignored.
peringatan, menambahkan -Engine klasik untuk perintah Anda seperti ini:emulator -tcpdump emulator.cap -avd my_avd -engine classic
. Tindakan ini akan memaksa mesin emulator yang tidak digunakan lagi, tetapi akan berfungsi sampai masalah diperbaiki.avd
lokasinya?Anda juga dapat menggunakan proxy http untuk memantau permintaan http dari emulator. Anda bisa meneruskan
-http-proxy
flag saat memulai emulator baru untuk menyetel proxy (Contoh burp ) untuk memantau traffic Android. Contoh penggunaan./emulator -http-proxy localhost:8080 -avd android2.2
. Perhatikan bahwa dalam contoh saya, saya menggunakan Burp, dan mendengarkan port 8080. Info lebih lanjut dapat ditemukan di sini .sumber
Untuk OS X Anda dapat menggunakan Charles , itu sederhana dan mudah digunakan.
Untuk informasi selengkapnya, lihat postingan blog Android Emulator dan Charles Proxy .
sumber
Charles
sebelumnya. Tapi sejauh yang saya bisa lihat, ini khusus HTTP. Tapi pertanyaan OP bukan.Rilis Android Studio saat ini tidak menerapkan
-tcpdump
argumen dengan benar . Saya masih bisa menangkap dump dengan meneruskan parameter terkait ke qemu sebagai berikut:sumber
Ya, wireshark akan berfungsi.
Menurut saya tidak ada cara mudah untuk memfilter hanya lalu lintas emulator, karena ini berasal dari IP src yang sama.
Mungkin cara terbaik adalah mengatur lingkungan VMware yang sangat kosong dan hanya menjalankan emulator di sana, setidaknya dengan cara itu tidak akan ada terlalu banyak lalu lintas latar belakang.
sumber
Anda dapat menggunakan Fiddler untuk memantau lalu lintas http:
http://aurir.wordpress.com/2010/03/22/tutorial-getting-android-emulator-working-with-fiddler-http-proxy-tool/
Anda juga dapat menggunakan Fiddler2 di sini .
sumber
10.0.2.2
yang merupakan alamat IP mesin host di emulator Android, tidak perlu mencari tahu apa itu.Sekarang Wireshark dapat digunakan secara langsung untuk menangkap lalu lintas emulator Android. Ada sebuah plugin extcap bernama androiddump yang memungkinkannya. Anda harus memiliki
tcpdump
file yang dapat dieksekusi di image sistem yang berjalan di emulator (gambar terbaru memilikinya, diuji dengan gambar API 24 dan API 27) danadbd
dijalankan sebagai root pada host (jalankan sajaadb root
). Dalam daftar antarmuka yang tersedia di Wireshark (hanya versi Qt, GTK + yang tidak digunakan lagi tidak memilikinya) atau daftar yang ditampilkantshark -D
harus ada beberapa antarmuka Android yang memungkinkan untuk mengendus lalu lintas Bluetooth, Logcat, atau Wifi, misalnya:android-wifi-tcpdump-emulator-5554 (Android WiFi Android_SDK_built_for_x86 emulator-5554)
sumber
Anda dapat memulai emulator dengan perintah
-avd Adfmf -http-proxy http://SYSTEM_IP:PORT
. Saya menggunakan HTTP Analyzer, tetapi seharusnya berfungsi untuk hal lain. Detail lebih lanjut dapat ditemukan di sini: http://stick2code.blogspot.in/2014/04/intercept-http-requests-sent-from-app.htmlsumber
Anda dapat menggunakan http://docs.mitmproxy.org/en/stable/install.html
Ini mudah diatur dan tidak memerlukan penyesuaian tambahan.
Saya memeriksa berbagai alat tetapi ternyata alat itu sangat bagus dan mudah.
sumber
mitmproxy
sebelumnya. Tapi sejauh yang saya bisa lihat, ini khusus HTTP. Tapi pertanyaan OP bukan.Anda dapat memantau lalu lintas jaringan dari Android Studio. Buka Android Monitor dan buka tab Jaringan.
http://developer.android.com/tools/debugging/ddms.html
PEMBARUAN: ⚠️ Android Device Monitor tidak lagi digunakan di Android Studio 3.1. Lihat selengkapnya di https://developer.android.com/studio/profile/monitor
sumber
Saya sarankan Anda menggunakan Wireshark .
Anda dapat menggunakan teknik pemfilteran lain yang disebutkan di sini untuk mendapatkan lalu lintas tertentu.
sumber