Non esattamente: dipende da come è configurato il client. Usiamo IE come esempio di base.
Se si configura IE con un proxy esplicito : ad es. Nessuna altra opzione selezionata, il proxy è impostato su qualcosa: 8080.
L'utente digita un indirizzo
IE controlla l'indirizzo per una corrispondenza di stringa con l'elenco delle eccezioni del proxy IE (ovvero "Ignora proxy per questi indirizzi:")
un. Se corrisponde a una voce dell'elenco Bypass , il client utilizza il proprio DNS per risolvere il nome, quindi il client si collega direttamente all'indirizzo IP di destinazione sulla porta 80 (presupposto), quindi invia una richiesta come:
GET /something.htm HTTP/1.1
Host: fulldomainame.example.com
b. Se nessuna voce dell'elenco bypass corrisponde , continua:
IE si collega al proxy configurato e invia una richiesta del modulo:
GET http://fulldomainname.example.com/something.htm HTTP/1.1
Bonus factoid: questo uso dell'FQDN nell'URL è un modo in cui puoi dire che un client pensa che stia parlando con un proxy invece che con un vero web server
Il proxy risolve il nome host utilizzando il proprio DNS, quindi si connette al sito di destinazione (si comporta come il client nel passaggio 2 sopra), ecc., Ecc.
Quando si utilizza WPAD / PAC:
Nel caso di utilizzo di uno script Web Proxy Auto Discovery (WPAD) o Proxy Auto Configuration (PAC o Autoconfig), come quelli forniti da ISA / TMG quando la configurazione automatica è abilitata, è diverso:
L'utente digita un indirizzo
Il client scarica il file wpad.dat / autoproxy.js / .pac corrente dalla posizione configurata
Il client cerca la funzione " FindProxyForUrl " nel file js e la esegue
Lo script Autoproxy elabora il nome host e l' URL . Questo è un file javascript con funzioni limitate, ma molte cose sono ancora possibili:
un. questo può includere la risoluzione dei nomi (IsInNet, DnsResolve)
b. questo può includere la corrispondenza delle stringhe (ShExpMatch)
c. questo può includere il conteggio fino a un milione (i ++)
d. questo può includere messaggi popup di avviso narky se l'amministratore è un coglione
- (o semplicemente divertente)
- ((o debug))
La funzione FindProxyForUrl restituisce almeno una stringa : un elenco ordinato dei migliori proxy da utilizzare (punto e virgola separati)
un. o "DIRECT" , nel qual caso il cliente quindi ha la necessità di risolvere il nome stesso e collegarsi direttamente, come per il caso di esclusione di cui sopra
b. o "PROXY proxyname: 8080" o simile, nel qual caso il client si connette a quella porta su quel proxy, gli dice di OTTENERE l'URL completo e il proxy esegue la risoluzione dei nomi .
- Ad esempio : se la funzione di script ha restituito "PROXY yourProxy: 8080; DIRECT" che dice al client di connettersi al tuo proxy sulla porta TCP 8080 per richiedere questo URL e se tale connessione non può essere stabilita, prova ad andare direttamente.
Si noti che l'errore di configurazione della sessione TCP non è esattamente rapido, quindi non è probabile che si tratti di un'esperienza piacevole di failover per un utente, ma non batte nulla. Può essere.
Occasionalmente ci sono anomalie, sottigliezze e comportamenti inspiegabili, ma per la maggior parte quando le cose non sono rotte in modi strani e interessanti, quanto sopra è come l'ho visto funzionare per molti anni. I browser più recenti ottimizzano il comportamento, parallelizzano le cose e provano sempre cose interessanti, quindi dai un'occhiata ai documenti più recenti per il tuo browser per capire i dettagli.
WinSock Proxy / ISA Firewall Client / TMG Client :
Se sei interessato al client proxy Winsock (da TMG / ISA Server), questa è una storia diversa, con maggiore flessibilità e parti mobili. Troppo da approfondire qui, ma ci sono dei documenti che descrivono come funziona. In breve: si collega a Windows Socket e può intercettare sia il traffico basato su TCP / UDP sia le richieste di risoluzione dei nomi su base per app e per utente. Molto potente, ma ora deprecato, e non è stato aggiornato da diversi anni.
I clienti possono essere davvero appiccicosi:
Un'ultima nota : una volta che un client HTTP ha deciso di parlare con un proxy per un determinato sito / url, non è possibile per il proxy dirgli di non farlo .
Non esiste un codice di stato HTTP o un'intestazione per "Non lo servo, dovresti semplicemente andare direttamente ad esso" ...
Una volta che il client decide che un determinato URL viene servito dal proxy , ne deriva il proxy-death-grip .
L'unico modo per evitarlo è ottenere la logica di selezione prima che il client effettui la connessione, nell'elenco PAC o Bypass.
Un'ultima nota su zone e file PAC
IE tratta i siti che sono connessi DIRETTO - anche se hanno punti nell'URL - per far parte della Zona Intranet locale (per impostazione predefinita - impostabile nelle proprietà della Zona), e quindi farà cose come consentire l'autenticazione integrata di Windows a quei siti (es. Autenticazione Kerberos e / o NTLM, in modo trasparente). Quindi controllare se qualcosa si trova nella Zona Intranet locale definisce quanto è affidabile in termini di autenticazione automatica. Ancora una volta, almeno, per impostazione predefinita.