Bagaimana cara menjinakkan Charles Proxy?

Halo! Banyak dari mereka yang datang kepada kami untuk wawancara untuk posisi penguji dengan bangga memastikan bahwa mereka dapat menggunakan Charles Proxy. Tetapi ketika Anda mendalami bagian teknis, jelaslah bahwa kandidat hanya mendengar tentang alat ini. Ayo jinakkan vas ini akhirnya!







Wikipedia memberi tahu kita bahwa:



Charles adalah aplikasi proxy debugging HTTP lintas platform yang ditulis di Java. Ini memungkinkan pengguna untuk melihat HTTP, HTTPS, dan lalu lintas port TCP yang diaktifkan yang diakses dari, ke, atau melalui komputer lokal. Ini termasuk permintaan dan tanggapan, termasuk header HTTP dan metadata (misalnya, cookie, informasi caching dan encoding), dengan fitur yang dirancang untuk membantu pengembang dan penguji menganalisis koneksi dan bertukar pesan.


Sedikit penjelasan



Sniffing adalah proses memantau dan mencegat semua paket yang melewati jaringan menggunakan alat sniffing (Charles Proxy).



Langkah pertama



1. Instalasi dan Peluncuran



Pertama, Anda perlu mengunduh dan menginstal aplikasi.



Jika Anda belum membeli lisensi, versi uji coba 30 hari dengan batasan akan tersedia (fungsionalitas tidak diblokir, tetapi jendela akan muncul dengan waktu tunggu 5-10 detik sebelum melanjutkan penggunaan, dan aplikasi akan berakhir setelah 30 menit).



2. Kita mulai mengendus lalu lintas



Mulai Charles Proxy, masuk ke menu HelpSSL ProxyingInstal Charles Root Certificate (lihat 1) → Instal sertifikatImpor sertifikat .







Sekarang Anda melihat permintaan, tetapi mereka dienkripsi, dan tidak ada yang terlihat kecuali hieroglif. Untuk melihat Request / Response dalam bentuk normalnya, Anda perlu mengaktifkan SSL Proxying dan mengonfigurasi domain yang paketnya ingin kami intersep. Dan kami ingin menerima permintaan dari semua situs. Untuk melakukan ini, buka ProxySSL Proxying Settings .







Pada kotak dialog yang terbuka, centang kotak Enable SSL Proxying , pilih bagian Enclude dan klik Add .







Selanjutnya, isi bidang Host dengan * (seperti yang ditunjukkan pada tangkapan layar) dan klik OK .







Di kotak dialog Pengaturan Proxying SSL, klik OK .







Sekarang Anda dapat melihat permintaan yang dikirim ke server dan respons server.



3. Proxying Lalu Lintas Web Browser



Saat Anda memulai ulang Charles, Anda hanya perlu mengaktifkan Windows Proxy (jika Anda memiliki Windows) atau Mac Proxy.







4. Mengonfigurasi proxy di Android



Untuk menampilkan permintaan aplikasi Android, Anda harus memiliki perakitan aplikasi Android yang sesuai dengan izin yang ditetapkan dalam manifes. Anggaplah kita memiliki aplikasi seperti itu dan kita ingin mulai mendapatkan lalu lintas darinya.



Untuk melakukan ini, kami mencari tahu alamat IP PC: di Charles Proxy, buka HelpAlamat IP Lokal . Kita melihat bahwa IP Anda: 192.168.1.50.







Selanjutnya, angkat telepon, bukaProperti Jaringan → Nama Jaringan WiFi → Server Proxy → Manual → Nama Host: * IP Anda * / Port: * 8888 * → Simpan properti jaringan yang diubah.



Sekarang Anda harus mengikuti tautan chls.pro/ssl atau charlesproxy.com/getssl , dan kemudian pengunduhan otomatis sertifikat akan dimulai. Buka, tetapkan nama untuk sertifikat, dan sekarang Anda memiliki akses ke lalu lintas aplikasi Android.



5. Mengkonfigurasi proxy di iOS



Ambil iPhone Anda, buka Properti Jaringan → Nama Jaringan WiFi → Server Proxy → Manual → Nama Host: * IP kami * / Port: * 8888 * → Simpan properti jaringan yang diubah.



Sekarang Anda perlu mengikuti link chls.pro/ssl atau charlesproxy.com/getssl, "Izinkan" memuat profil konfigurasi. Selanjutnya, buka PengaturanProfil dimuatInstal . Kemudian buka PengaturanUmumTentang perangkat iniSertifikat kepercayaan → temukan sertifikat yang diinstal dan jadikan "Tepercaya".



