A Charles Proxy egy többplatformos proxy-szerver HTTP/HTTPS-forgalom hibakereséséhez, amelyet fejlesztők használnak hálózati kérések elfogására, megtekintésére és módosítására. Karl von Randow, az eszköz alkotója (2025) szerint a Charles-t 2004 óta világszerte több mint 50 000 vállalat használja. A proxy támogatja a forgalom elfogását mobileszközökről WiFi-n keresztül, a HTTPS-proxyzást gyökértanúsítvány telepítésével, valamint az API-elemzéshez szükséges eszközök széles skáláját.
Főbb pontok
A Charles Proxy egy HTTP-proxy és HTTP-figyelő, amely közvetítőként működik a kliens és a szerver között. Minden kérés és válasz áthalad a Charles-on, lehetővé téve a tartalom megtekintését, a struktúra elemzését, az adatok valós idejű módosítását és különböző hálózati körülmények szimulálását. Elérhető Windows, macOS és Linux rendszerekre.
A Charles Proxy-t 2004-ben hozta létre Karl von Randow, és a hálózati forgalom hibakeresésének egyik legnépszerűbb eszköze maradt. Az ingyenes alternatívákkal ellentétben a Charles fizetős licencet kínál 30 napos próbaidőszakkal. Az eszköz professzionális megoldásként pozicionálódik mobilalkalmazás-fejlesztők, webfejlesztők és QA-mérnökök számára, akiknek teljes körű ellenőrzésre van szükségük a HTTP-kommunikáció felett.
A Charles rendszerproxyként működik a számítógépen, és képes forgalmat elfogni bármely eszközről ugyanazon a hálózaton: Android, iOS, szimulátorok, emulátorok, webböngészők és IoT-eszközök. A HTTPS elfogásához telepíteni kell a Charles gyökértanúsítványát minden eszközre. A forgalom HTTP/1.1 és HTTP/2 (részleges) támogatással rendelkezik. A HTTP/3 (QUIC) nem támogatott az elfogás szintjén.
A Charles a MITM (Man-in-the-Middle) proxy elvén működik: amikor egy kliens kérést küld a Charles-on keresztül, az eszköz elfogja ezt a kérést, továbbítja a célkiszolgálónak, megkapja a választ, és visszaküldi a kliensnek. Minden forgalom áthalad a Charles-on, lehetővé téve az elemzést és módosítást.
Indításkor a Charles létrehoz egy helyi HTTP-proxyt a 8888-as porton (alapértelmezett). Az operációs rendszer vagy alkalmazás a proxy használatára van konfigurálva. Az összes HTTP-kérés először a Charles-hoz kerül, amely aztán teljes értékű kliensként működik a célkiszolgáló számára. HTTPS esetén a Charles saját SSL-proxy technikáját használja: menet közben generál egy tanúsítványt minden domainhez, amelyet a Charles gyökértanúsítványa ír alá. Ha a gyökértanúsítvány megbízhatóként van telepítve az eszközön, a Charles képes visszafejteni és megtekinteni a HTTPS-forgalmat.
A Charles két módot támogat: Proxy (klasszikus proxy-szerver) és SOCKS Proxy (UDP és TCP forgalomhoz). Webfejlesztéshez a szabványos HTTP-proxy használatos. Mobileszközökhöz — WiFi Proxy konfiguráció az eszközön a Charles-t futtató számítógép IP-címének megadásával. A MacOS támogatja az automatikus proxy konfigurációt az iOS szimulátor számára.
<!-- A network_security_config.xml konfigurálása Androidhoz Charles támogatással -->
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<debug-overrides>
<trust-anchors>
<!-- Bízzon a Charles tanúsítványban a Debug építésben -->
<certificates src="user" />
</trust-anchors>
</debug-overrides>
</network-security-config>
A Charles Proxy a forgalom elemzéséhez és módosításához professzionális eszközkészletet biztosít, amely messze túlmutat az egyszerű kéréselfogáson.
A Rewrite eszköz lehetővé teszi a kérések vagy válaszok bizonyos részeinek automatikus módosítását: fejlécek, URL-paraméterek, válasz törzse. Például lecserélheti a User-Agent fejlécet egy másik eszköz értékére, vagy eltávolíthat bizonyos cookie-kat. A Breakpoints úgy működik, mint egy hibakereső: a kérés a kiválasztott szakaszban (küldés előtt vagy fogadás előtt) megáll, és a fejlesztő manuálisan módosíthatja a tartalmát, mielőtt az továbbhaladna. Ez hasznos a hibaválaszok vagy nem szabványos állapotok kezelésének teszteléséhez.
A Map Local lehetővé teszi egy hálózati erőforrás (CSS, JS, JSON) lemezről származó helyi fájlra cserélését. Ez nélkülözhetetlen a frontend-fejlesztésben: módosíthatja a CSS/JS-t, és azonnal láthatja az eredményt anélkül, hogy telepítené a szerverre. A Map Remote átirányítja a kéréseket egyik URL-ről a másikra — például az éles szerverről a stagingre tesztelés céljából. Mindkét eszköz URL-mintákkal működik, wildcard támogatással.
A Throttle eszköz lehetővé teszi különböző típusú hálózati kapcsolatok szimulálását előre beállított profilok alapján: 3G, EDGE, GPRS, DSL, WiFi. Beállíthat sebességkorlátozást (letöltés/feltöltés), késleltetést, csomagvesztést és stabilitást. Ez kritikus fontosságú az alkalmazás viselkedésének teszteléséhez lassú vagy instabil kapcsolat esetén — időtúllépések megfelelő kezelése, újrapróbálkozások, offline mód.
| Profil | Letöltés | Feltöltés | Késleltetés | Tipikus forgatókönyv |
|---|---|---|---|---|
| 3G | 780 kbps | 330 kbps | 200 ms | Tesztelés gyenge mobil jellel |
| EDGE | 130 kbps | 50 kbps | 400 ms | Rendkívül lassú kapcsolat |
| GPRS | 50 kbps | 20 kbps | 500 ms | Minimális lehetséges kapcsolat |
| DSL | 2 Mbps | 256 kbps | 50 ms | Otthoni vezetékes kapcsolat |
| WiFi | 10 Mbps | 10 Mbps | 10 ms | Jó WiFi kapcsolat |
A Charles automatikusan mentheti a forgalmi munkameneteket .chls fájlokba, lehetővé téve a későbbi elemzést vagy a kollégákkal való megosztást. A Recording Control lehetővé teszi a mentendő forgalom rugalmas konfigurálását: domain, tartalomtípus, állapotkód alapján. Ez kényelmes az API hosszú távú monitorozásához.
A mobilalkalmazások forgalmának hibakereséséhez a Charles WiFi Proxy-ként van konfigurálva: a számítógéppel azonos hálózaton lévő összes eszköz irányíthatja a forgalmat a Charles-on keresztül. A HTTPS helyes beállításához telepíteni kell a Charles tanúsítványát a mobileszközre.
Android esetén: nyissa meg a Beállítások → WiFi → Speciális → Proxy menüt, válassza a Kézi lehetőséget, és adja meg a számítógép IP-címét a 8888-as porttal. Ezután nyissa meg a böngészőt az eszközön, és látogasson el a http://chls.pro/ssl címre a Charles tanúsítvány letöltéséhez. Android 7+ (API 24+) rendszeren network_security_config.xml szükséges a felhasználói tanúsítványok megbízhatóságához Debug buildben — ellenkező esetben az alkalmazás nem engedheti át a forgalmat a Charles-on keresztül.
iOS esetén: Beállítások → WiFi → proxy konfigurálása IP-címre és 8888-as portra. Majd Safari → http://chls.pro/ssl → tanúsítványprofil telepítése. iOS 10.3+ rendszeren engedélyeznie kell a tanúsítvány megbízhatóságát: Beállítások → Általános → Névjegy → Tanúsítvány-megbízhatósági beállítások → Charles Proxy engedélyezése. Az iOS szigorúbb a tanúsítványokkal: egyes alkalmazások SSL Pinning-et használhatnak, blokkolva a forgalmat a Charles-on keresztül még megbízható tanúsítvány esetén is.
Ha az alkalmazás SSL Pinning-et (szervertanúsítvány rögzítése) használ, a szabványos proxyzás a Charles-on keresztül nem fog működni — az alkalmazás elutasítja a Charles tanúsítványát. Megoldások: az SSL Pinning kikapcsolása Debug buildben az OkHttp vagy URLSession beállításain keresztül, a Frida használata a pinning megkerülésére futási időben, vagy Android Emulator használata root hozzáféréssel.
A Charles Proxy specifikus fejlesztési és tesztelési feladatokat old meg. Tekintsük át a leggyakoribb forgatókönyveket, ahol az eszköz nélkülözhetetlen.
A leggyakoribb forgatókönyv — az API-kérések helyességének ellenőrzése. A Charles megjeleníti a kérés pontos URL-jét, fejléceit, törzsét, paramétereit. Ha a szerver váratlan választ ad, azonnal látható: a JSON struktúra, a hibakód, a válasz fejlécei. Ez lehetővé teszi a kliensoldali hiba megkülönböztetését a szerveroldali hibától anélkül, hogy mindkét oldalról naplókra lenne szükség.
A Throttle profilok segítségével ellenőrizheti, hogyan viselkedik az alkalmazás alacsony kapcsolati sebesség mellett: megjelenik-e a betöltésjelző, megfelelően kezeli-e az időtúllépést, lefagy-e a felület a kapcsolat megszakadásakor. Különösen fontos a gyorsítótárazás tesztelése — ha az adatok már betöltődtek, az alkalmazásnak a gyorsítótárból kell megjelenítenie azokat, nem szabad végtelen betöltésbe kezdenie.
A Breakpoints segítségével módosíthatja a szerver válaszát, mielőtt az elküldésre kerülne az alkalmazásnak. Például üres tömb visszaküldése adatok helyett, állapotkód módosítása 500-ra, új mező hozzáadása a JSON-hoz. Ez lehetővé teszi a határesetek kezelésének tesztelését a szerverkód módosítása nélkül — a Charles egyik legerősebb alkalmazása a mobilfejlesztésben.
Gyakran Ismételt Kérdések
A Charles Proxy egy kereskedelmi termék 30 napos próbaidőszakkal. A próbaidőszak lejárta után a program 30 perces szünettel működik tovább minden indításkor. A licenc ára 50 dollár másolatonként. Vannak ingyenes alternatívák, mint a Proxyman (macOS) és a mitmproxy (többplatformos).
Igen, az iOS szimulátor automatikusan a macOS rendszerproxyját használja. Elég elindítani a Charles-t és engedélyezni az SSL-proxyzást — a szimulátor teljes forgalma elfogásra kerül. A tanúsítvány beállítása a szimulátorhoz automatikusan történik, csak a Charles tanúsítványát kell megbízni a macOS kulcstartóban.
Főbb különbségek: A Charles többplatformos (Windows, macOS, Linux), a Proxyman — csak macOS és iOS. A Charles szélesebb eszközkészlettel rendelkezik (Rewrite, Map Local, Repeat, Auto Save), de fizetős. A Proxyman az alapfunkciókhoz ingyenes, modern felülettel és natív iOS szimulátor integrációval.
A Charles késleltetést ad hozzá, amikor a forgalom áthalad a proxyn, különösen aktív SSL-proxyzás esetén (visszafejtés/titkosítás). Modern számítógépeken a késleltetés 5–15 ezredmásodperc kérésenként. Teljesítménytesztekhez ajánlott az SSL-proxyzás kikapcsolása a statikus erőforrásokhoz (CSS, JS, képek) a Recording Control segítségével.
A Charles exportálást támogat a következő formátumokba: .chls (natív, a Charles-ban való újranyitáshoz), HAR (HTTP Archive, böngészőkben és más eszközökben nyílik meg), CSV (Excelben vagy táblázatokban történő feldolgozáshoz), Trace (egy adott kérés exportálásához curl-kompatibilis formátumban). Exportálás a File → Export Session menüponton keresztül.
Összefoglalás
Kulcsrakész mobilalkalmazást fejlesztünk
Az IT Sectr 2017 óta készít iOS és Android alkalmazásokat induló vállalkozásoknak és vállalkozásoknak. Tanácsot adunk, és a legjobb megoldást javasoljuk.
Olvassa el is