Niezupełnie: zależy to od konfiguracji klienta. Użyjmy IE jako podstawowego przykładu.
Jeśli skonfigurujesz IE z jawnym proxy: np. Nie zaznaczono żadnych innych opcji, proxy ustawione na coś: 8080.
Użytkownik wpisuje adres
IE sprawdza adres pod kątem zgodności ciągu z listą wyjątków proxy IE (tzn. „Pomiń proxy dla tych adresów:”)
za. Jeśli pasuje do wpisu na liście Bypass , klient używa własnego DNS do rozpoznania nazwy, a następnie klient łączy się bezpośrednio z docelowym adresem IP na porcie 80 (zakładany), a następnie wysyła żądanie takie jak:
GET /something.htm HTTP/1.1
Host: fulldomainame.example.com
b. Jeśli żadne wpisy listy pomijania nie są zgodne , kontynuuj:
IE łączy się ze skonfigurowanym proxy i wysyła żądanie formularza:
GET http://fulldomainname.example.com/something.htm HTTP/1.1
Faktoid bonusowy: to użycie nazwy FQDN w adresie URL jest jednym ze sposobów, dzięki którym można powiedzieć, że klient myśli, że rozmawia z serwerem proxy zamiast z prawdziwym serwerem WWW
Serwer proxy rozpoznaje nazwę hosta za pomocą własnego DNS, a następnie łączy się z witryną docelową (działa jak klient w kroku 2 powyżej) itp.
Podczas korzystania z WPAD / PAC:
W przypadku korzystania ze skryptu Web Proxy Auto Discovery (WPAD) lub Proxy Auto Configuration (PAC lub Autoconfig), takiego jak te dostarczone przez ISA / TMG, gdy włączona jest automatyczna konfiguracja, jest inaczej:
Użytkownik wpisuje adres
Klient pobiera bieżący plik wpad.dat / autoproxy.js / .pac ze skonfigurowanej lokalizacji
Klient wyszukuje funkcję „ FindProxyForUrl ” w pliku js i wykonuje ją
Skrypt Autoproxy przetwarza nazwę hosta i adres URL . Jest to plik javascript o ograniczonej funkcji, ale wciąż jest wiele rzeczy:
za. może to obejmować rozpoznawanie nazw (IsInNet, DnsResolve)
b. może to obejmować dopasowanie ciągów (ShExpMatch)
do. może to obejmować zliczanie do miliona (i ++)
re. może to obejmować wyskakujące komunikaty ostrzegawcze narkozy, jeśli administrator jest palantem
- (lub po prostu śmieszne)
- ((lub debugowanie))
Funkcja FindProxyForUrl zwraca co najmniej jeden ciąg : uporządkowaną listę najlepszych serwerów proxy do użycia (oddzielone średnikami)
za. albo „BEZPOŚREDNIE” , w którym to przypadku klient musi rozwiązać samą nazwę i połączyć się bezpośrednio, jak w powyższym przypadku Bypass
b. lub „PROXY proxyname: 8080” lub podobny, w którym to przypadku klient łączy się z tym portem na tym serwerze proxy, każe mu uzyskać pełny adres URL , a serwer proxy rozpoznaje nazwę .
- Na przykład : jeśli funkcja skryptu zwróciła „PROXY yourProxy: 8080; DIRECT”, która mówi klientowi, aby połączyć się z twoją serwerem proxy na porcie TCP 8080, aby zażądać tego adresu URL, a jeśli tego połączenia nie można nawiązać, spróbuj przejść bezpośrednio.
Pamiętaj, że niepowodzenie konfiguracji sesji TCP nie jest zbyt szybkie, więc prawdopodobnie nie będzie to przyjemne przełączanie awaryjne dla użytkownika, ale nic nie przebije. Może.
Czasami zdarzają się usterki, subtelności i niewyjaśnione zachowania, ale w większości przypadków, gdy rzeczy nie są zepsute w dziwny i interesujący sposób, powyższe wygląda jak działało przez wiele lat. Nowsze przeglądarki optymalizują zachowanie, równolegle działają i próbują ciekawych rzeczy przez cały czas, więc zapoznaj się z najnowszymi dokumentami dla danej przeglądarki, aby zrozumieć szczegóły.
WinSock Proxy / ISA Firewall Client / TMG Client :
Jeśli interesuje Cię klient proxy Winsock (z TMG / ISA Server), to inna historia, z większą elastycznością i ruchomymi częściami. Zbyt wiele do zrobienia tutaj, ale istnieją dokumenty, które opisują jak to działa. W skrócie: podłącza się do Windows Sockets i może przechwytywać zarówno ruch oparty na TCP / UDP, jak i żądania rozpoznawania nazw w zależności od aplikacji i użytkownika. Bardzo potężny, ale teraz przestarzały i nie był aktualizowany od kilku lat.
Klienci mogą być naprawdę Clingy:
Jedna końcowa uwaga : Gdy klient HTTP postanowił porozmawiać pełnomocnika na danym terenie / URL, nie ma mowy o proxy, aby poinformować go, aby nie .
Nie ma kodu stanu HTTP ani nagłówka dla „Nie obsługuję tego, powinieneś po prostu przejść bezpośrednio do niego” ...
Gdy klient zdecyduje, że dany adres URL jest obsługiwany przez serwer proxy , następuje chwytanie proxy-śmierci .
Jedynym sposobem na uniknięcie tego jest uzyskanie logiki wyboru tuż przed nawiązaniem połączenia przez klienta, na liście PAC lub Bypass.
Ostatnia uwaga na temat stref i plików PAC
IE traktuje witryny, które są połączone BEZPOŚREDNIO - nawet jeśli mają kropki w adresie URL - będące częścią Strefy Lokalnego Intranetu (domyślnie - ustawialne we właściwościach Strefy), a więc będzie działać na rzecz umożliwienia zintegrowanego uwierzytelniania systemu Windows na tych stronach (tj. Uwierzytelnianie Kerberos i / lub NTLM, transparentnie). Tak więc kontrola, czy coś znajduje się w strefie lokalnego intranetu, określa stopień zaufania w zakresie automatycznego uwierzytelniania. Znowu przynajmniej domyślnie.