Charles Proxy — cos'è, configurazione e intercettazione del traffico HTTPS

Autore: IT Sectr Pubblicato: 2026-05-08 Tempo di lettura: 8 min

Charles Proxy è un server proxy multipiattaforma per il debug del traffico HTTP/HTTPS, utilizzato dagli sviluppatori per intercettare, visualizzare e modificare le richieste di rete. Secondo Karl von Randow, creatore dello strumento (2025), Charles è utilizzato in più di 50.000 aziende in tutto il mondo dal 2004. Il proxy supporta l'intercettazione del traffico da dispositivi mobili tramite WiFi, proxy HTTPS con installazione del certificato radice e un'ampia gamma di strumenti per l'analisi delle API.

Punti chiave

  • Charles Proxy è un server proxy HTTP/HTTPS per intercettare e analizzare il traffico di rete con funzionalità avanzate di debug
  • Il proxy HTTPS è implementato installando il certificato radice di Charles sul dispositivo, consentendo di visualizzare il traffico crittografato
  • Rewrite e Breakpoints sono potenti strumenti per modificare richieste e risposte al volo senza modificare il codice del server o del client
  • Map Local e Map Remote consentono di sostituire le risorse di rete con file locali o server alternativi per i test
  • Throttle simula connessioni di rete lente e instabili per testare il comportamento dell'app in condizioni di connettività scadente

Cos'è Charles Proxy?

Charles Proxy è un proxy HTTP e monitor HTTP che funge da intermediario tra il client e il server. Tutte le richieste e le risposte passano attraverso Charles, consentendo di visualizzarne il contenuto, analizzarne la struttura, modificare i dati in tempo reale e simulare varie condizioni di rete. È disponibile per Windows, macOS e Linux.

Storia e posizionamento

Charles Proxy è stato creato nel 2004 da Karl von Randow e rimane uno degli strumenti più popolari per il debug del traffico di rete. A differenza delle alternative gratuite, Charles offre una licenza a pagamento con un periodo di prova di 30 giorni. Lo strumento si posiziona come una soluzione professionale per sviluppatori di app mobili, sviluppatori web e ingegneri QA che necessitano del controllo completo sulle comunicazioni HTTP.

Compatibilità con le piattaforme

Charles funziona come un proxy di sistema sul computer e può intercettare il traffico da qualsiasi dispositivo sulla stessa rete: Android, iOS, simulatori, emulatori, browser web e dispositivi IoT. Per intercettare HTTPS, è necessario installare il certificato radice di Charles su ciascun dispositivo. Il traffico è supportato su HTTP/1.1 e HTTP/2 (parzialmente). HTTP/3 (QUIC) non è supportato a livello di intercettazione.

Come funziona Charles Proxy

Charles funziona secondo il principio di un proxy MITM (Man-in-the-Middle): quando un client invia una richiesta attraverso Charles, lo strumento intercetta la richiesta, la inoltra al server di destinazione, riceve la risposta e la restituisce al client. Tutto il traffico passa attraverso Charles, consentendone l'analisi e la modifica.

Architettura del proxy

All'avvio, Charles crea un proxy HTTP locale sulla porta 8888 (predefinita). Il sistema operativo o l'applicazione viene configurato per utilizzare questo proxy. Tutte le richieste HTTP vengono inviate prima a Charles, che poi agisce come un client completo verso il server di destinazione. Per HTTPS, Charles utilizza la propria tecnica di proxy SSL: genera un certificato al volo per ogni dominio, firmato dal certificato radice di Charles. Se il certificato radice è installato sul dispositivo come attendibile, Charles può decrittografare e visualizzare il traffico HTTPS.

Modalità operative

Charles supporta due modalità: Proxy(server proxy classico) e SOCKS Proxy(per traffico UDP e TCP). Per lo sviluppo web, si utilizza il proxy HTTP standard. Per i dispositivi mobili — configurare il WiFi Proxy sul dispositivo indicando l'indirizzo IP del computer su cui è in esecuzione Charles. macOS supporta la configurazione automatica del proxy per il simulatore iOS.

xml
<!-- Configurazione di network_security_config.xml per Android con supporto Charles -->
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <debug-overrides>
        <trust-anchors>
            <!-- Fidarsi del certificato di Charles nella build Debug -->
            <certificates src="user" />
        </trust-anchors>
    </debug-overrides>
</network-security-config>

Caratteristiche principali di Charles Proxy

