Sinn und Aufbau einer Konfigurationsdatei nach dem WPAD-Standard

Ein Proxy-Server ist eine Sonderform eines Webservers: Er steht zwischen dem Useragent und dem Zielsystem. Ein Proxy-Server ist also Webserver und UserAgent zugleich. Außerdem sind die meisten Proxy-Server als Cache konfiguriert, was die Performance erhöht. Proxy-Server können hintereinander kaskadiert und auch als Virenscanner eingesetzt werden.

Weitere Einsatzgebiete sind Gateway-Lösungen für die Protokolle HTTP und HTTPS.

Wer einen Proxy-Server benutzt, erhält nach außen hin die IP-Adresse des Proxy-Servers. Wenn mehrere Benutzer denselben Proxy-Server benutzen, haben auch mehrere Benutzer zur gleichen Zeit dieselbe IP-Adresse.

Für die Browser (Internet-Explorer, Mozilla usw.) gibt es verschiedene Möglichkeiten, einen Proxy-Server einzusetzen: Entweder wird für das entsprechende Protokoll ein Proxy-Server fest eingetragen, oder der Proxy-Server wird von einer automatischen Konfigurationsdatei geliefert.

Im Folgenden ist eine solche Konfigurationsdatei, die proxy.pac beschrieben. Hauptanliegen dieser speziellen Datei ist die Auslieferung eines zufälligen Proxy-Servers für das Protokoll HTTP. Requests über das Protokoll HTTPS sollen direct, also ohne Proxy-Server erfolgen, ebenso auch Requests auf den lokalen Webserver.

Die Konfigurationsdatei proxy.pac

// File: proxy.pac

// Proxy-Server zur Auswahl bei T-online und Congster
var proxies = new Array("217.237.148.22:80", "217.237.148.70:80", "217.237.148.102:80",
"217.237.149.142:80", "217.237.149.205:80", "217.237.150.51:80", "217.237.150.115:80",
"217.237.150.188:80", "217.237.150.205:80", "217.237.151.51:80", "217.237.151.115:80",
"217.237.151.142:80", "217.237.151.205:80");

function zufallProxy(){
	var a = 0;
	var b = proxies.length - 1;
	a = rand(a, b);
	return("PROXY "+proxies[a]);
}

// Das ist die Hauptfunktion
function FindProxyForURL(url, host){
	var proxy = zufallProxy();

	if(url.substring(0, 5) == "https:" 
	 || isInNet(host, "127.0.0.1" , "255.255.255.255")){ return "DIRECT" }
	else{ return proxy }

}

// min, max eingeschlossen, aus SELFHTML (Artikel)
function rand (min, max) {
	return Math.floor(Math.random() * (max - min + 1)) + min;
}

Das Script erklärt sich weitestgehend von selbst. Herzstück ist die Funktion FindProxyForURL(url, host), die zwei verschiedene Rückgabewert hat:

return "DIRECT"; // kein Proxy-Server wird verwendet
return "PROXY ip.ip.ip.ip:port"; // Proxy-Server

Diese leicht anzupassende Konfigurationsdatei wird über einen Web-Server, in diesem Fall ist das ein lokaler Webserver, verfügbar gemacht.

Automatische Proxy-Konfiguration im Mozilla

Mozilla

Im Menu "Edit/Preferences" findet sich der Dialog, über welchen die Datei für die automatische Konfigurationsdatei einzustellen ist.

Der Reload-Button erlaubt es, die proxy.pac neu in den Browser zu lagen, ohne dass dieser neu gestartet werden muss.

Die Konfiguration im Internet-Explorer

IE

Siehe Screen-Shot linksstehend. Sollte für Internet-Explorer die Konfigurationsdatei neu geladen werden, ist dieser neu zu starten.

Hinsichtlich der zufälligen Auswahl des Proxy-Servers verhält sich der IE anders als Mozilla. Während der Mozilla tatsächlich bei jedem Request einen anderen Proxy-Server verwendet, macht das der IE erst nach einem Neustart.

Zum Testen der Remote-IP-Addresse können Sie diese URL benutzen und zum Testen einer allgemeinen Proxykonfiguration im Browser bietet sich dieses Tool hier an.

Last-Modified: Tue, 22 Jun 2010 19:50:29 GMT