Android: Menangkap Permintaan HTTP dengan perangkat android yang tidak di-rooting

92

Saya memiliki aplikasi android yang menggunakan jar pihak ketiga di dalamnya. Permintaan http dikirim dari jar pihak ketiga ke server saat aplikasi sedang berjalan. Saya perlu menangkap Permintaan HTTP yang dikirim dari jar pihak ketiga. Saya ingin tahu apakah ada cara mudah untuk menerapkan dengan perangkat yang tidak di-rooting

Untuk memulai: Saya mencoba mengunduh "proxyDroid" tetapi memerlukan ponsel yang telah di-root. Saya juga mencoba mengunduh "hiu untuk root" dengan "pembaca hiu" yang juga memerlukan perangkat yang di-root. Saya mencoba banyak aplikasi lain yang dapat menangkap permintaan lengkap tetapi semua yang dibutuhkan adalah perangkat yang di-rooting

Saya butuh sesuatu yang bisa dilakukan fiddler / wireshark untuk windows. Penganalisis paket jaringan yang dapat dengan mudah diintegrasikan dengan aplikasi android yang dapat memberikan objek permintaan dengan semua kolom header di dalamnya.

Venkatesh
sumber
Apakah ini "aplikasi android" Anda?
CommonsWare
Ya aplikasi android saya
Venkatesh
Halo @Venkatesh, apakah Anda pernah berhasil menghentikan permintaan http dengan android yang tidak di-root?
@lalala Tidak. Saya tidak dapat mencapai ini dengan perangkat yang tidak di-rooting.
Venkatesh

Jawaban:

82

Anda dapat menginstal Charles - proxy HTTP / monitor HTTP / Proxy Terbalik yang memungkinkan pengembang untuk melihat semua lalu lintas HTTP dan SSL / HTTPS antara mesin mereka dan Internet - di PC atau MAC Anda.

Langkah konfigurasi:

  • Biarkan ponsel dan PC atau MAC Anda dalam LAN yang sama
  • Luncurkan Charles yang Anda instal (port proxy default adalah 8888)
  • Atur konfigurasi wifi telepon Anda: setel ip delegasi ke PC atau ip MAC Anda, port delegasi ke 8888
  • Lauch aplikasi Anda di ponsel Anda. Dan pantau permintaan http pada Charles.
SFeng
sumber
4
tutorial ini bekerja dengan baik: jaanus.com/blog/2012/02/12/…
Lionel
18
Sayangnya ini adalah shareware.
flawyte
1
Anda mungkin ingin mencoba paket bersendawa alternatif untuk menyelesaikan pekerjaan yang sama. Ini sangat kuat dan gratis: portswigger.net/burp
gerodim
Apakah ada alat untuk melakukan hal yang sama dengan lalu lintas soket web? Maksud saya di android itu sendiri. (Saya tahu wireshark / fiddler untuk PC)
Amol M Kulkarni
Apa untuk Android
mohsen
17

Saya baru saja menginstal Drony, bukan shareware dan tidak memerlukan root pada ponsel Android 3.x atau lebih tinggi

https://play.google.com/store/apps/details?id=org.sandroproxy.drony

Ini memotong permintaan dan ditampilkan di LOG

Mauricio Gracia Gutierrez
sumber
Ini yang saya cari, tetapi saya ingin kode sumber yang tepat untuk aplikasi ini, Dapatkah Anda memposting tautan untuk kode sumber untuk android?
Smit.Satodia
2
@ Smit.Satodia Saya tidak tahu apakah mereka membagikan / mempublikasikan kode sumber, jika ada yang merasa bebas untuk memposting tautan sebagai komentar
Mauricio Gracia Gutierrez
2
Kode sumber dapat ditemukan di sini: github.com/SuppSandroB/sandrop Awalnya dihosting di Google Code di sini: code.google.com/archive/p/sandrop
GabLeRoux
1
@JanWytze jika Anda menghubungi pengembang mungkin mereka dapat membantu Anda dengan ini.
Mauricio Gracia Gutierrez
itu hanya mencatat nama host / ip, tidak terlalu berguna
uingtea
17

Ada banyak cara untuk melakukan itu tetapi salah satunya adalah fiddler

Konfigurasi Fiddler

  1. Pergi ke opsi
  2. Di tab HTTPS , aktifkan Capture HTTPS Connects dan Decrypt traffic HTTPS
  3. Di tab Connections , aktifkan Izinkan komputer jarak jauh untuk terhubung
  4. Mulai ulang fiddler

Konfigurasi Android

  1. Hubungkan ke jaringan yang sama
  2. Ubah pengaturan jaringan
  3. Tambahkan proxy untuk koneksi dengan alamat IP PC Anda (atau nama host) dan port fiddler default (8888 / Anda dapat mengubahnya di pengaturan)