Charles Proxy fornisce un insieme di strumenti professionali per analizzare e modificare il traffico che vanno ben oltre la semplice intercettazione delle richieste.

Rewrite e Breakpoints

Lo strumento Rewrite consente di modificare automaticamente determinate parti di richieste o risposte: intestazioni, parametri URL, corpo della risposta. Ad esempio, è possibile sostituire l'intestazione User-Agent con un valore di un altro dispositivo o rimuovere determinati cookie. Breakpoints funziona come un debugger: la richiesta si ferma in una fase selezionata (prima dell'invio o prima della ricezione) e lo sviluppatore può modificarne manualmente il contenuto prima che proceda. Questo è utile per testare la gestione di risposte di errore o stati non standard.

Map Local e Map Remote

Map Local consente di sostituire una risorsa di rete (CSS, JS, JSON) con un file locale dal disco. Questo è indispensabile nello sviluppo frontend: è possibile modificare CSS/JS e vedere il risultato immediatamente senza distribuire su un server. Map Remote reindirizza le richieste da un URL a un altro — ad esempio, dal server di produzione allo staging per i test. Entrambi gli strumenti funzionano con modelli URL che supportano caratteri jolly.

Throttle e simulazione delle condizioni di rete

Lo strumento Throttle consente di simulare vari tipi di connessioni di rete utilizzando profili preimpostati: 3G, EDGE, GPRS, DSL, WiFi. È possibile configurare il limite di velocità (download/upload), la latenza, la perdita di pacchetti e la stabilità. Questo è fondamentale per testare il comportamento dell'app in connessioni lente o instabili — gestione corretta dei timeout, logica di ripetizione, modalità offline.

ProfiloDownloadUploadLatenzaScenario tipico
3G780 kbps330 kbps200 msTest con segnale mobile debole
EDGE130 kbps50 kbps400 msConnessione estremamente lenta
GPRS50 kbps20 kbps500 msConnessione minima possibile
DSL2 Mbps256 kbps50 msConnessione domestica cablata
WiFi10 Mbps10 Mbps10 msBuona connessione WiFi

Auto Save e Recording

Charles può salvare automaticamente le sessioni di traffico in file .chls, consentendo di analizzarle in seguito o condividerle con i colleghi. Recording Control consente di configurare flessibilmente quale traffico salvare: per dominio, tipo di contenuto o codice di stato. Questo è comodo per il monitoraggio API a lungo termine.

Configurare Charles Proxy per dispositivi mobili

Per il debug del traffico delle app mobili, Charles viene configurato come un WiFi Proxy: tutti i dispositivi sulla stessa rete del computer possono instradare il traffico attraverso Charles. La corretta configurazione HTTPS richiede l'installazione del certificato di Charles sul dispositivo mobile.

Configurazione su Android

Per Android: aprire Settings → WiFi → Advanced → Proxy, selezionare Manual e inserire l'indirizzo IP del computer con la porta 8888. Quindi aprire un browser sul dispositivo e andare su http://chls.pro/ssl per scaricare il certificato di Charles. Su Android 7+ (API 24+), è necessario network_security_config.xml per fidarsi dei certificati utente nelle build Debug — altrimenti, l'app potrebbe non instradare il traffico attraverso Charles.

Configurazione su iOS

Per iOS: Settings → WiFi → configurare il proxy con IP e porta 8888. Quindi Safari → http://chls.pro/ssl → installare il profilo del certificato. Su iOS 10.3+, è necessario attivare ulteriormente la fiducia del certificato: Settings → General → About → Certificate Trust Settings → attivare Charles Proxy. iOS è più severo riguardo ai certificati: alcune app potrebbero utilizzare SSL Pinning, bloccando il traffico attraverso Charles anche con un certificato attendibile.

Risoluzione dei problemi di SSL Pinning

Se l'app utilizza SSL Pinning(fissaggio del certificato del server), il proxy standard attraverso Charles non funzionerà — l'app rifiuterà il certificato di Charles. Soluzioni: disabilitare SSL Pinning nelle build Debug tramite le impostazioni di OkHttp o URLSession, utilizzare Frida per bypassare il pinning in runtime, o utilizzare Android Emulator con accesso root.

Casi d'uso pratici di Charles Proxy

Charles Proxy risolve compiti specifici di sviluppo e test. Vediamo gli scenari più comuni in cui lo strumento è indispensabile.

Debug dell'integrazione API