Fungsi Charles Proxy



  1. Substitusi data:

  2. Proksi:

  3. Alat:

  4. Pengaturan Perekaman
  5. Fokus
  6. Ulang
  7. Ulangi Lanjutan


1. Substitusi data



Mari kita bayangkan bahwa kita perlu menguji tata letak pada klien. Anda perlu memeriksa bagaimana sejumlah besar bonus pengguna akan ditampilkan. Salah satu opsi yang akan ditawarkan banyak orang: ubah jumlah bonus di database dan periksa klien. Ya, Anda benar! Namun, server mungkin memiliki cache, dan Anda perlu menunggu beberapa saat hingga jumlah bonus diperbarui, atau cukup sambungkan ke database itu sendiri dan jalankan permintaan - ini membutuhkan waktu tertentu. Ada opsi yang lebih mudah: ubah respons dari server! Charles Proxy memiliki tiga cara untuk memalsukan data:



1.1 Breakpoint



Breakpoint adalah jenis breakpoint untuk permintaan. Ketika permintaan dari daftar yang ditentukan ditemukan, jendela terpisah terbuka untuk interaksi manual lebih lanjut dengan parameter permintaan. Di dalamnya, buka mengubah permintaan dan tanggapan secara manual. Lebih mudah menggunakan fungsi ini saat menguji API atau respons server yang berbeda.



Kami memiliki aplikasi dan profil pengguna yang saat ini memiliki 0 bonus di akun mereka:





Permintaan di mana jumlah bonus ini berasal: https://api.youla.io/api/v1/user/5e6222bbbedcc5975d2375f8







Untuk "menggantung" Breakpoint pada permintaan, buka Proxybagian Pengaturan Breakpoint . Selanjutnya, centang kotak Aktifkan BreakpointsTambahkan , dan di kotak dialog "Edit Breakpoint" yang terbuka, tempelkan URL permintaan seperti yang ditunjukkan di tangkapan layar:







Misalnya, centang kotak "Permintaan" dan "Respons". Kemudian klik OK , dan OK lagi di jendela Pengaturan Breakpoint. Sekarang jalankan permintaan lagi, yaitu klien akan membuka kembali layar dengan profil pengguna.



Di Charles Proxy, kita dapat melihat bahwa permintaan dijeda:







Di sini Anda dapat mengubah parameter kueri. Tapi sekarang Anda tidak perlu melakukan ini, klik "Execute". Selanjutnya, kami menjeda respons yang sudah diterima dari server. Di sinilah kita perlu mengedit "Respon". Temukan parameter yang diperlukan - bonus_cnt»: 45.







Kemudian ubah nilai parameter bonus_cnt, misalnya menjadi 1.000.000 bonus, dan klik "Jalankan".







Klien menampilkan jumlah bonus baru. Kita kaya!





1.2 Tulis ulang



Menulis ulang adalah alat yang memungkinkan Anda membuat aturan yang mengubah permintaan dan respons saat melalui Proxy Charles. Misalnya, Anda dapat menambah dan mengubah judul, mencari dan mengganti teks dalam isi respons atau permintaan, dll.



Mari coba gunakan Rewrite untuk mengubah jumlah bonus pengguna kita. Untuk melakukan ini, buka ToolsRewrite → checkbox “ Enable Rewrite ” → Add . Di kolom Name , Anda dapat memasukkan nama apa pun untuk substitusi, misalnya, "Ubah bonus", atau biarkan default "Set Tanpa Judul".







Langkah selanjutnya adalah menambahkan jalur permintaan ke "Lokasi". Untuk melakukan ini, di bawah LokasiTambahkanisi kolom berikut dan simpan:



Host: https://api.youla.io



Path: /api/v1/user/5e6222bbbedcc5975d2375f8







Setelah Anda menambahkan jalur permintaan, Anda perlu mengubah parameter itu sendiri dan nilainya. Untuk melakukan ini, Anda perlu membuat Aturan Penulisan Ulang :



Jenis: Badan (karena parameter ada di dalam badan);



Dimana: Respon (karena parameternya ada di respon dari server);



Cocokkan bagian: di "Nilai" tentukan nilai dan parameter yang dikembalikan server;



Ganti bagian: Di "Nilai" tentukan nilai dan parameter yang ingin Anda lihat di klien.







