Chrome può utilizzare la rete Tor senza installare un secondo client Tor e senza modificare le impostazioni generali della connessione Internet su Windows 11. È sufficiente sfruttare il proxy SOCKS5 già disponibile quando Tor Browser è in esecuzione, configurando Chrome affinché inoltri il traffico Web attraverso il servizio locale. Con alcune modifiche aggiuntive, possiamo anche selezionare nodi di uscita italiani e utilizzare PowerShell per richiedere periodicamente nuovi circuiti Tor, senza dover interagire manualmente con il browser.
Il risultato è una configurazione particolarmente interessante per effettuare test di geolocalizzazione, verificare il comportamento dei siti Web in base all’indirizzo IP di provenienza e gestire differenti percorsi di connessione. Vanno però rimarcate le differenze tra instradamento del traffico e anonimato: Chrome non eredita automaticamente le protezioni contro il tracciamento e il fingerprinting integrate in Tor Browser.
Come funziona la connessione di Chrome attraverso Tor
Tor, acronimo di The Onion Router, instrada normalmente il traffico attraverso una sequenza di 3 relay: un nodo di ingresso (guard), uno intermedio e uno di uscita (exit). Ogni relay conosce soltanto le informazioni necessarie per inoltrare il traffico verso il nodo successivo.
Il server Web raggiunto dall’utente vede generalmente l’indirizzo IP del nodo di uscita, non quello pubblico della connessione originale. La protezione dipende anche dalle caratteristiche del browser, dalla gestione delle sessioni e dai protocolli utilizzati.
Tor Browser include un’istanza del servizio Tor che espone normalmente un proxy SOCKS5 sull’indirizzo 127.0.0.1, porta 9150. Altre applicazioni possono collegarsi allo stesso servizio, sfruttando i circuiti che Tor costruisce per raggiungere Internet.
Possiamo quindi tenere aperto Tor Browser e utilizzare contemporaneamente Chrome, configurando quest’ultimo per collegarsi al proxy SOCKS5 locale.
Avviare Google Chrome attraverso Tor su Windows 11
Per prima cosa, avviamo Tor Browser e attendiamo che completi la connessione alla rete Tor. Successivamente apriamo il Prompt dei comandi di Windows e digitiamo quanto segue:
"C:\Program Files\Google\Chrome\Application\chrome.exe" --user-data-dir="%LOCALAPPDATA%\ChromeTor" --proxy-server="socks5://127.0.0.1:9150" --host-resolver-rules="MAP * ~NOTFOUND , EXCLUDE 127.0.0.1"
Il comando utilizza tre parametri particolarmente importanti (sostituire il percorso con quello corretto dell’eseguibile di Chrome):
--user-data-dirindica una directory dedicata al profilo Chrome utilizzato con Tor. La scelta permette di mantenere separati cronologia, cookie, estensioni e sessioni dal profilo normalmente utilizzato;--proxy-serverspecifica l’indirizzo del proxy SOCKS5 locale di Tor Browser. Chrome inoltra attraverso tale proxy le richieste Web, anziché collegarsi direttamente ai server remoti.--host-resolver-rulesintroduce una regola che limita le risoluzioni DNS locali da parte di Chrome. Il proxy SOCKS5 può infatti ricevere il nome del server remoto e delegarne la risoluzione alla rete Tor.
La configurazione non garantisce che qualunque funzionalità di Chrome utilizzi esclusivamente Tor: applicazioni Web, estensioni e protocolli che non transitano normalmente attraverso il proxy richiedono controlli specifici.
Per evitare di digitare ogni volta il comando, possiamo creare un collegamento sul desktop di Windows, riportando l’intera stringa nel campo Destinazione. In seguito sarà sufficiente avviare Tor Browser e utilizzare il nuovo collegamento Chrome.
Configurare Tor Browser per utilizzare indirizzi IP italiani
Il nodo di uscita determina l’indirizzo IP pubblico visualizzato dai siti Web. Tor seleziona normalmente i relay in maniera automatica, ma permette di introdurre preferenze geografiche mediante il file di configurazione torrc.
Su Windows, nella struttura tradizionale di Tor Browser, il file si trova nella directory Tor\Browser\TorBrowser\Data\Tor\torrc
Dopo aver chiuso Tor Browser, apriamo torrc con Blocco Note e aggiungiamo la seguente direttiva:
ExitNodes {it}
Il codice {it} identifica l’Italia. Tor cercherà quindi di utilizzare relay di uscita classificati come italiani per i normali circuiti Internet. È possibile specificare anche più Paesi, ad esempio:
ExitNodes {it},{de}