Sekarang Anda dapat melihat log lengkap dari perangkat Anda di fiddler

Anda juga dapat menemukan instruksi lengkap di sini

Arash Hatami
sumber
2
Fiddler beta tersedia di macOS (mengandalkan mono). Ini kabar baik jika Anda tidak memiliki PC.
MacKentoch
Terima kasih tapi maksud saya semua komputer dalam jawaban ini. PC / Laptop / dll ... :) @MacKentoch
Arash Hatami
6

Anda dapat menggunakan fiddler sebagai webdebugger http://www.telerik.com/fiddler/web-debugging

Fiddler adalah alat debugging dari perangkat lunak telerik, yang membantu Anda mencegat setiap permintaan yang dimulai dari mesin Anda.

Warga negara Ken
sumber
4
Meskipun tautan ini mungkin menjawab pertanyaan, lebih baik menyertakan bagian penting dari jawaban di sini dan menyediakan tautan untuk referensi. Jawaban link saja bisa menjadi tidak valid jika halaman tertaut berubah
zohar
6

Sekarang tahun 2020, untuk solusi terbaru, Anda dapat menggunakan Burp Suite untuk mengendus lalu lintas https tanpa me-rooting perangkat Android Anda.

Langkah:

  1. Pasang Burp Suite

  2. Aktifkan Proxy

  3. Impor sertifikasi di ponsel Android Anda

  4. Ubah konfigurasi Wifi Anda untuk mendengarkan proxy

  5. Keuntungan!

Saya menulis tutorial lengkap dan tangkapan layar tentang cara melakukannya di sini: https://www.yodiw.com/monitor-android-network-traffic-with-burp/

yodi
sumber
Alangkah baiknya untuk menyalin data dari situs ke jawaban Anda di sini. Karena situs Anda mungkin turun. Juga SO mendorong kutipan daripada tautan untuk alasan yang sama ini. Selain tutorial bagus itu.
Tandai
Meskipun untuk bersikap adil, mungkin lebih baik hanya meningkatkan stackoverflow.com/a/39684919/5506988 daripada menulis "jawaban" lain .... Pokoknya kerja yang bagus.
Tandai
4

Anda bisa menggunakan burp-suite. ikuti prosedur di bawah ini.

Konfigurasikan pendengar Burp Proxy

Di Burp, pergi ke tab "Proxy" dan kemudian tab "Options". Di bagian "Proxy Listeners", klik tombol "Add".

Di tab "Binding", di kotak "Bind to port:", masukkan nomor port yang saat ini tidak digunakan, misalnya "8082". Kemudian pilih opsi "Semua antarmuka", dan klik "OK".

Konfigurasi perangkat Anda untuk menggunakan proxy

Di perangkat Android Anda, buka menu "Pengaturan".

Jika perangkat Anda belum terhubung ke jaringan nirkabel yang Anda gunakan, aktifkan tombol "Wi-Fi", dan ketuk tombol "Wi-Fi" untuk mengakses menu "Wi-Fi".

Di tabel "Jaringan Wi-Fi", temukan jaringan Anda dan ketuk untuk membuka menu koneksi.

Ketuk "Hubungkan". Jika Anda telah mengonfigurasi kata sandi, masukkan dan lanjutkan.

Setelah Anda terhubung, tahan tombol jaringan untuk membuka menu konteks. Ketuk "Ubah konfigurasi jaringan".

Pastikan kotak "Tampilkan opsi lanjutan" dicentang.

Ubah "setelan Proxy" menjadi "Manual" dengan mengetuk tombol.

Kemudian masukkan IP komputer yang menjalankan Burp ke dalam "Proxy hostname". Masukkan nomor port yang dikonfigurasi di bagian "Proxy Listeners" sebelumnya, dalam contoh ini "8082". Ketuk "Simpan".

Uji konfigurasi

Di Burp, buka tab "Proxy Intercept", dan pastikan intersepsi "aktif" (jika tombol bertuliskan "Intercept tidak aktif", klik untuk mengubah status intersepsi).

Buka browser di perangkat Android Anda dan buka halaman web HTTP (Anda dapat mengunjungi halaman web HTTPS setelah menginstal Sertifikat CA Burp di perangkat Android Anda.)

Permintaan tersebut harus dicegat di Burp.

Vis
sumber
2

SandroProxy tampaknya lebih baik daripada Drony (oleh pengembang yang sama): Anda dapat (tetapi tidak harus) dengan mudah melihat dan menganalisis lalu lintas di browser PC Anda.

Harus bekerja di emulator juga.

Nicolai Weitkemper
sumber
1

Setel https://mitmproxy.org/ sebagai proxy di LAN yang sama

  • Sumber Terbuka
  • Dibangun dengan python 3
  • Dapat diinstal melalui pip
AlexisCaffa
sumber