inicio mail me! sindicaci;ón
 

Automagiczne proxy dla MSIE

Automatyczne wykrywanie proxy przez MSIE

Mimo iż wszscy klną na Internet Explorera i inne produkty micro$oftu jest to system najczęściej używany na stacjach roboczych. Jedną z funkcji tej przeglądarki jest automatyczne wykrywanie proxy (Web Proxy AutoDiscovery – WPAD). Nie będę tutaj omawiał przydatności tej funkcji gdyż znajdą się jej zwolennicy jak i przeciwnicy, ale skupie się na konfiguracji tej usługi. Jak zwykle raczej nie piszę tego dla osób zupełnie zielonych. Jeżeli chcesz dalej czytać, to wiedz iż potrzebujesz serwera www na którym umiesz/możesz robić virtualhosty oraz umieć/móc modyfikować zawartość domeny w której pracują stacje robocze.


IE podczas uruchamiania wyszukuje w lokalnej domenie hosta o nazwie ‘wpad’ i stara się z niego pobrać plik ‘wpad.dat’ przy użyciu protokołu http. Prościej mówiąc, IE szuka dokumentu http://wpad.lokalnadomena/wpad.dat. Plik ten jest najzwyklejszym skryptem w javascript który zwraca informacje jak ma wykonać połączenie IE. Ale pokolei.

Co to jest lokalna domena? Jest to domena jaką mają ustawione komputery windowsowe we właściwościach TCP/IP na zakładce DNS, lub też domena jaką przydzielamy poprzez DHCP. Najprościej ją sprawdzić z Menu Start / Uruchom / winipcfg. Wtedy widzimy w jakiej domenie pracuje komputer. Załóżmy na potrzeby tego tekstu iż jest to domena ‘domenalokalna.pl’. Tworzymy w tej domenie host wpad wskazujący na serwer WWW na którym robimy virtualhost’a wpad.domenalokalna.pl. Jeżeli to już zrobiliśmy, pozostaje tylko napisać skrypt wpad.dat.

Skrypt ten powinien zawierać funkcje FindProxyURL i zwracać ‘PROXY host:port" albo "DIRECT". Możliwe jest także mieszanie tych odpowiedzi. Najprostszy taki skrypt może wyglądać tak:

function FindProxyForURL(url, host)
{
	return "PROXY 217.98.20.195:8080";
}

Taki skrypt informuje aby każde połączenie było wykonywane poprzez proxy 217.98.20.195 na procie 8080. Jak widać do funkcji tej są przekazywane url i http host. Jako że sam niestety nie znam się zbyt dobrze na programowaniu w javascripcie posłużę się przykładem z Supermedii aby opisać bardziej zaawansowany skrypt autokonfiguracji.

function FindProxyForURL(url, host)
{
	// Jeżeli próbujemy połączyć się ze stroną www w naszej
	// domenie, niech IE robi to bezpośrednio.

	if (shExpMatch(url,"*.domenalokalna.pl/*"))
		return "DIRECT";

	// Jeżeli próbujemy sie połączyć ze stroną w sieci lan
	// (adresy prywatne), niech IE robi to też bezpośrednio.

	else if (shExpMatch(url,"*://10.*.*.*/*"))
		return "DIRECT";
	else if (shExpMatch(url,"*://192.168.*.*/*"))
		return "DIRECT";
	else
	{

		// Konfiguracja proxy dla konkretnych protokołów
		// kolejno http, https, gopher i ftp.
		// Wszystkie idą poprzez 217.98.20.195 czyli
		// w3cache.tpnet.pl. Ale nic nie stoii na przeszkodzie
		// by wyłączyć proxy dla jednego z adresów bądź
		// skierować ja na inne proxy. Jeżeli połączenie z proxy nie
		// uda się to będziemy starali się łączyć bezpośrednio.

		if( url.substring(0, 5) == "http:" )
		{
			return "PROXY 217.98.20.195:8080; DIRECT";
		}
		else if( url.substring(0, 6) == "https:" )
		{
			return "PROXY 217.98.20.195:8080; DIRECT";
		}
		else if( url.substring(0, 6) == "gopher:" )
		{
			return "PROXY 217.98.20.195:8080; DIRECT";
		}
		else if( url.substring(0, 6) == "ftp:" )
		{
			return "PROXY 217.98.20.195:8080; DIRECT";
		}
		else
		{

			// I na koniec regułka żeby w ostateczności
			// (nieznany protokół, błąd) była zwracana
			// informacja o bezpośrednim połączeniu

			return "DIRECT";
		}
	}
}

Mam nadzieje że komuś te podstawowe informacje się przydadzą na początek.

Marek (SirAdams):

28 sie 2008, 10:53

Informacje się przydały, a ja ze swojej strony pragnę je uzupełnić o kolejne na podanej stronie:
dhcp

Marek (SirAdams):

28 sie 2008, 13:20

No cóż, mimo googlowania i całego mojego wysiłku, sprawdzania różnych wariantów, nie udało mi się zmusić windowsa XP Proff do pobrania pliku z inną nazwą/domeną niż http://wpad.moja.domena/wpad.dat
Jak komuś się udało to proszę o informacje.
dhcpD3

Baseciq:

28 sie 2008, 14:25

SirAdams, spróbuj w pliku hosts podmienić wpad.twoja.domena na swój własny serwer.

Marcin:

10 maj 2010, 21:51

A co jak serwer proxy wymaga loginu i hasła ??
Jak zaszyć je w automacie ??

RSS dla komentarzy tego posta · TrackBack URI

Skomentuj

English users please note: since my blog is primary in Polish, English comments can be marked by Akismet (antispam) plugin as a spam. Please, allow few days for moderate action if You don't see your comment instanly.