Charles Proxy je multiplatformní proxy server pro ladění HTTP/HTTPS provozu, používaný vývojáři k zachycování, prohlížení a úpravám síťových požadavků. Podle Karla von Randowa, tvůrce nástroje (2025), je Charles používán ve více než 50 000 společnostech po celém světě od roku 2004. Proxy podporuje zachycování provozu z mobilních zařízení přes WiFi, HTTPS proxy s instalací kořenového certifikátu a širokou sadu nástrojů pro analýzu API.
Hlavní body
Charles Proxy je HTTP proxy a HTTP monitor, který funguje jako prostředník mezi klientem a serverem. Všechny požadavky a odpovědi procházejí přes Charles, což umožňuje prohlížet jejich obsah, analyzovat strukturu, upravovat data v reálném čase a simulovat různé síťové podmínky. K dispozici pro Windows, macOS a Linux.
Charles Proxy byl vytvořen v roce 2004 Karlem von Randowem a zůstává jedním z nejoblíbenějších nástrojů pro ladění síťového provozu. Na rozdíl od bezplatných alternativ nabízí Charles placenou licenci s 30denní zkušební dobou. Nástroj je positioning jako profesionální řešení pro vývojáře mobilních aplikací, webové vývojáře a QA inženýry, kteří potřebují plnou kontrolu nad HTTP komunikací.
Charles funguje jako systémová proxy na počítači a může zachycovat provoz z libovolných zařízení ve stejné síti: Android, iOS, simulátory, emulátory, webové prohlížeče a IoT zařízení. Pro zachycení HTTPS je třeba nainstalovat kořenový certifikát Charles na každé zařízení. Provoz je podporován na HTTP/1.1 a HTTP/2 (částečně). HTTP/3 (QUIC) není podporován na úrovni zachycování.
Charles pracuje na principu MITM (Man-in-the-Middle) proxy: když klient odešle požadavek přes Charles, nástroj tento požadavek zachytí, přepošle na cílový server, přijme odpověď a vrátí ji klientovi. Veškerý provoz prochází přes Charles, což umožňuje jeho analýzu a úpravu.
Při spuštění Charles vytvoří lokální HTTP proxy na portu 8888 (výchozí). Operační systém nebo aplikace je nakonfigurována pro použití této proxy. Všechny HTTP požadavky jsou nejprve odeslány na Charles, který pak funguje jako plnohodnotný klient pro cílový server. Pro HTTPS Charles používá vlastní techniku SSL proxy: generuje certifikát za běhu pro každou doménu, podepsaný kořenovým certifikátem Charles. Pokud je kořenový certifikát nainstalován jako důvěryhodný na zařízení, Charles může dešifrovat a prohlížet HTTPS provoz.
Charles podporuje dva režimy: Proxy (klasický proxy server) a SOCKS Proxy (pro UDP a TCP provoz). Pro webový vývoj se používá standardní HTTP proxy. Pro mobilní zařízení — konfigurace WiFi Proxy na zařízení s uvedením IP adresy počítače, na kterém Charles běží. MacOS podporuje automatickou konfiguraci proxy pro iOS simulátor.
<!-- Konfigurace network_security_config.xml pro Android s podporou Charles -->
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<debug-overrides>
<trust-anchors>
<!-- Důvěřovat certifikátu Charles v Debug sestavení -->
<certificates src="user" />
</trust-anchors>
</debug-overrides>
</network-security-config>
Charles Proxy poskytuje sadu profesionálních nástrojů pro analýzu a úpravu provozu, která jde daleko za pouhé zachycování požadavků.
Nástroj Rewrite umožňuje automatickou změnu určitých částí požadavků nebo odpovědí: hlavičky, parametry URL, tělo odpovědi. Můžete například nahradit hlavičku User-Agent hodnotou z jiného zařízení nebo odstranit konkrétní cookies. Breakpoints fungují jako debugger: požadavek je pozastaven ve zvolené fázi (před odesláním nebo před přijetím) a vývojář může ručně upravit jeho obsah, než pokračuje dále. To je užitečné pro testování zpracování chybových odpovědí nebo nestandardních stavů.
Map Local umožňuje nahradit síťový zdroj (CSS, JS, JSON) lokálním souborem na disku. To je nepostradatelné při vývoji frontendu: můžete upravit CSS/JS a okamžitě vidět výsledek bez nasazení na server. Map Remote přesměrovává požadavky z jedné URL na jinou — například z produkčního serveru na staging pro testování. Oba nástroje pracují na základě URL vzorů s podporou wildcards.
Nástroj Throttle umožňuje simulovat různé typy síťových připojení podle přednastavených profilů: 3G, EDGE, GPRS, DSL, WiFi. Lze nastavit omezení rychlosti (download/upload), latenci, ztrátu paketů a stabilitu. To je kritické pro testování chování aplikace při pomalém nebo nestabilním připojení — správné zpracování timeoutů, opakované pokusy, offline režim.
| Profil | Download | Upload | Latence | Typický scénář |
|---|---|---|---|---|
| 3G | 780 kbps | 330 kbps | 200 ms | Testování se slabým mobilním signálem |
| EDGE | 130 kbps | 50 kbps | 400 ms | Extrémně pomalé připojení |
| GPRS | 50 kbps | 20 kbps | 500 ms | Minimální možné připojení |
| DSL | 2 Mbps | 256 kbps | 50 ms | Domácí kabelové připojení |
| WiFi | 10 Mbps | 10 Mbps | 10 ms | Dobré WiFi připojení |
Charles může automaticky ukládat relace provozu do souborů .chls, což umožňuje pozdější analýzu nebo sdílení s kolegy. Recording Control umožňuje flexibilní konfiguraci, který provoz se má ukládat: podle domén, typů obsahu, stavových kódů. To je vhodné pro dlouhodobé monitorování API.
Pro ladění provozu mobilních aplikací je Charles nakonfigurován jako WiFi Proxy: všechna zařízení ve stejné síti jako počítač mohou směrovat provoz přes Charles. Správné nastavení HTTPS vyžaduje instalaci Charles certifikátu na mobilní zařízení.
Pro Android: otevřete Nastavení → WiFi → Pokročilé → Proxy, vyberte Ruční a zadejte IP adresu počítače s portem 8888. Poté otevřete prohlížeč na zařízení a přejděte na adresu http://chls.pro/ssl pro stažení Charles certifikátu. Na Android 7+ (API 24+) je vyžadován network_security_config.xml pro důvěru uživatelským certifikátům v Debug sestavení — jinak aplikace nemusí směrovat provoz přes Charles.
Pro iOS: Nastavení → WiFi → nakonfigurovat proxy na IP a port 8888. Poté Safari → http://chls.pro/ssl → nainstalovat profil certifikátu. V iOS 10.3+ je třeba povolit důvěru certifikátu: Nastavení → Obecné → Informace → Nastavení důvěry certifikátů → povolit Charles Proxy. iOS je přísnější s certifikáty: některé aplikace mohou používat SSL Pinning, blokující provoz přes Charles i s důvěryhodným certifikátem.
Pokud aplikace používá SSL Pinning (připnutí certifikátu serveru), standardní proxy přes Charles nebude fungovat — aplikace odmítne Charles certifikát. Řešení: deaktivovat SSL Pinning v Debug sestavení přes nastavení OkHttp nebo URLSession, použít Frida pro obejití pinningu za běhu, nebo použít Android Emulator s root přístupem.
Charles Proxy řeší konkrétní vývojové a testovací úkoly. Podívejme se na nejčastější scénáře, kde je nástroj nepostradatelný.
Nejčastější scénář — kontrola správnosti API požadavků. Charles zobrazuje přesnou URL požadavku, hlavičky, tělo, parametry. Pokud server vrátí neočekávanou odpověď, jsou okamžitě viditelné: JSON struktura, kód chyby, hlavičky odpovědi. To umožňuje rozlišit chybu na straně klienta od chyby na straně serveru bez logů z obou stran.
Pomocí Throttle profilů můžete otestovat, jak se aplikace chová při nízké rychlosti připojení: zda se zobrazuje indikátor načítání, zda je timeout správně zpracován, zda UI zamrzá při ztrátě připojení. Testování cache je obzvláště důležité — pokud jsou data již načtena, aplikace by je měla zobrazit z cache, nikoli vstoupit do nekonečného načítání.
Pomocí Breakpoints můžete změnit odpověď serveru před jejím odesláním do aplikace. Například vrátit prázdné pole místo dat, změnit stavový kód na 500, přidat nové pole do JSON. To umožňuje testování zpracování okrajových případů bez úpravy kódu serveru — jedna z nejsilnějších aplikací Charles v mobilním vývoji.
Často kladené otázky
Charles Proxy je komerční produkt s 30denní zkušební dobou. Po skončení zkušební doby program pokračuje v práci s 30minutovou přestávkou při každém spuštění. Cena licence je 50$ za kopii. Existují bezplatné alternativy, jako Proxyman (macOS) a mitmproxy (multiplatformní).
Ano, iOS simulátor automaticky používá systémovou proxy macOS. Stačí spustit Charles a zapnout SSL proxy — veškerý provoz simulátoru bude zachycen. Nastavení certifikátu pro simulátor probíhá automaticky, stačí pouze důvěřovat Charles certifikátu v klíčence macOS.
Hlavní rozdíly: Charles je multiplatformní (Windows, macOS, Linux), Proxyman — pouze macOS a iOS. Charles má širší sadu nástrojů (Rewrite, Map Local, Repeat, Auto Save), ale je placený. Proxyman je zdarma pro základní funkcionalitu, s moderním rozhraním a nativní integrací s iOS simulátorem.
Charles přidává latenci při průchodu provozu přes proxy, zejména při aktivním SSL proxy (dešifrování/šifrování). Na moderních počítačích je latence 5–15 milisekund na požadavek. Pro testy výkonu se doporučuje deaktivovat SSL proxy pro statické zdroje (CSS, JS, obrázky) přes Recording Control.
Charles podporuje export do formátů: .chls (vlastní, pro opětovné otevření v Charles), HAR (HTTP Archive, otevírá se v prohlížečích a dalších nástrojích), CSV (pro zpracování v Excelu nebo tabulkách), Trace (pro export konkrétního požadavku v curl-kompatibilním formátu). Export přes menu File → Export Session.
Shrnutí
Vyvineme mobilní aplikaci na klíč
IT Sectr vytváří aplikace pro iOS a Android pro startupy a podniky od roku 2017. Poradíme vám a navrhneme nejlepší řešení.
Přečtěte si také