Panoramica
Gli header HTTP trasmessi con ogni richiesta rivelano informazioni significative sul client. Questi sono i segnali più semplici da falsificare a livello di proxy.
Header Usati per il Fingerprinting
User-Agent
Il segnale più noto. Contiene SO, browser, versione, architettura.
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36
Client Hints (Sec-CH-UA)
Sostituto moderno per la granularità dello User-Agent:
| Header | Esempio |
|---|---|
Sec-CH-UA |
"Google Chrome";v="120", "Chromium";v="120", "Not?A_Brand";v="99" |
Sec-CH-UA-Platform |
"Windows" |
Sec-CH-UA-Platform-Version |
"15.0.0" |
Sec-CH-UA-Model |
"Pixel 7" (mobile) |
Sec-CH-UA-Mobile |
?0 |
Sec-CH-UA-Arch |
"x86" |
Sec-CH-UA-Bitness |
"64" |
Sec-CH-UA-Full-Version-List |
"Google Chrome";v="120.0.6099.109" |
Altri Header
| Header | Informazioni Rivelate |
|---|---|
Accept |
Capacità del browser |
Accept-Language |
Preferenze linguistiche utente |
Accept-Encoding |
Supporto compressione |
DNT |
Preferenza Do Not Track |
Upgrade-Insecure-Requests |
Capacità del browser |
Referer |
Pagina precedente (comportamentale) |
Strategia di Spoofing al Proxy
Gli header possono essere completamente sostituiti al proxy poiché sono in chiaro in HTTP e accessibili in HTTPS MITM:
proxy_set_header User-Agent "Mozilla/5.0 ..."
proxy_set_header Sec-CH-UA "..."
proxy_set_header Sec-CH-UA-Platform "Windows"
proxy_set_header Accept-Language "en-US,en;q=0.9"
Requisiti di Coerenza
Tutti gli header devono essere coerenti con il profilo scelto:
- Se il profilo dice "Chrome 120 su Windows 11", allora:
User-Agentdeve riflettere Chrome 120 / Windows 11Sec-CH-UAdeve elencare Chrome 120 / Chromium 120Sec-CH-UA-Platformdeve essere"Windows"Acceptdeve corrispondere al tipico Accept header di Chrome- Il fingerprint TLS (JA3) deve corrispondere a Chrome 120 su Windows
L'incoerenza è di per sé un fingerprint (es. User-Agent Chrome con un handshake TLS di Firefox).
Conclusioni
- Lo spoofing degli header HTTP è la mitigazione più semplice e affidabile
- Gli header sono completamente controllabili al proxy
- Requisito critico: coerenza interna tra tutti gli header
- Il sistema di profili deve garantire che tutti i valori degli header corrispondano a una combinazione browser/SO reale
- Senza questo, l'intero sistema si rompe