Cara memantau panggilan jaringan yang dilakukan dari iOS Simulator

113

Saya mencoba memantau panggilan dari aplikasi ke server saya seperti yang dilakukan Firebug. Saya tidak dapat menemukan cara untuk melihatnya di iOS Simulator atau di xCode.

Apakah ada cara untuk melakukannya tanpa mengendus semua lalu lintas? Jika tidak, alat apa yang akan Anda sarankan?

Mad Echet
sumber

Jawaban:

84

Secara pribadi, saya menggunakan Charles untuk hal semacam itu.
Saat diaktifkan, itu akan memantau setiap permintaan jaringan, menampilkan detail permintaan tambahan, termasuk dukungan untuk SSL dan berbagai format permintaan / tanggapan, seperti JSON, dll ...

Anda juga dapat mengkonfigurasinya untuk hanya mengendus permintaan ke server tertentu, bukan seluruh lalu lintas.

Ini perangkat lunak komersial, tetapi ada uji coba, dan IMHO jelas merupakan alat yang hebat.

Macmade
sumber
1
Sangat mudah digunakan dan dikonfigurasi dan melakukan apa yang saya inginkan, terima kasih!
Mad Echet
3
Tidak mudah berfungsi saat server Anda dilindungi oleh TLS, yang seharusnya begitu.
karbokation
Saya mencoba Charles tetapi saya tidak dapat memantau lalu lintas keluar dengan baik. Misalnya, saya tidak dapat mengubah format permintaan POST saya menjadi JSON
Jesus Rodriguez
24

Proksi man-in-the-middle, seperti yang disarankan oleh jawaban lain, adalah solusi yang baik jika Anda hanya ingin melihat lalu lintas HTTP / HTTPS. Burp Suite cukup bagus. Mungkin sulit untuk dikonfigurasi. Saya tidak yakin bagaimana Anda akan meyakinkan simulator untuk berbicara dengannya. Anda mungkin harus mengatur proxy pada Mac lokal Anda ke instans server proxy Anda agar dapat mencegat, karena simulator akan menggunakan lingkungan Mac lokal Anda.

Solusi terbaik untuk mengendus paket (meskipun hanya berfungsi untuk perangkat iOS yang sebenarnya , bukan simulator) yang saya temukan adalah dengan menggunakan rvictl. Posting blog ini memiliki artikel yang bagus. Pada dasarnya Anda melakukan:

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

Kemudian Anda mengendus antarmuka yang dibuatnya dengan Wireshark (atau alat favorit Anda), dan setelah selesai, matikan antarmuka dengan:

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

Ini bagus karena jika Anda ingin mengendus paket simulator, Anda harus mengarungi lalu lintas ke Mac lokal Anda juga, tetapi rvictlmembuat antarmuka virtual yang hanya menunjukkan lalu lintas dari perangkat iOS yang telah Anda sambungkan ke USB Anda. Pelabuhan.

mpontillo.dll
sumber
1
+1 untuk Burp Suite, dan tidak sulit untuk mengkonfigurasinya: engadget.com/2011/02/21/… Dibutuhkan kurang dari 10 menit
Vladimir
20

Alat proxy gratis dan sumber terbuka yang berjalan dengan mudah di Mac adalah mitmproxy .

Situs web tersebut menyertakan tautan ke biner Mac, serta kode sumber di Github.

Dokumen tersebut berisi pengantar yang sangat membantu untuk memuat sertifikat ke perangkat pengujian Anda untuk melihat lalu lintas HTTPS.

Tidak sekuat GUI-tastic seperti Charles, tetapi ia melakukan semua yang saya butuhkan dan gratis serta terawat. Bagus, dan cukup mudah jika Anda pernah menggunakan beberapa alat baris perintah sebelumnya.

UPDATE: Saya baru saja melihat di situs web bahwa mitmproxy tersedia sebagai penginstalan homebrew. Tidak bisa lebih mudah.

giff
sumber
Apakah Anda beruntung menggunakan mitm untuk simulator iOS? Saya sudah mengaturnya tetapi lalu lintas dari komputer saya di luar simulator juga tertangkap, yang mana bukan yang terbaik. Menggunakannya di perangkat yang sebenarnya itu luar biasa. Telah melakukannya selama bertahun-tahun.
atreat
mitmweb adalah antarmuka pengguna berbasis web mitmproxy yang memungkinkan pemeriksaan interaktif dan modifikasi lalu lintas HTTP. Seperti mitmproxy, ini berbeda dari mitmdump karena semua aliran disimpan dalam memori, yang berarti dimaksudkan untuk mengambil dan memanipulasi sampel kecil mitmproxy.readthedocs.io/en/v2.0.2/mitmweb.html
Raunak
15

Baru-baru ini saya menemukan git repo yang membuatnya mudah.

Kamu bisa mencobanya.

Ini adalah tangkapan layar aplikasi: masukkan deskripsi gambar di sini

Salam Hormat.

Andres Paladines
sumber
Meskipun Bagel bagus dan sederhana, baru-baru ini saya menyadari bahwa Bagel juga akan menampilkan permintaan yang disimpan dalam cache. Jadi jika Anda ingin mengetahui byte yang ditransfer sebenarnya, misalnya, ini tidak membantu.
BlackWolf
10

Xcode menyediakan CFNetwork Diagnostic Logging. Dok Apple

Untuk mengaktifkannya, tambahkan CFNETWORK_DIAGNOSTICS=3di bagian Variabel Lingkungan:

