Charles Proxy — server proxy lintas platform untuk debugging lalu lintas HTTP/HTTPS, digunakan oleh pengembang untuk mencegat, melihat, dan memodifikasi permintaan jaringan. Menurut Karl von Randow, pembuat alat (2025), Charles telah digunakan di lebih dari 50.000 perusahaan di seluruh dunia sejak 2004. Proxy mendukung penyadapan lalu lintas dari perangkat seluler melalui WiFi, proxy HTTPS dengan pemasangan sertifikat root, dan berbagai alat analisis API.
Poin Penting
Charles Proxy — adalah proxy HTTP dan monitor HTTP yang bertindak sebagai perantara antara klien dan server. Semua permintaan dan respons melewati Charles, memungkinkan melihat kontennya, menganalisis struktur, mengubah data secara real-time, dan mensimulasikan berbagai kondisi jaringan. Tersedia untuk Windows, macOS, dan Linux.
Charles Proxy dibuat pada tahun 2004 oleh Karl von Randow dan tetap menjadi salah satu alat paling populer untuk debugging lalu lintas jaringan. Tidak seperti alternatif gratis, Charles menawarkan lisensi berbayar dengan masa percobaan 30 hari. Alat ini diposisikan sebagai solusi profesional untuk pengembang aplikasi seluler, pengembang web, dan insinyur QA yang membutuhkan kendali penuh atas komunikasi HTTP.
Charles bekerja sebagai proxy sistem di komputer dan dapat menyadap lalu lintas dari perangkat apa pun di jaringan yang sama: Android, iOS, simulator, emulator, browser web, dan perangkat IoT. Untuk penyadapan HTTPS, Anda perlu menginstal sertifikat root Charles di setiap perangkat. Lalu lintas didukung pada HTTP/1.1 dan HTTP/2 (sebagian). HTTP/3 (QUIC) tidak didukung pada tingkat penyadapan.
Charles bekerja berdasarkan prinsip proxy MITM (Man-in-the-Middle): ketika klien mengirim permintaan melalui Charles, alat ini menyadap permintaan tersebut, meneruskannya ke server target, menerima respons, dan mengirimkannya kembali ke klien. Semua lalu lintas melewati Charles, memungkinkan analisis dan modifikasi.
Saat dijalankan, Charles menciptakan proxy HTTP lokal di port 8888 (default). Sistem operasi atau aplikasi dikonfigurasi untuk menggunakan proxy ini. Semua permintaan HTTP pertama-tama dikirim ke Charles, yang kemudian bertindak sebagai klien penuh untuk server target. Untuk HTTPS, Charles menggunakan teknik SSL-proxy sendiri: ia menghasilkan sertifikat secara real-time untuk setiap domain, ditandatangani oleh sertifikat root Charles. Jika sertifikat root diinstal sebagai tepercaya di perangkat, Charles dapat mendekripsi dan melihat lalu lintas HTTPS.
Charles mendukung dua mode: Proxy (server proxy klasik) dan SOCKS Proxy (untuk lalu lintas UDP dan TCP). Untuk pengembangan web, digunakan HTTP-proxy standar. Untuk perangkat seluler — konfigurasi WiFi Proxy di perangkat dengan menentukan alamat IP komputer tempat Charles berjalan. MacOS mendukung konfigurasi proxy otomatis untuk simulator iOS.
<!-- Konfigurasi network_security_config.xml untuk Android dengan dukungan Charles -->
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<debug-overrides>
<trust-anchors>
<!-- Percayai sertifikat Charles dalam build Debug -->
<certificates src="user" />
</trust-anchors>
</debug-overrides>
</network-security-config>
Charles Proxy menyediakan seperangkat alat profesional untuk analisis dan modifikasi lalu lintas yang jauh melampaui penyadapan permintaan sederhana.
Alat Rewrite memungkinkan modifikasi otomatis bagian tertentu dari permintaan atau respons: header, parameter URL, body respons. Misalnya, Anda dapat mengganti header User-Agent dengan nilai dari perangkat lain atau menghapus cookie tertentu. Breakpoints bekerja seperti debugger: permintaan dijeda pada tahap yang dipilih (sebelum dikirim atau sebelum diterima), dan pengembang dapat memodifikasi kontennya secara manual sebelum dilanjutkan. Ini berguna untuk menguji penanganan respons kesalahan atau status non-standar.
Map Local memungkinkan penggantian sumber daya jaringan (CSS, JS, JSON) dengan file lokal di disk. Ini sangat diperlukan dalam pengembangan frontend: Anda dapat mengubah CSS/JS dan segera melihat hasilnya tanpa deploy ke server. Map Remote mengarahkan permintaan dari satu URL ke URL lain — misalnya, dari server produksi ke staging untuk pengujian. Kedua alat bekerja dengan pola URL yang mendukung wildcards.
Alat Throttle memungkinkan simulasi berbagai jenis koneksi jaringan berdasarkan profil yang telah ditentukan: 3G, EDGE, GPRS, DSL, WiFi. Anda dapat mengatur batas kecepatan (download/upload), latensi, kehilangan paket, dan stabilitas. Ini sangat penting untuk menguji perilaku aplikasi dalam koneksi lambat atau tidak stabil — penanganan timeout yang tepat, percobaan ulang, mode offline.
| Profil | Download | Upload | Latensi | Skenario Khas |
|---|---|---|---|---|
| 3G | 780 kbps | 330 kbps | 200 ms | Pengujian dengan sinyal seluler lemah |
| EDGE | 130 kbps | 50 kbps | 400 ms | Koneksi sangat lambat |
| GPRS | 50 kbps | 20 kbps | 500 ms | Koneksi minimal yang mungkin |
| DSL | 2 Mbps | 256 kbps | 50 ms | Koneksi kabel rumah |
| WiFi | 10 Mbps | 10 Mbps | 10 ms | Koneksi WiFi bagus |
Charles dapat secara otomatis menyimpan sesi lalu lintas ke file .chls, memungkinkan analisis nanti atau berbagi dengan rekan kerja. Recording Control memungkinkan konfigurasi fleksibel lalu lintas mana yang akan disimpan: berdasarkan domain, jenis konten, kode status. Ini nyaman untuk pemantauan API jangka panjang.
Untuk debugging lalu lintas aplikasi seluler, Charles dikonfigurasi sebagai WiFi Proxy: semua perangkat di jaringan yang sama dengan komputer dapat mengarahkan lalu lintas melalui Charles. Pengaturan HTTPS yang benar memerlukan pemasangan sertifikat Charles pada perangkat seluler.
Untuk Android: buka Pengaturan → WiFi → Lanjutan → Proxy, pilih Manual dan masukkan alamat IP komputer dengan port 8888. Kemudian buka browser di perangkat dan kunjungi http://chls.pro/ssl untuk mengunduh sertifikat Charles. Di Android 7+ (API 24+), diperlukan network_security_config.xml untuk mempercayai sertifikat pengguna di build Debug — jika tidak, aplikasi mungkin tidak mengarahkan lalu lintas melalui Charles.
Untuk iOS: Pengaturan → WiFi → konfigurasi proxy ke IP dan port 8888. Kemudian Safari → http://chls.pro/ssl → instal profil sertifikat. Di iOS 10.3+, Anda perlu mengaktifkan kepercayaan sertifikat: Pengaturan → Umum → Tentang → Pengaturan Kepercayaan Sertifikat → aktifkan Charles Proxy. iOS lebih ketat dengan sertifikat: beberapa aplikasi mungkin menggunakan SSL Pinning, memblokir lalu lintas melalui Charles bahkan dengan sertifikat tepercaya.
Jika aplikasi menggunakan SSL Pinning (pemasangan sertifikat server), proxy standar melalui Charles tidak akan berfungsi — aplikasi akan menolak sertifikat Charles. Solusi: nonaktifkan SSL Pinning di build Debug melalui pengaturan OkHttp atau URLSession, gunakan Frida untuk melewati pinning saat runtime, atau gunakan Android Emulator dengan akses root.
Charles Proxy memecahkan tugas pengembangan dan pengujian spesifik. Mari kita lihat skenario paling umum di mana alat ini sangat diperlukan.
Skenario paling umum — memeriksa kebenaran permintaan API. Charles menunjukkan URL permintaan yang tepat, header, body, parameter. Jika server mengembalikan respons yang tidak terduga, segera terlihat: struktur JSON, kode kesalahan, header respons. Ini memungkinkan membedakan kesalahan sisi klien dari kesalahan sisi server tanpa log dari kedua sisi.
Menggunakan profil Throttle, Anda dapat menguji bagaimana aplikasi berperilaku dalam kecepatan koneksi rendah: apakah indikator pemuatan ditampilkan, apakah timeout ditangani dengan benar, apakah UI membeku saat kehilangan koneksi. Pengujian caching sangat penting — jika data sudah dimuat, aplikasi harus menampilkannya dari cache, bukan masuk ke pemuatan tak terbatas.
Dengan Breakpoints, Anda dapat mengubah respons server sebelum dikirim ke aplikasi. Misalnya, mengembalikan array kosong alih-alih data, mengubah kode status menjadi 500, menambahkan field baru ke JSON. Ini memungkinkan pengujian penanganan kasus batas tanpa memodifikasi kode server — salah satu aplikasi terkuat Charles dalam pengembangan seluler.
Pertanyaan yang Sering Diajukan
Charles Proxy adalah produk komersial dengan masa percobaan 30 hari. Setelah masa percobaan berakhir, program terus bekerja dengan jeda 30 menit setiap kali dijalankan. Biaya lisensi adalah $50 per salinan. Ada alternatif gratis, seperti Proxyman (macOS) dan mitmproxy (lintas platform).
Ya, simulator iOS secara otomatis menggunakan proxy sistem macOS. Cukup jalankan Charles dan aktifkan SSL-proxy — semua lalu lintas simulator akan disadap. Pengaturan sertifikat untuk simulator terjadi secara otomatis, Anda hanya perlu mempercayai sertifikat Charles di keychain macOS.
Perbedaan utama: Charles lintas platform (Windows, macOS, Linux), Proxyman — hanya macOS dan iOS. Charles memiliki set alat yang lebih luas (Rewrite, Map Local, Repeat, Auto Save) tetapi berbayar. Proxyman gratis untuk fungsionalitas dasar, dengan antarmuka modern dan integrasi asli dengan simulator iOS.
Charles menambah latensi saat lalu lintas melewati proxy, terutama dengan SSL-proxy aktif (dekripsi/enkripsi). Di komputer modern, latensi adalah 5–15 milidetik per permintaan. Untuk pengujian kinerja, disarankan menonaktifkan SSL-proxy untuk sumber daya statis (CSS, JS, gambar) melalui Recording Control.
Charles mendukung ekspor ke format: .chls (asli, untuk dibuka kembali di Charles), HAR (HTTP Archive, terbuka di browser dan alat lain), CSV (untuk diproses di Excel atau spreadsheet), Trace (untuk mengekspor permintaan tertentu dalam format kompatibel curl). Ekspor melalui menu File → Export Session.
Ringkasan
Kami akan mengembangkan aplikasi seluler turnkey
IT Sectr membuat aplikasi iOS dan Android untuk startup dan bisnis sejak 2017. Kami akan memberi saran dan mengusulkan solusi terbaik.
Baca juga