Charles Proxy — co to jest, konfiguracja i przechwytywanie ruchu HTTPS

Autor: IT Sectr Opublikowano: 2026-05-08 Czas czytania: 8 min

Charles Proxy to wieloplatformowy serwer proxy do debugowania ruchu HTTP/HTTPS, używany przez programistów do przechwytywania, przeglądania i modyfikacji żądań sieciowych. Według Karla von Randow, twórcy narzędzia (2025), Charles jest używany w ponad 50 000 firm na całym świecie od 2004 roku. Proxy obsługuje przechwytywanie ruchu z urządzeń mobilnych przez WiFi, proxy HTTPS z instalacją certyfikatu głównego oraz szeroki zestaw narzędzi do analizy API.

Najważniejsze

  • Charles Proxy — to serwer proxy HTTP/HTTPS do przechwytywania i analizy ruchu sieciowego z zaawansowanymi możliwościami debugowania
  • Proxy HTTPS jest zaimplementowane poprzez instalację certyfikatu głównego Charles na urządzeniu, co pozwala przeglądać zaszyfrowany ruch
  • Rewrite i Breakpoints — potężne narzędzia do modyfikacji żądań i odpowiedzi w locie bez zmiany kodu serwera lub klienta
  • Map Local i Map Remote umożliwiają zastępowanie zasobów sieciowych plikami lokalnymi lub alternatywnymi serwerami do testowania
  • Throttle — symulacja wolnych i niestabilnych połączeń sieciowych do sprawdzania zachowania aplikacji w warunkach słabej łączności

Czym jest Charles Proxy?

Charles Proxy — to proxy HTTP i monitor HTTP, działający jako pośrednik między klientem a serwerem. Wszystkie żądania i odpowiedzi przechodzą przez Charles, co pozwala przeglądać ich zawartość, analizować strukturę, modyfikować dane w czasie rzeczywistym i symulować różne warunki sieciowe. Dostępny dla Windows, macOS i Linux.

Historia i pozycjonowanie

Charles Proxy został stworzony w 2004 roku przez Karla von Randow i pozostaje jednym z najpopularniejszych narzędzi do debugowania ruchu sieciowego. W przeciwieństwie do darmowych alternatyw, Charles oferuje płatną licencję z 30-dniowym okresem próbnym. Narzędzie jest pozycjonowane jako profesjonalne rozwiązanie dla programistów aplikacji mobilnych, web-developerów i inżynierów QA, którzy potrzebują pełnej kontroli nad komunikacją HTTP.

Zgodność z platformami

Charles działa jako systemowe proxy na komputerze i może przechwytywać ruch z dowolnych urządzeń w tej samej sieci: Android, iOS, symulatorów, emulatorów, przeglądarek internetowych i urządzeń IoT. Do przechwytywania HTTPS należy zainstalować certyfikat główny Charles na każdym urządzeniu. Ruch jest obsługiwany na HTTP/1.1 i HTTP/2 (częściowo). HTTP/3 (QUIC) nie jest obsługiwany na poziomie przechwytywania.

Jak działa Charles Proxy

Charles działa na zasadzie MITM (Man-in-the-Middle) proxy: gdy klient wysyła żądanie przez Charles, narzędzie przechwytuje to żądanie, przekierowuje do docelowego serwera, otrzymuje odpowiedź i przekazuje ją z powrotem do klienta. Cały ruch przechodzi przez Charles, co pozwala go analizować i modyfikować.

Architektura proxy

Po uruchomieniu Charles tworzy lokalne proxy HTTP na porcie 8888 (domyślnie). System operacyjny lub aplikacja jest konfigurowana do korzystania z tego proxy. Wszystkie żądania HTTP są najpierw wysyłane do Charles, który następnie działa jako pełnoprawny klient dla docelowego serwera. Dla HTTPS Charles używa własnej techniki SSL-proxy: generuje certyfikat w locie dla każdej domeny, podpisany certyfikatem głównym Charles. Jeśli certyfikat główny jest zainstalowany na urządzeniu jako zaufany, Charles może odszyfrowywać i przeglądać ruch HTTPS.

Tryby pracy

Charles obsługuje dwa tryby: Proxy (klasyczny serwer proxy) i SOCKS Proxy (dla ruchu UDP i TCP). Do tworzenia stron internetowych używa się standardowego HTTP-proxy. Dla urządzeń mobilnych — konfiguracja WiFi Proxy na urządzeniu z podaniem adresu IP komputera, na którym uruchomiono Charles. MacOS obsługuje automatyczną konfigurację proxy dla symulatora iOS.

xml
<!-- Konfiguracja network_security_config.xml dla Android z obsługą Charles -->
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <debug-overrides>
        <trust-anchors>
            <!-- Zaufać certyfikatowi Charles w kompilacji Debug -->
            <certificates src="user" />
        </trust-anchors>
    </debug-overrides>
</network-security-config>

Główne funkcje Charles Proxy