La scelta di un Paese limita il numero di relay disponibili e può influire su prestazioni, raggiungibilità dei servizi e anonimato. Inoltre, la configurazione geografica non costituisce una garanzia assoluta sulla localizzazione dell’IP: possono intervenire differenze nei database GeoIP e particolari eccezioni nella selezione dei circuiti.
Dopo aver salvato le modifiche, riavviamo Tor Browser. Chrome, collegandosi al medesimo servizio Tor sulla porta 9150, utilizzerà la configurazione di selezione dei relay applicata a quell’istanza.
La ControlPort di Tor: a cosa serve la porta 9151
Oltre al proxy SOCKS5, Tor può mette a disposizione un’interfaccia di controllo locale attraverso la porta 9151, denominata ControlPort: la sua disponibilità dipende dalla configurazione effettivamente utilizzata.
La differenza tra le due porte è la seguente: la 9150 permette di trasportare le richieste applicative attraverso Tor; 9151 consente invece ai programmi autorizzati di comunicare direttamente con il processo Tor, inviando comandi e interrogandone lo stato.
Il Tor Control Protocol permette, tra le altre operazioni, di ottenere informazioni sui circuiti, leggere parametri di configurazione, consultare statistiche e inviare segnali di controllo.
Uno dei comandi disponibili è SIGNAL NEWNYM, che richiede a Tor di utilizzare circuiti puliti per le nuove connessioni applicative, evitando di riutilizzare quelli precedentemente impiegati e cancellando la cache DNS interna.
Cambiare circuito Tor manualmente con PowerShell
È possibile far leva sul Control Protocol attraverso PowerShell, senza installare software aggiuntivo. Lo script seguente apre una connessione TCP verso 127.0.0.1:9151, richiede le informazioni sull’autenticazione e individua il cookie utilizzato da Tor.
Il contenuto del cookie viene convertito in esadecimale e trasmesso mediante AUTHENTICATE. Dopo aver verificato la risposta del servizio, lo script invia SIGNAL NEWNYM e mostra il risultato nella console.
Lo script presuppone che la ControlPort sia attiva e che l’istanza Tor accetti l’autenticazione tramite cookie nella modalità utilizzata:
try {
$client = New-Object System.Net.Sockets.TcpClient("127.0.0.1", 9151)
$stream = $client.GetStream()
$reader = New-Object System.IO.StreamReader($stream)
$writer = New-Object System.IO.StreamWriter($stream)
$writer.NewLine = "`r`n"
$writer.AutoFlush = $true
# Chiede a Tor informazioni sull'autenticazione
$writer.WriteLine("PROTOCOLINFO 1")
$cookieFile = $null
while ($true) {
$line = $reader.ReadLine()
if ($line -match 'COOKIEFILE="([^"]+)"') {
$cookieFile = $matches[1]
}
if ($line -eq "250 OK") {
break
}
}
if (-not $cookieFile) {
throw "Tor non ha restituito il percorso del cookie."
}
# Legge il cookie di autenticazione
$cookie = [System.IO.File]::ReadAllBytes($cookieFile)
$cookieHex = ($cookie | ForEach-Object { $_.ToString("x2") }) -join ""
# Autenticazione sulla ControlPort
$writer.WriteLine("AUTHENTICATE $cookieHex")
$response = $reader.ReadLine()
if ($response -notmatch "^250") {
throw "Autenticazione Tor fallita: $response"
}
# Richiede una nuova identità Tor
$writer.WriteLine("SIGNAL NEWNYM")
$response = $reader.ReadLine()
$timestamp = Get-Date -Format "HH:mm:ss"
Write-Host ""
Write-Host "[$timestamp] Cambio identita Tor -> $response" -ForegroundColor Green
$writer.WriteLine("QUIT")
$reader.Close()
$writer.Close()
$client.Close()
}
catch {
$timestamp = Get-Date -Format "HH:mm:ss"
Write-Host ""
Write-Host "[$timestamp] ERRORE: $($_.Exception.Message)" -ForegroundColor Red
}
Il messaggio mostrato dal programma contiene la risposta restituita dalla ControlPort:250 OK segnala l’accettazione del comando. Il cookie di autenticazione permette di accedere alle funzioni di controllo di Tor: deve quindi rimanere protetto e non deve essere condiviso con programmi o utenti non autorizzati.
Cambiare automaticamente circuito Tor ogni tre minuti
Un’altra possibilità consiste nel ripetere periodicamente la medesima procedura. Invece di eseguire manualmente lo script, possiamo avviare un ciclo PowerShell che ogni 180 secondi apre una nuova connessione alla ControlPort, effettua l’autenticazione e invia SIGNAL NEWNYM.
Il seguente script esegue esattamente queste operazioni e visualizza un conto alla rovescia aggiornato ogni secondo. È utile quando si desidera sperimentare il comportamento di applicazioni e servizi Web utilizzando circuiti Tor differenti nel corso della stessa sessione:
while ($true) {
try {
$client = New-Object System.Net.Sockets.TcpClient("127.0.0.1", 9151)
$stream = $client.GetStream()
$reader = New-Object System.IO.StreamReader($stream)
$writer = New-Object System.IO.StreamWriter($stream)
$writer.NewLine = "`r`n"
$writer.AutoFlush = $true
# Chiede a Tor informazioni sull'autenticazione
$writer.WriteLine("PROTOCOLINFO 1")
$cookieFile = $null
while ($true) {
$line = $reader.ReadLine()
if ($line -match 'COOKIEFILE="([^"]+)"') {
$cookieFile = $matches[1]
}
if ($line -eq "250 OK") {
break
}
}
if (-not $cookieFile) {
throw "Tor non ha restituito il percorso del cookie."
}
# Legge il cookie di autenticazione
$cookie = [System.IO.File]::ReadAllBytes($cookieFile)
$cookieHex = ($cookie | ForEach-Object { $_.ToString("x2") }) -join ""
# Autenticazione sulla ControlPort
$writer.WriteLine("AUTHENTICATE $cookieHex")
$response = $reader.ReadLine()
if ($response -notmatch "^250") {
throw "Autenticazione Tor fallita: $response"
}
# Richiede una nuova identità Tor
$writer.WriteLine("SIGNAL NEWNYM")
$response = $reader.ReadLine()
$timestamp = Get-Date -Format "HH:mm:ss"
Write-Host ""
Write-Host "[$timestamp] Cambio identita Tor -> $response" -ForegroundColor Green
$writer.WriteLine("QUIT")
$reader.Close()
$writer.Close()
$client.Close()
}
catch {
$timestamp = Get-Date -Format "HH:mm:ss"
Write-Host ""
Write-Host "[$timestamp] ERRORE: $($_.Exception.Message)" -ForegroundColor Red
}
# Countdown di 3 minuti
for ($seconds = 180; $seconds -gt 0; $seconds--) {
$minutes = [math]::Floor($seconds / 60)
$secs = $seconds % 60
$countdown = "{0:00}:{1:00}" -f $minutes, $secs
Write-Host "`rProssimo cambio Tor tra $countdown " -NoNewline -ForegroundColor Cyan
Start-Sleep -Seconds 1
}
Write-Host "`rCambio identita Tor in corso... " -ForegroundColor Yellow
}
Il ciclo continua fino all’interruzione manuale con Ctrl+C. Il programma richiede un nuovo circuito, attende 3 minuti e ripete l’operazione. Tor può comunque limitare la frequenza delle richieste NEWNYM e non garantisce che ogni comando produca una nuova uscita verso Internet.
Come verificare l’indirizzo IP utilizzato da Chrome
Per controllare la configurazione, apriamo Chrome con il proxy SOCKS5 attivo e visitiamo check.torproject.org. Il servizio permette di verificare se la richiesta ha raggiunto Internet attraverso la rete Tor.

