Charles Proxy — vad är det, konfiguration och fångst av HTTPS-trafik

Författare: IT Sectr Publicerad: 2026-05-08 Lästid: 8 min

Charles Proxy är en plattformsoberoende proxyserver för felsökning av HTTP/HTTPS-trafik, som används av utvecklare för att fånga, visa och modifiera nätverksförfrågningar. Enligt Karl von Randow, skapare av verktyget (2025), har Charles använts i över 50 000 företag världen över sedan 2004. Proxyn stöder avlyssning av trafik från mobila enheter via WiFi, HTTPS-proxy med installation av rotcertifikat och en bred uppsättning verktyg för API-analys.

Huvudpunkter

  • Charles Proxy — en HTTP/HTTPS-proxyserver för att fånga och analysera nätverkstrafik med avancerade felsökningsfunktioner
  • HTTPS-proxy implementeras genom att installera Charles rotcertifikat på enheten, vilket gör det möjligt att visa krypterad trafik
  • Rewrite och Breakpoints — kraftfulla verktyg för att modifiera förfrågningar och svar i farten utan att ändra server- eller klientkod
  • Map Local och Map Remote gör det möjligt att ersätta nätverksresurser med lokala filer eller alternativa servrar för testning
  • Throttle — simulering av långsamma och instabila nätverksanslutningar för att testa applikationens beteende under dålig anslutning

Vad är Charles Proxy?

Charles Proxy är en HTTP-proxy och HTTP-övervakare som fungerar som en mellanhand mellan klient och server. Alla förfrågningar och svar passerar genom Charles, vilket gör det möjligt att visa deras innehåll, analysera struktur, modifiera data i realtid och simulera olika nätverksförhållanden. Tillgängligt för Windows, macOS och Linux.

Historia och positionering

Charles Proxy skapades 2004 av Karl von Randow och förblir ett av de mest populära verktygen för felsökning av nätverkstrafik. Till skillnad från gratisalternativ erbjuder Charles en betald licens med 30 dagars provperiod. Verktyget positioneras som en professionell lösning för mobilapputvecklare, webbutvecklare och QA-ingenjörer som behöver full kontroll över HTTP-kommunikation.

Plattformskompatibilitet

Charles fungerar som en systemproxy på datorn och kan avlyssna trafik från alla enheter i samma nätverk: Android, iOS, simulatorer, emulatorer, webbläsare och IoT-enheter. För HTTPS-avlyssning måste du installera Charles rotcertifikat på varje enhet. Trafik stöds på HTTP/1.1 och HTTP/2 (delvis). HTTP/3 (QUIC) stöds inte på avlyssningsnivå.

Hur Charles Proxy fungerar

Charles fungerar enligt MITM (Man-in-the-Middle)-proxyprincipen: när en klient skickar en begäran via Charles, fångar verktyget upp denna begäran, vidarebefordrar den till målservern, tar emot svaret och skickar tillbaka det till klienten. All trafik passerar genom Charles, vilket möjliggör analys och modifiering.

Proxyarkitektur

Vid start skapar Charles en lokal HTTP-proxy på port 8888 (standard). Operativsystemet eller applikationen konfigureras för att använda denna proxy. Alla HTTP-förfrågningar skickas först till Charles, som sedan fungerar som en fullvärdig klient för målservern. För HTTPS använder Charles sin egen SSL-proxyteknik: den genererar ett certifikat i farten för varje domän, signerat av Charles rotcertifikat. Om rotcertifikatet är installerat som betrott på enheten kan Charles dekryptera och visa HTTPS-trafik.

Arbetslägen

Charles stöder två lägen: Proxy (klassisk proxyserver) och SOCKS Proxy (för UDP- och TCP-trafik). För webbutveckling används standard HTTP-proxy. För mobila enheter — WiFi Proxy-konfiguration på enheten med angivande av IP-adressen till datorn som kör Charles. MacOS stöder automatisk proxykonfiguration för iOS-simulatorn.

xml
<!-- Konfiguration av network_security_config.xml för Android med Charles-stöd -->
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <debug-overrides>
        <trust-anchors>
            <!-- Lita på Charles-certifikatet i Debug-bygget -->
            <certificates src="user" />
        </trust-anchors>
    </debug-overrides>
</network-security-config>

Huvudfunktioner i Charles Proxy