Selanjutnya, simpan "Rewrite Rule" dan klik OK pada tab "Rewrite Settings". Di klien, minta kembali profil pengguna. Anda telah secara otomatis mengubah jumlah bonus pengguna. Kami kaya lagi!





1.3 Peta Lokal



Map Local adalah alat yang memungkinkan Anda menggunakan file lokal seolah-olah mereka adalah bagian dari server.



Buka Alat → Peta Lokal.







Selanjutnya, di jendela Map Local Settings, klik Add → Host: https://api.youla.io/api/v1/user/5e6222bbbedcc5975d2375f8→ Local path: jalur di komputer ke file. Anda dapat menggunakan file media yang sudah jadi, HTML, CSS, JSON, XML. Lebih cocok, tentu saja, untuk pengembang, agar tidak mengunggah data ke server untuk pengujian selanjutnya, tetapi penguji juga dapat menemukan aplikasi yang kompeten. Kami telah menyiapkan respons yang kami perlukan sebelumnya dan menyimpannya ke file change_bonus.json:







Simpan nilai yang dimasukkan di tab Edit Mapping dan tab Map Local Settings.







Di klien, minta kembali profil pengguna. Anda telah secara otomatis mengubah jumlah bonus pengguna. Kami kaya lagi!





Mari kita lihat fitur lain dari alat Charles Proxy. Dan mari kita mulai dari awal, dengan tab "Proxy".



2.1 Pengaturan Throttle



Pengaturan Throttle adalah fungsi yang memungkinkan Anda mengatur parameter berbeda dari kecepatan koneksi dengan domain yang dipilih.



Fungsi bagi mereka yang suka menguji di lift, di kereta bawah tanah, di jalan bawah tanah. Mari pergi ke ProxyPengaturan Throttle → kotak centang Aktifkan Throttling . Jika Anda tidak memahami semua poin di atas, Anda dapat menggunakan preset Throttle dan memilih kecepatan yang sesuai untuk pengujian, dan sistem akan secara otomatis mengisi bidang lainnya.







Jika Anda memilih "Hanya untuk host yang dipilih", Anda dapat mengatur host tertentu yang akan menerapkan pengaturan Anda. Di sini Anda dapat menggunakan preset yang sudah jadi dengan pengaturan untuk berbagai jenis (4G, 3G, dll.). Dan Anda juga dapat mengatur berbagai parameter, saya akan secara singkat mencantumkan beberapa di antaranya:



Bandwidth adalah jumlah data maksimum yang dapat ditransfer dari waktu ke waktu.



Pemanfaatan adalah sebagian kecil dari total bandwidth yang dapat disediakan untuk pengguna pada waktu tertentu.



Latensi - latensi dalam milidetik pada permintaan pertama antara klien dan server jarak jauh.



MTU adalah unit pemancar maksimum untuk preset saat ini.



Reliabilitas - Ukuran kemungkinan koneksi akan gagal. Digunakan untuk mensimulasikan kondisi jaringan yang tidak dapat diandalkan.



Stabilitas adalah ukuran kemungkinan sambungan menjadi tidak stabil dan, oleh karena itu, menurunkan kualitas. Berguna untuk mensimulasikan jaringan yang kualitas komunikasinya menurun secara berkala, misalnya seluler.



2.2 Membalikkan Proksi



Proksi terbalik adalah server proksi terbalik. Biasanya digunakan untuk menerima permintaan dari Internet dan mengarahkannya ke salah satu server web.







2.3 Penerusan Port



Port Forwarding , kadang-kadang disebut sebagai penerusan port, atau tunneling, adalah proses meneruskan lalu lintas yang dialamatkan ke port jaringan tertentu dari satu node jaringan ke node lain. Metode ini memungkinkan pengguna luar untuk mencapai port di dalam jaringan lokal.







2.4 Proxy MacOS / Proxy Windows



MacOS Proxy atau Windows Proxy (tergantung OS Anda) - proxy lalu lintas dari browser web Anda.







Setelah berurusan dengan bagian Proxy, mari kita lanjutkan ke bagian Alat.



3.1 Tidak Ada Caching



Alat Tanpa Cache mencegah cache dengan memanipulasi header HTTP yang mengontrol cache respons. Header If-Modified-Sincedan If-None-Matchdihapus dari permintaan, Pragma: no-cachedan ditambahkan Cache-control: no-cache. Header Expires, Last-Modifieddan ETagdihapus dari jawaban dan ditambahkan Expires: 0, dan Cache-Control: no-cache.







3.2 Memblokir Cookies