Lo scenario più comune — verificare la correttezza delle richieste API. Charles mostra l'URL esatto della richiesta, le intestazioni, il corpo e i parametri. Se il server restituisce una risposta inaspettata, si vede immediatamente: struttura JSON, codice di errore, intestazioni di risposta. Ciò consente di distinguere gli errori del client dagli errori del server senza log da entrambe le parti.

Test con connessione lenta

Utilizzando i profili Throttle, è possibile testare come si comporta l'app con velocità di connessione bassa: se viene visualizzato un indicatore di caricamento, se i timeout vengono gestiti correttamente, se l'UI si blocca in caso di perdita di connessione. È particolarmente importante testare la memorizzazione nella cache — se i dati sono già stati caricati, l'app dovrebbe mostrarli dalla cache anziché entrare in uno stato di caricamento infinito.

Modifica delle risposte del server

Utilizzando Breakpoints, è possibile modificare la risposta del server prima che venga inviata all'app. Ad esempio, restituire un array vuoto invece dei dati, cambiare il codice di stato in 500, aggiungere un nuovo campo al JSON. Ciò consente di testare la gestione dei casi limite senza modificare il codice del server — uno degli usi più potenti di Charles nello sviluppo mobile.

Domande frequenti

Charles Proxy è gratuito?

Charles Proxy è un prodotto commerciale con un periodo di prova di 30 giorni. Dopo la fine del periodo di prova, il programma continua a funzionare con una pausa di 30 minuti a ogni avvio. Il costo della licenza è di $50 per copia. Esistono alternative gratuite come Proxyman (macOS) e mitmproxy (multipiattaforma).

Si può intercettare il traffico del simulatore iOS?

Sì, il simulatore iOS utilizza automaticamente il proxy di sistema di macOS. Basta avviare Charles e attivare il proxy SSL — tutto il traffico del simulatore verrà intercettato. La configurazione del certificato per il simulatore avviene automaticamente; è sufficiente fidarsi del certificato di Charles nel portachiavi di macOS.

In cosa Charles si differenzia da Proxyman?

Principali differenze: Charles è multipiattaforma (Windows, macOS, Linux), Proxyman è solo per macOS e iOS. Charles ha un set di strumenti più ampio (Rewrite, Map Local, Repeat, Auto Save) ma è a pagamento. Proxyman è gratuito per le funzionalità di base, con interfaccia moderna e integrazione nativa con il simulatore iOS.

Come influisce Charles Proxy sulle prestazioni?

Charles aggiunge latenza quando il traffico passa attraverso il proxy, specialmente con proxy SSL attivo (decifratura/cifratura). Sui computer moderni, il ritardo è di 5–15 millisecondi per richiesta. Per i test di prestazione, si consiglia di disabilitare il proxy SSL per i contenuti statici (CSS, JS, immagini) tramite Recording Control.

Come esportare una sessione da Charles?

Charles supporta l'esportazione in formati: .chls(nativo, per riaprire in Charles), HAR(HTTP Archive, si apre nei browser e in altri strumenti), CSV(per l'elaborazione in Excel o fogli di calcolo), Trace(per esportare una richiesta specifica in formato compatibile con curl). Esportazione tramite il menu File → Export Session.

Riepilogo

  • Charles Proxy è un server proxy HTTP/HTTPS professionale per intercettare, visualizzare e modificare il traffico di rete dal 2004
  • Principio di funzionamento — proxy MITM: tutte le richieste passano attraverso Charles, consentendo analisi e modifica al volo
  • Strumenti potenti: Rewrite, Breakpoints, Map Local, Map Remote, Throttle — per debug completo delle API e dell'esperienza utente
  • Proxy HTTPS richiede l'installazione del certificato radice di Charles sul dispositivo e per Android 7+ — network_security_config.xml nelle build Debug
  • Profili Throttle consentono di simulare 3G, EDGE, DSL e altri tipi di connessione per testare il comportamento dell'app in condizioni reali
  • Esportazione sessioni nei formati HAR, CSV e .chls per analisi, reportistica e condivisione con il team
  • Per progetti con budget limitato, considerare alternative gratuite: Proxyman (macOS) o mitmproxy (open source multipiattaforma)

Svilupperemo un'applicazione mobile chiavi in mano

IT Sectr crea applicazioni iOS e Android per startup e aziende dal 2017. Ti consulteremo e ti proporremo la soluzione migliore.

Discuti il progetto

Leggi anche