Charles Proxy tillhandahåller en uppsättning professionella verktyg för trafikanalys och modifiering som går långt utöver enkel avlyssning av förfrågningar.

Rewrite och Breakpoints

Verktyget Rewrite möjliggör automatisk modifiering av vissa delar av förfrågningar eller svar: rubriker, URL-parametrar, svarskropp. Till exempel kan du ersätta User-Agent-rubriken med ett värde från en annan enhet eller ta bort specifika cookies. Breakpoints fungerar som en debugger: förfrågan pausas i ett valt skede (före sändning eller före mottagning) och utvecklaren kan manuellt modifiera dess innehåll innan det fortsätter. Detta är användbart för att testa hantering av felsvar eller icke-standardiserade tillstånd.

Map Local och Map Remote

Map Local gör det möjligt att ersätta en nätverksresurs (CSS, JS, JSON) med en lokal fil på disken. Detta är oumbärligt vid frontend-utveckling: du kan ändra CSS/JS och omedelbart se resultatet utan att distribuera till en server. Map Remote omdirigerar förfrågningar från en URL till en annan — till exempel från produktionsservern till staging för testning. Båda verktygen arbetar med URL-mönster som stöder wildcards.

Throttle och simulering av nätverksförhållanden

Verktyget Throttle simulerar olika typer av nätverksanslutningar med förinställda profiler: 3G, EDGE, GPRS, DSL, WiFi. Du kan konfigurera hastighetsgränser (nedladdning/uppladdning), latens, paketförlust och stabilitet. Detta är avgörande för att testa applikationsbeteende under långsam eller instabil anslutning — korrekt hantering av timeouts, återförsök, offline-läge.

ProfilNedladdningUppladdningLatensTypiskt scenario
3G780 kbps330 kbps200 msTestning med svag mobil signal
EDGE130 kbps50 kbps400 msExtremt långsam anslutning
GPRS50 kbps20 kbps500 msMinsta möjliga anslutning
DSL2 Mbps256 kbps50 msHemma trådbunden anslutning
WiFi10 Mbps10 Mbps10 msBra WiFi-anslutning

Auto Save och Recording

Charles kan automatiskt spara trafiksessioner till .chls-filer, vilket möjliggör senare analys eller delning med kollegor. Recording Control möjliggör flexibel konfiguration av vilken trafik som ska sparas: per domän, innehållstyp, statuskod. Detta är praktiskt för långsiktig API-övervakning.

Konfigurera Charles Proxy för mobila enheter

För felsökning av mobilapptrafik konfigureras Charles som en WiFi Proxy: alla enheter i samma nätverk som datorn kan dirigera trafik genom Charles. Korrekt HTTPS-konfiguration kräver installation av Charles-certifikatet på den mobila enheten.

Konfiguration på Android

För Android: öppna Inställningar → WiFi → Avancerat → Proxy, välj Manuell och ange datorns IP-adress med port 8888. Öppna sedan webbläsaren på enheten och gå till http://chls.pro/ssl för att ladda ner Charles-certifikatet. På Android 7+ (API 24+) krävs network_security_config.xml för att lita på användarcertifikat i Debug-bygget — annars kan appen vägra att dirigera trafik genom Charles.

Konfiguration på iOS

För iOS: Inställningar → WiFi → konfigurera proxy till IP och port 8888. Sedan Safari → http://chls.pro/ssl → installera certifikatprofil. På iOS 10.3+ måste du aktivera certifikatförtroende: Inställningar → Allmänt → Om → Inställningar för certifikatförtroende → aktivera Charles Proxy. iOS är strängare med certifikat: vissa appar kan använda SSL Pinning, vilket blockerar trafik genom Charles även med ett betrott certifikat.

Lösa SSL Pinning-problem

Om appen använder SSL Pinning (fastsättning av servercertifikat), kommer standardproxy genom Charles inte att fungera — appen kommer att avvisa Charles-certifikatet. Lösningar: inaktivera SSL Pinning i Debug-bygget via OkHttp- eller URLSession-inställningar, använd Frida för att kringgå pinning under körning, eller använd Android Emulator med root-åtkomst.

Praktiska användningsscenarier för Charles Proxy

Charles Proxy löser specifika utvecklings- och testuppgifter. Låt oss titta på de vanligaste scenarierna där verktyget är oumbärligt.