Blokir Cookie - Header cookie dihapus dari permintaan, mencegah nilai file dikirim dari aplikasi klien (seperti browser web) ke server jauh. Juga, set-cookie header dihapus dari tanggapan, mencegah aplikasi klien menerima permintaan untuk mengatur cookie dari server jauh. Di pengaturan, Anda dapat mengaktifkan penghapusan cookie baik untuk semua host dan yang dipilih. Contoh di bawah ini memungkinkan penghapusan cookie untuk semua permintaan.







3.3 Memetakan Jarak Jauh



Map Remote - Memungkinkan Anda untuk mengarahkan permintaan dari satu Map From URL ke Map To lainnya. Mengganti host, seluruh jalur, atau hanya parameter, tergantung pada tugas Anda. Pada contoh di bawah ini, permintaan dari server prod ke server dev dipalsukan.







3.4 Daftar Blok



Daftar Blokir - memungkinkan Anda untuk memblokir nama domain tertentu. Ketika browser web mencoba meminta halaman apa pun dari nama domain yang diblokir, itu akan diblokir. Anda dapat memilih "Putuskan koneksi" atau mengembalikan kesalahan 403.







3.5 Spoofing DNS



Hosting bersama adalah ketika Anda memiliki beberapa situs di alamat IP yang sama dan server web menentukan situs mana yang Anda minta berdasarkan nama yang dimasukkan ke dalam browser. Lebih tepatnya, server melihat header host yang dikirim dalam permintaan. Misalnya, ketika Anda perlu mengganti host sehingga ketika Anda memasukkan alamat di browser (katakanlah, api.youla.ru), permintaan pergi ke alamat lain (misalnya, ke situs pengujian).



DNS Spoofing - mengalihkan nama domain ke alamat IP tertentu.







3.6 Cermin



Mirror - Fitur ini memungkinkan Anda untuk secara otomatis menyimpan semua tanggapan yang dikembalikan ke Charles Proxy. Mereka diletakkan secara lokal dalam hierarki yang sama seperti di server. Jika tiba-tiba ada downtime di backend, lingkungan pengujian jatuh, dll., Anda sudah memiliki tiruan yang siap pakai untuk Map Local. Anda dapat mengaktifkan fungsi seperti ini: ToolsMirror atau ToolsAuto Save .







3.7 Menulis



Tulis adalah fitur untuk mengedit kueri yang Anda tangkap.



Misalnya, Anda menambahkan produk ke favorit Anda, tetapi karena alasan tertentu itu tidak ditambahkan. Anda dapat mengedit permintaan yang sudah dikirim dan mengirimkannya lagi. Untuk melakukan ini, pilih permintaan yang diperlukan dari daftar, klik kanan padanya dan pilih Tulis . Ikon permintaan akan berubah, dan sekarang Anda dapat mengeditnya dengan aman.







Setelah Anda mengubah nilai yang diperlukan dalam permintaan, klik "Jalankan" di bawah ini untuk mengirim permintaan ke server.







4. Pengaturan Perekaman



Recording Settings - pengaturan untuk menampilkan daftar domain yang diizinkan dan diblokir.



Di tab "Opsi", Anda dapat mengonfigurasi batas, yaitu jumlah permintaan yang dapat direkam oleh Charles Proxy.







Di tab "Sertakan", Anda dapat memilih domain tertentu untuk menampilkan paket.







Di tab "Kecualikan", kita dapat memilih domain yang perlu disembunyikan selama sniffing.







5. Fokus



Fokus - fungsi ini memindahkan domain ke posisi pertama dalam daftar. 







6. Ulangi



Ulangi - mengirim permintaan ke server yang identik dengan yang dipilih.







7. Ulangi Lanjutan



Ulangi Lanjutan - sama seperti Ulangi, hanya Anda yang dapat memilih jumlah permintaan terkirim dan penundaan di antaranya. Fitur ini berguna saat memeriksa respons server terhadap flooding.



Di sini Concurrency adalah jumlah pengguna dan Iterasi adalah berapa kali setiap permintaan diulang. Anda juga dapat mencentang kotak "Tampilkan hasil dalam Sesi baru", dalam hal ini jendela baru akan terbuka tempat permintaan akan dieksekusi.







Ringkasan



Pada artikel ini, kami mencoba menjelaskan fitur Charles Proxy yang digunakan oleh penguji aplikasi seluler. Itu saja, dan jangan lupa untuk melampirkan sesi dari sniffer ke laporan bug.



All Articles