Per osservare l’indirizzo IP e la relativa geolocalizzazione possiamo utilizzare IPLocation o servizi simili. Dopo aver eseguito uno degli script PowerShell, possiamo ripetere il controllo.
Chrome con Tor non offre le stesse protezioni di Tor Browser
La possibilità di collegare Chrome alla rete Tor offre interessanti opportunità di sperimentazione, ma non trasforma il browser Google in uno strumento equivalente a Tor Browser.
Tor Browser implementa protezioni specifiche contro il browser fingerprinting, la correlazione delle sessioni e varie tecniche di tracking. Chrome, invece, continua a esporre numerose caratteristiche del dispositivo e del browser, anche quando l’indirizzo IP pubblico appartiene a un relay Tor.
Il Tor Project sconsiglia esplicitamente l’utilizzo della rete Tor con altri browser per attività che richiedono anonimato, evidenziando il rischio di perdite DNS, WebRTC e identificazione attraverso fingerprinting.
Per test tecnici, verifiche di geolocalizzazione e sperimentazioni sulla gestione dei circuiti, la combinazione tra Chrome, Tor Browser e PowerShell costituisce invece una soluzione flessibile. Permette di separare il profilo di navigazione ordinario da quello instradato attraverso Tor e di controllare il comportamento delle nuove connessioni mediante comandi eseguiti in locale.