Felsökning av API-integration

Det vanligaste scenariot — kontroll av korrektheten hos API-förfrågningar. Charles visar den exakta URL:en för förfrågan, rubriker, kropp, parametrar. Om servern returnerar ett oväntat svar syns omedelbart: JSON-struktur, felkod, svarsrubriker. Detta gör det möjligt att skilja klientfel från serverfel utan loggar från båda sidor.

Testning med långsam anslutning

Med Throttle-profiler kan du testa hur appen beter sig vid låg anslutningshastighet: om en laddningsindikator visas, om timeout hanteras korrekt, om användargränssnittet fryser vid förlorad anslutning. Cachningstestning är särskilt viktigt — om data redan har laddats bör appen visa dem från cachen istället för att gå in i oändlig laddning.

Redigering av serversvar

Med Breakpoints kan du ändra serverns svar innan det skickas till appen. Till exempel returnera en tom array istället för data, ändra statuskoden till 500, lägga till ett nytt fält i JSON. Detta möjliggör testning av kantfalls hantering utan att ändra serverkoden — en av de kraftfullaste tillämpningarna av Charles inom mobilutveckling.

Vanliga frågor

Är Charles Proxy gratis?

Charles Proxy är en kommersiell produkt med 30 dagars provperiod. Efter provperiodens slut fortsätter programmet att fungera med en 30-minuters paus vid varje start. Licenskostnaden är 50$ per kopia. Det finns gratisalternativ som Proxyman (macOS) och mitmproxy (plattformsoberoende).

Kan jag fånga trafik från iOS-simulatorn?

Ja, iOS-simulatorn använder automatiskt macOS systemproxy. Starta bara Charles och aktivera SSL-proxy — all simulatorns trafik kommer att fångas. Certifikatkonfiguration för simulatorn sker automatiskt; du behöver bara lita på Charles-certifikatet i macOS-nyckelringen.

Hur skiljer sig Charles från Proxyman?

Huvudskillnader: Charles är plattformsoberoende (Windows, macOS, Linux), Proxyman — endast macOS och iOS. Charles har en bredare uppsättning verktyg (Rewrite, Map Local, Repeat, Auto Save) men är betald. Proxyman är gratis för grundläggande funktionalitet, med ett modernt gränssnitt och native integration med iOS-simulatorn.

Hur påverkar Charles Proxy prestandan?

Charles lägger till latens när trafik passerar genom proxyn, särskilt vid aktiv SSL-proxy (dekryptering/kryptering). På moderna datorer är latensen 5–15 millisekunder per förfrågan. För prestandatester rekommenderas att inaktivera SSL-proxy för statiska resurser (CSS, JS, bilder) via Recording Control.

Hur exporterar jag en session från Charles?

Charles stöder export till format: .chls (eget format, för att öppna igen i Charles), HAR (HTTP Archive, öppnas i webbläsare och andra verktyg), CSV (för bearbetning i Excel eller kalkylblad), Trace (för export av en specifik förfrågan i curl-kompatibelt format). Export via menyn File → Export Session.

Sammanfattning

  • Charles Proxy — en professionell HTTP/HTTPS-proxyserver för att fånga, visa och modifiera nätverkstrafik sedan 2004
  • Arbetsprincip — MITM-proxy: alla förfrågningar passerar Charles, vilket möjliggör analys och modifiering i farten
  • Kraftfulla verktyg: Rewrite, Breakpoints, Map Local, Map Remote, Throttle — för omfattande API-felsökning och testning av användarupplevelse
  • HTTPS-proxy kräver installation av Charles rotcertifikat på enheten, och för Android 7+ — network_security_config.xml i Debug-bygget
  • Throttle-profiler möjliggör simulering av 3G, EDGE, DSL och andra anslutningstyper för att testa appbeteende under verkliga förhållanden
  • Sessionsexport till HAR-, CSV- och .chls-format för analys, rapportering och delning med teamet
  • För projekt med begränsad budget, överväg gratisalternativ: Proxyman (macOS) eller mitmproxy (plattformsoberoende öppen källkod)

Vi utvecklar en mobil applikation nyckelfärdigt

IT Sectr skapar iOS- och Android-applikationer för startups och företag sedan 2017. Vi ger dig råd och föreslår den bästa lösningen.

Diskutera projektet

Läs också