masukkan deskripsi gambar di sini

Ini akan menampilkan permintaan dari Aplikasi dengan header & body-nya. Catatan yang OS_ACTIVITY_MODEharus diatur enableseperti yang ditunjukkan. Jika tidak, tidak ada output yang akan ditampilkan di Konsol.

Evan
sumber
4

Wireshark itu

Pilih antarmuka Anda

masukkan deskripsi gambar di sini

Tambahkan filtermulaicapture

masukkan deskripsi gambar di sini


Menguji

Klik pada tindakan atau tombol apa pun yang akan memicu permintaan GET / POST / PUT / DELETE

Anda akan melihatnya di daftar di wireshark

masukkan deskripsi gambar di sini

Jika Anda ingin mengetahui lebih detail tentang satu paket tertentu, cukup pilih dan Ikuti> HTTP Stream .

masukkan deskripsi gambar di sini

Semoga ini membantu orang lain !!

cyber8200
sumber
3

Jika Anda memiliki koneksi kabel dan Mac, maka ada metode sederhana dan hebat:

  1. instal Wireshark gratis, pastikan ia dapat menangkap perangkat dengan (dan Anda perlu melakukan ini setelah setiap komputer dimulai ulang !):

    sudo chmod 644 / dev / bpf *

  2. Sekarang bagikan jaringan Anda dengan wifi. Preferensi sistem> Berbagi> Berbagi Internet. Periksa apakah Anda memiliki "Bagikan koneksi Anda dari: Ethernet" dan menggunakan: Wi-Fi. Anda mungkin juga ingin mengkonfigurasi beberapa keamanan wifi, itu tidak mengganggu pemantauan data Anda.

  3. Hubungkan telepon Anda ke jaringan yang baru Anda buat. Saya perlu sering mencoba beberapa kali di sini. Jika ponsel tidak mau terhubung, matikan wifi Mac, kemudian ulangi langkah 2 di atas dan bersabar.

  4. Mulai Wireshark tangkap antarmuka nirkabel Anda dengan Wireshark, mungkin "en1". Filter alamat IP dan / atau port yang Anda butuhkan. Ketika Anda menemukan sebuah paket yang menarik, pilihlah, Klik kanan (menu konteks)> Ikuti Aliran TCP dan Anda akan melihat representasi teks yang bagus dari permintaan dan jawaban.

Dan apa yang terbaik: trik yang persis sama juga berfungsi untuk Android!

JaakL
sumber
Bisakah Anda menggunakan ini dengan simulator Anda? Saya belum memiliki aplikasinya di ponsel saya.
Joshua Dance
@Joshua Dance Anda dapat menggunakannya dengan emulator, jika ia melakukan permintaan jaringan eksternal. Koneksi ke localhost tidak dapat dilacak dengan wireshark, karena mereka tidak melewati "kabel" (kartu jaringan)
JaakL
1

Telerik Fiddler adalah pilihan yang bagus

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

Konstantin Salavatov
sumber
Bagaimana cara kerjanya pada mesin OSX? Mengingat dua tag tersebut adalah xcode dan ios-simulator.
Kevin R
@KevinR, 1. Telerik memang memiliki versi beta Fiddler untuk OS X 2. Tidak ada bagian dalam pertanyaan yang disebutkan bahwa pilihannya terbatas pada OS X telerik.com/blogs/using-fiddler-with-apple-ios-devices
Konstantin Salavatov
2
@KonstantinSalavatov, Subjek postingan asli adalah "Bagaimana memonitor panggilan jaringan yang dibuat dari iOS Simulator". IOS Simulator hanya berjalan pada OS X, jadi ya, pilihan yang terbatas OS X.
ChillyPenguin
1
1 Saya pikir Anda harus upvote ini sekarang, karena sekarang ada dukungan untuk Mac OS X! : D telerik.com/fiddler#SupportedTechnologies dan di sini telerik.com/download/fiddler/fiddler-osx-beta
David Noreña
1
  1. Pasang WireShark
  2. dapatkan alamat ip dari monitor jaringan xcode
  3. dengarkan antarmuka wifi
  4. atur filter ip.addr == 192.168.1.122 di WireShark
Agustus Lin
sumber
0

Solusi yang baik jika Anda terbiasa dengan alat pemeriksa chrome adalah Pony debugger: https://github.com/square/PonyDebugger

Agak merepotkan untuk mengaturnya, tetapi setelah Anda melakukannya, itu berfungsi dengan baik. Pastikan untuk menggunakan Safari daripada Chrome untuk menggunakannya.

Simon Epskamp
sumber
0

Saya menggunakan netfox. Ini sangat mudah digunakan dan diintegrasikan. Anda dapat menggunakannya di simulator dan perangkat. Ini menunjukkan semua permintaan dan tanggapan. Ini mendukung JSON, XML, HTML, Gambar dan jenis tanggapan lainnya. Anda dapat berbagi permintaan, tanggapan, dan log lengkap dengan format berbagi default IOS (Gmail, WhatsApp, email, kendur, sms, dll.)

Anda dapat memeriksa di GitHub: https://github.com/kasketis/netfox

Netfox memberikan gambaran sekilas tentang semua permintaan jaringan yang dijalankan yang dilakukan oleh aplikasi iOS atau OSX Anda. Itu mengambil semua permintaan - tentu saja milik Anda, permintaan dari perpustakaan pihak ketiga (seperti AFNetworking, Alamofire atau lainnya), UIWebViews, dan banyak lagi

Burcu Kutluay
sumber