Charles Proxy — HTTP/HTTPS trafikinin debug edilməsi üçün çoxplatformalı proksi-serverdir, şəbəkə sorğularını ələ keçirmək, baxmaq və dəyişdirmək üçün tərtibatçılar tərəfindən istifadə olunur. Karl von Randow, alətin yaradıcısı (2025) məlumatına görə, Charles 2004-cü ildən bəri dünya üzrə 50 000-dən çox şirkətdə istifadə olunur. Proksi WiFi vasitəsilə mobil cihazlardan trafikin ələ keçirilməsini, kök sertifikatının quraşdırılması ilə HTTPS-proksiləşdirməni və API analizi üçün geniş alətlər dəstini dəstəkləyir.
Əsas məqamlar
Charles Proxy — müştəri və server arasında vasitəçi kimi işləyən HTTP-proksi və HTTP-monitordur. Bütün sorğu və cavablar Charles-dan keçir ki, bu da onların məzmununa baxmağa, strukturu təhlil etməyə, məlumatları real vaxtda dəyişdirməyə və müxtəlif şəbəkə şərtlərini simulyasiya etməyə imkan verir. Windows, macOS və Linux üçün mövcuddur.
Charles Proxy 2004-cü ildə Karl fon Randow tərəfindən yaradılmış və şəbəkə trafikinin debug edilməsi üçün ən populyar alətlərdən biri olaraq qalır. Pulsuz alternativlərdən fərqli olaraq, Charles 30 günlük sınaq müddəti ilə pullu lisenziya təklif edir. Alət HTTP kommunikasiyaları üzərində tam nəzarətə ehtiyacı olan mobil tətbiq tərtibatçıları, veb-tərtibatçılar və QA mühəndisləri üçün peşəkar həll kimi mövqeləşdirilir.
Charles kompüterdə sistem proksisi kimi işləyir və eyni şəbəkədəki istənilən cihazdan trafiki ələ keçirə bilər: Android, iOS, simulyatorlar, emulyatorlar, veb-brauzerlər və IoT cihazları. HTTPS-ni ələ keçirmək üçün hər bir cihazda Charles kök sertifikatını quraşdırmaq lazımdır. Trafik HTTP/1.1 və HTTP/2 (qismən) dəstəklənir. HTTP/3 (QUIC) ələ keçirmə səviyyəsində dəstəklənmir.
Charles MITM (Man-in-the-Middle) proksi prinsipi ilə işləyir: müştəri Charles vasitəsilə sorğu göndərdikdə, alət bu sorğunu ələ keçirir, hədəf serverə yönləndirir, cavabı alır və müştəriyə qaytarır. Bütün trafik Charles-dan keçir ki, bu da onu təhlil etməyə və dəyişdirməyə imkan verir.
Charles işə salındıqda 8888 portunda (standart) lokal HTTP-proksi yaradır. Əməliyyat sistemi və ya tətbiq bu proksidən istifadə etmək üçün konfiqurasiya edilir. Bütün HTTP sorğuları əvvəlcə Charles-a göndərilir, o da hədəf server üçün tam hüquqlu müştəri kimi çıxış edir. HTTPS üçün Charles öz SSL-proksiləşdirmə texnikasından istifadə edir: hər bir domen üçün Charles kök sertifikatı ilə imzalanmış sertifikat yaradır. Kök sertifikat cihazda etibarlı kimi quraşdırılıbsa, Charles HTTPS trafikini şifrədən çıxara və baxa bilər.
Charles iki rejimi dəstəkləyir: Proxy (klassik proksi-server) və SOCKS Proxy (UDP və TCP trafiki üçün). Veb-inkişaf üçün standart HTTP-proksi istifadə olunur. Mobil cihazlar üçün — Charles-ın işlədiyi kompüterin IP ünvanı göstərilməklə cihazda WiFi Proxy qurulumu. MacOS iOS simulyatoru üçün avtomatik proksi konfiqurasiyasını dəstəkləyir.
<!-- Android üçün Charles dəstəyi ilə network_security_config.xml-in qurulması -->
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<debug-overrides>
<trust-anchors>
<!-- Debug quruluşunda Charles sertifikatına etibar et -->
<certificates src="user" />
</trust-anchors>
</debug-overrides>
</network-security-config>
Charles Proxy sadə sorğu ələ keçirməkdən çox kənara çıxan peşəkar alətlər dəsti təqdim edir.
Rewrite aləti sorğu və ya cavabların müəyyən hissələrini avtomatik dəyişdirməyə imkan verir: başlıqlar, URL parametrləri, cavab məzmunu. Məsələn, User-Agent başlığını başqa cihazın dəyəri ilə əvəz etmək və ya müəyyən cookies-ləri silmək olar. Breakpoints debugger kimi işləyir: sorğu seçilmiş mərhələdə (göndərməzdən əvvəl və ya almazdan əvvəl) dayandırılır və tərtibatçı onun məzmununu əl ilə dəyişə bilər. Bu, səhv cavabların və ya qeyri-standart vəziyyətlərin işlənməsini test etmək üçün faydalıdır.
Map Local şəbəkə resursunu (CSS, JS, JSON) diskdəki lokal faylla əvəz etməyə imkan verir. Bu, frontend inkişafında əvəzolunmazdır: CSS/JS dəyişdirmək və serverə yerləşdirmədən dərhal nəticəni görmək olar. Map Remote sorğuları bir URL-dən digərinə yönləndirir — məsələn, test etmək üçün istehsal serverindən staging-ə. Hər iki alət wildcards dəstəyi ilə URL şablonları üzrə işləyir.
Throttle aləti əvvəlcədən təyin edilmiş profillər üzrə müxtəlif şəbəkə bağlantı növlərini simulyasiya etməyə imkan verir: 3G, EDGE, GPRS, DSL, WiFi. Sürət məhdudiyyəti (download/upload), gecikmə, paket itkisi və sabitlik konfiqurasiya edilə bilər. Bu, yavaş və ya qeyri-sabit bağlantıda tətbiq davranışını test etmək üçün kritik əhəmiyyətlidir — timeoutların düzgün işlənməsi, təkrar cəhdlər, oflayn rejim.
| Profil | Download | Upload | Gecikmə | Tipik ssenari |
|---|---|---|---|---|
| 3G | 780 kbps | 330 kbps | 200 ms | Zəif mobil siqnalda test |
| EDGE | 130 kbps | 50 kbps | 400 ms | Həddindən artıq yavaş bağlantı |
| GPRS | 50 kbps | 20 kbps | 500 ms | Mümkün olan minimal bağlantı |
| DSL | 2 Mbps | 256 kbps | 50 ms | Ev naqilli bağlantısı |
| WiFi | 10 Mbps | 10 Mbps | 10 ms | Yaxşı WiFi bağlantısı |
Charles trafik sessiyalarını avtomatik olaraq .chls fayllarına saxlaya bilər ki, bu da onları sonra təhlil etməyə və ya həmkarlara ötürməyə imkan verir. Recording Control hansı trafikin saxlanacağını çevik şəkildə konfiqurasiya etməyə imkan verir: domenlər, məzmun növləri, status kodları üzrə. Bu, API-nin uzunmüddətli monitorinqi üçün əlverişlidir.
Mobil tətbiqlərin trafikini debug etmək üçün Charles WiFi Proxy kimi konfiqurasiya edilir: kompüterlə eyni şəbəkədəki bütün cihazlar trafiki Charles üzərindən yönləndirə bilər. HTTPS-nin düzgün qurulması mobil cihazda Charles sertifikatının quraşdırılmasını tələb edir.
Android üçün lazımdır: Parametrlər → WiFi → Qabaqcıl → Proxy açmaq, Manual seçmək və 8888 portu ilə kompüterin IP ünvanını göstərmək. Bundan sonra cihazda brauzeri açıb sertifikatı yükləmək üçün http://chls.pro/ssl ünvanına keçin. Android 7+ (API 24+) sistemində Debug quruluşunda istifadəçi sertifikatlarına etibar etmək üçün network_security_config.xml tələb olunur — əks halda tətbiq trafiki Charles-dan keçirməyə bilər.
iOS üçün: Parametrlər → WiFi → proksini konfiqurasiya et IP və 8888 portuna. Sonra Safari → http://chls.pro/ssl → sertifikat profilini quraşdırın. iOS 10.3+-də əlavə olaraq sertifikata etibarı aktivləşdirmək lazımdır: Parametrlər → Ümumi → Haqqında → Sertifikat Etibar Parametrləri → Charles Proxy-ni aktiv edin. iOS sertifikatlarla bağlı daha sərtdir: bəzi tətbiqlər hətta etibarlı sertifikatla belə Charles üzərindən trafiki bloklayan SSL Pinning istifadə edə bilər.
Əgər tətbiq SSL Pinning (server sertifikatının bərkidilməsi) istifadə edirsə, Charles vasitəsilə standart proksiləşdirmə işləməyəcək — tətbiq Charles sertifikatını rədd edəcək. Həll yolları: OkHttp və ya URLSession parametrləri ilə Debug quruluşunda SSL Pinning-i söndürmək, runtime-da pinning-i keçmək üçün Frida istifadə etmək və ya kök girişi olan Android Emulator tətbiq etmək.
Charles Proxy konkret inkişaf və test tapşırıqlarını həll edir. Alətin əvəzolunmaz olduğu ən çox yayılmış ssenarilərə baxaq.
Ən çox yayılmış ssenari — API sorğularının düzgünlüyünün yoxlanılması. Charles sorğunun dəqiq URL-ni, başlıqları, məzmunu, parametrləri göstərir. Server gözlənilməz cavab qaytarırsa, dərhal görünür: JSON strukturu, səhv kodu, cavab başlıqları. Bu, hər iki tərəfdən log olmadan müştəri səhvini server səhvindən ayırmağa imkan verir.
Throttle profillərindən istifadə edərək, tətbiqin aşağı bağlantı sürətində necə davrandığını yoxlamaq olar: yükləmə göstəricisi göstərilirmi, timeout düzgün işlənirmi, bağlantı itkisində UI donurmu. Xüsusilə keşləməni test etmək vacibdir — məlumatlar artıq yüklənibsə, tətbiq onları keşdən göstərməlidir, sonsuz yüklənməyə getməməlidir.
Breakpoints vasitəsilə server cavabını dəyişdirmək olar. Məsələn, məlumatların yerinə boş massiv qaytarmaq, status kodunu 500-ə dəyişmək, JSON-a yeni sahə əlavə etmək. Bu, server kodunu dəyişmədən sərhəd hallarının işlənməsini yoxlamağa imkan verir — mobil inkişafda Charles-ın ən güclü tətbiqlərindən biridir.
Tez-tez verilən suallar
Charles Proxy kommersiya məhsuludur 30 günlük sınaq müddəti ilə. Sınaq müddəti bitdikdən sonra proqram hər işə salınanda 30 dəqiqəlik fasilə ilə işləməyə davam edir. Lisenziyanın dəyəri bir nüsxə üçün 50$ təşkil edir. Proxyman (macOS) və mitmproxy (çoxplatformalı) kimi pulsuz alternativlər mövcuddur.
Bəli, iOS simulyatoru avtomatik olaraq macOS sistem proksisindən istifadə edir. Charles-ı işə salmaq və SSL-proksiləşdirməni aktiv etmək kifayətdir — simulyatorun bütün trafiki ələ keçiriləcək. Simulyator üçün sertifikat qurulumu avtomatik baş verir, yalnız macOS açar paketində Charles sertifikatına etibar etmək tələb olunur.
Əsas fərqlər: Charles çoxplatformalıdır (Windows, macOS, Linux), Proxyman — yalnız macOS və iOS. Charles daha geniş alətlər dəstinə malikdir (Rewrite, Map Local, Repeat, Auto Save), lakin pulludur. Proxyman əsas funksionallıq üçün pulsuzdur, müasir interfeys və iOS simulyatoru ilə native inteqrasiyaya malikdir.
Charles proksidən trafik keçərkən gecikmə əlavə edir, xüsusilə aktiv SSL-proksiləşdirmədə (şifrədənçıxarma/şifrələmə). Müasir kompüterlərdə gecikmə sorğu üçün 5–15 millisaniyə təşkil edir. Məhsuldarlıq testləri üçün Recording Control vasitəsilə statik resurslar (CSS, JS, şəkillər) üçün SSL-proksiləşdirməni söndürmək tövsiyə olunur.
Charles aşağıdakı formatlara ixracı dəstəkləyir: .chls (öz formatı, Charles-da yenidən açmaq üçün), HAR (HTTP Archive, brauzerlərdə və digər alətlərdə açılır), CSV (Excel və ya cədvəllərdə işlənmək üçün), Trace (curl-uyğun formatda konkret sorğunun ixracı üçün). İxrac File → Export Session menyusu vasitəsilə həyata keçirilir.
Nəticə
Açar təslim mobil tətbiq hazırlayacağıq
IT Sectr 2017-ci ildən startaplar və bizneslər üçün iOS və Android tətbiqləri yaradır. Sizə məsləhət verəcəyik və ən yaxşı həlli təklif edəcəyik.
Həm də oxuyun