Charles Proxy udostępnia zestaw profesjonalnych narzędzi do analizy i modyfikacji ruchu, wykraczający daleko poza zwykłe przechwytywanie żądań.

Rewrite i Breakpoints

Narzędzie Rewrite umożliwia automatyczną zmianę określonych części żądań lub odpowiedzi: nagłówków, parametrów URL, treści odpowiedzi. Na przykład można zastąpić nagłówek User-Agent wartością z innego urządzenia lub usunąć określone cookies. Breakpoints działają jak debugger: żądanie jest zatrzymywane na wybranym etapie (przed wysłaniem lub przed otrzymaniem), a programista może ręcznie zmienić jego zawartość, zanim pójdzie dalej. Jest to przydatne do testowania obsługi błędnych odpowiedzi lub niestandardowych stanów.

Map Local i Map Remote

Map Local umożliwia zastąpienie zasobu sieciowego (CSS, JS, JSON) lokalnym plikiem z dysku. Jest to niezastąpione przy tworzeniu frontendu: można modyfikować CSS/JS i natychmiast widzieć wynik bez wdrażania na serwer. Map Remote przekierowuje żądania z jednego URL na inny — na przykład z serwera produkcyjnego na staging do testowania. Oba narzędzia działają na wzorcach URL z obsługą wildcards.

Throttle i symulacja warunków sieciowych

Narzędzie Throttle umożliwia symulację różnych typów połączeń sieciowych według predefiniowanych profili: 3G, EDGE, GPRS, DSL, WiFi. Można skonfigurować ograniczenie prędkości (download/upload), opóźnienie, utratę pakietów i stabilność. Jest to krytycznie ważne do testowania zachowania aplikacji przy wolnym lub niestabilnym połączeniu — prawidłowa obsługa timeoutów, ponawianie prób, tryb offline.

ProfilDownloadUploadOpóźnienieTypowy scenariusz
3G780 kbps330 kbps200 msTestowanie przy słabym sygnale komórkowym
EDGE130 kbps50 kbps400 msEkstremalnie wolne połączenie
GPRS50 kbps20 kbps500 msMinimalne możliwe połączenie
DSL2 Mbps256 kbps50 msDomowe połączenie przewodowe
WiFi10 Mbps10 Mbps10 msDobre połączenie WiFi

Auto Save i Recording

Charles może automatycznie zapisywać sesje ruchu do plików .chls, co pozwala analizować je później lub przekazywać współpracownikom. Recording Control umożliwia elastyczne skonfigurowanie, który ruch ma być zapisywany: według domen, typów treści, kodów statusu. Jest to wygodne do długoterminowego monitorowania działania API.

Konfiguracja Charles Proxy dla urządzeń mobilnych

Do debugowania ruchu aplikacji mobilnych Charles jest konfigurowany jako WiFi Proxy: wszystkie urządzenia w tej samej sieci co komputer mogą kierować ruch przez Charles. Prawidłowa konfiguracja HTTPS wymaga instalacji certyfikatu Charles na urządzeniu mobilnym.

Konfiguracja na Android

Dla Android należy: otworzyć Ustawienia → WiFi → Zaawansowane → Proxy, wybrać Manual i podać adres IP komputera z portem 8888. Następnie otworzyć przeglądarkę na urządzeniu i przejść pod adres http://chls.pro/ssl w celu pobrania certyfikatu Charles. Na Android 7+ (API 24+) wymagany jest network_security_config.xml do zaufania certyfikatom użytkownika w kompilacji Debug — w przeciwnym razie aplikacja może nie przepuszczać ruchu przez Charles.

Konfiguracja na iOS

Dla iOS: Ustawienia → WiFi → skonfiguruj proxy na IP i port 8888. Następnie Safari → http://chls.pro/ssl → zainstaluj profil certyfikatu. W iOS 10.3+ należy dodatkowo włączyć zaufanie do certyfikatu: Ustawienia → Ogólne → Informacje → Ustawienia zaufania certyfikatów → włączyć Charles Proxy. iOS jest bardziej rygorystyczny w kwestii certyfikatów: niektóre aplikacje mogą używać SSL Pinning, blokując ruch przez Charles nawet z zaufanym certyfikatem.

Rozwiązywanie problemów z SSL Pinning

Jeśli aplikacja używa SSL Pinning (przypięcie certyfikatu serwera), standardowe proxy przez Charles nie zadziała — aplikacja odrzuci certyfikat Charles. Rozwiązania: wyłączyć SSL Pinning w kompilacji Debug przez ustawienia OkHttp lub URLSession, użyć Fridy do obejścia pinning w runtime, lub zastosować Android Emulator z dostępem root.

Praktyczne scenariusze użycia Charles Proxy

Charles Proxy rozwiązuje konkretne zadania programistyczne i testowe. Rozważmy najczęstsze scenariusze, w których narzędzie jest niezastąpione.

Debugowanie integracji z API

Najczęstszy scenariusz — sprawdzanie poprawności żądań API. Charles pokazuje dokładny URL żądania, nagłówki, treść, parametry. Jeśli serwer zwraca nieoczekiwaną odpowiedź, od razu widać: strukturę JSON, kod błędu, nagłówki odpowiedzi. Pozwala to odróżnić błąd po stronie klienta od błędu po stronie serwera bez logów z obu stron.

Testowanie z wolnym połączeniem

Używając profili Throttle, można sprawdzić, jak aplikacja zachowuje się przy niskiej prędkości połączenia: czy wyświetlany jest wskaźnik ładowania, czy timeout jest prawidłowo obsługiwany, czy UI nie zawiesza się przy utracie połączenia. Szczególnie ważne jest testowanie buforowania — jeśli dane są już załadowane, aplikacja powinna wyświetlać je z pamięci podręcznej, a nie wchodzić w nieskończone ładowanie.

Edycja odpowiedzi serwera

Za pomocą Breakpoints można zmienić odpowiedź serwera przed jej wysłaniem do aplikacji. Na przykład zwrócić pustą tablicę zamiast danych, zmienić kod statusu na 500, dodać nowe pole do JSON. Pozwala to sprawdzić obsługę przypadków brzegowych bez modyfikacji kodu serwera — jedno z najpotężniejszych zastosowań Charles w programowaniu mobilnym.

Często zadawane pytania

Czy Charles Proxy jest darmowy?

Charles Proxy jest produktem komercyjnym z 30-dniowym okresem próbnym. Po zakończeniu okresu próbnego program nadal działa z 30-minutową przerwą przy każdym uruchomieniu. Koszt licencji to 50$ za jedną kopię. Istnieją darmowe alternatywy, takie jak Proxyman (macOS) i mitmproxy (wieloplatformowy).

Czy można przechwytywać ruch symulatora iOS?

Tak, symulator iOS automatycznie używa systemowego proxy macOS. Wystarczy uruchomić Charles i włączyć SSL-proxy — cały ruch symulatora zostanie przechwycony. Konfiguracja certyfikatu dla symulatora odbywa się automatycznie, wymagane jest tylko zaufanie certyfikatowi Charles w pęku kluczy macOS.

Czym Charles różni się od Proxyman?

Główne różnice: Charles jest wieloplatformowy (Windows, macOS, Linux), Proxyman — tylko macOS i iOS. Charles ma szerszy zestaw narzędzi (Rewrite, Map Local, Repeat, Auto Save), ale jest płatny. Proxyman jest darmowy dla podstawowej funkcjonalności, z nowoczesnym interfejsem i natywną integracją z symulatorem iOS.

Jak Charles Proxy wpływa na wydajność?

Charles dodaje opóźnienie przy przechodzeniu ruchu przez proxy, szczególnie przy aktywnym SSL-proxy (deszyfrowanie/szyfrowanie). Na nowoczesnych komputerach opóźnienie wynosi 5–15 milisekund na żądanie. Do testów wydajności zaleca się wyłączenie SSL-proxy dla statycznych zasobów (CSS, JS, obrazy) przez Recording Control.

Jak wyeksportować sesję z Charles?

Charles obsługuje eksport do formatów: .chls (własny, do ponownego otwarcia w Charles), HAR (HTTP Archive, otwierany w przeglądarkach i innych narzędziach), CSV (do obróbki w Excel lub arkuszach kalkulacyjnych), Trace (do eksportu konkretnego żądania w formacie zgodnym z curl). Eksport przez menu File → Export Session.

Podsumowanie

  • Charles Proxy — to profesjonalny serwer proxy HTTP/HTTPS do przechwytywania, przeglądania i modyfikacji ruchu sieciowego od 2004 roku
  • Zasada działania — MITM-proxy: wszystkie żądania przechodzą przez Charles, co pozwala analizować i modyfikować je w locie
  • Potężne narzędzia: Rewrite, Breakpoints, Map Local, Map Remote, Throttle — do wszechstronnego debugowania API i doświadczenia użytkownika
  • Proxy HTTPS wymaga instalacji certyfikatu głównego Charles na urządzeniu, a dla Android 7+ — network_security_config.xml w kompilacji Debug
  • Profile Throttle umożliwiają symulację 3G, EDGE, DSL i innych typów połączeń do testowania zachowania aplikacji w rzeczywistych warunkach
  • Eksport sesji do formatów HAR, CSV i .chls do analizy, raportowania i przekazania zespołowi
  • Dla projektów z ograniczonym budżetem rozważ darmowe alternatywy: Proxyman (macOS) lub mitmproxy (wieloplatformowy open-source)

Opracujemy aplikację mobilną pod klucz

IT Sectr tworzy aplikacje na iOS i Androida dla startupów i firm od 2017 roku. Doradzimy Ci i zaproponujemy najlepsze rozwiązanie.

Omów projekt

Przeczytaj również