- Proxy.pac
-
Anhand einer Proxy-Auto-Config-Datei (PAC-Datei) kann ein Webbrowser automatisch den passenden Proxyserver für eine gewünschte URL finden.
Eine PAC-Datei enthält eine JavaScript-Funktion
FindProxyForURL(url, host)
. Diese Funktion gibt einen String mit einer oder mehreren Proxyspezifikationen zurück, mit mehreren Spezifikationen wird ein Fallback bzw. Failover möglich, für den Fall, dass ein Server nicht antwortet. Der Browser holt sich diese PAC-Datei, bevor er weitere Seiten anfordert. Die URL der PAC-Datei kann entweder von Hand angegeben werden oder über das Web Proxy Autodiscovery Protocol automatisch gefunden werden.Inhaltsverzeichnis
Zusammenhang
Moderne Browser bieten mehrere Stufen der Automatisierung – so kann die Stufe gewählt werden, die den jeweiligen Bedürfnissen entspricht. Es handelt sich üblicherweise um folgende Möglichkeiten:
- Manuelle Proxy-Wahl: Es wird ein Hostname sowie eine Port-Nummer angegeben, die für alle URLs verwendet werden. Meist können noch Domains wie z. B. der eigene Rechner (localhost) aufgelistet werden, für die der Proxy umgangen wird.
- Proxy auto-configuration (PAC): Durch die Angabe der URL einer PAC-Datei wird die Verwendung eines passenden Proxys für jede URL möglich. Sie enthält eine JavaScript-Funktion, die zu jeder Adresse den passenden Proxy aussucht. Diese Möglichkeit behandelt dieser Artikel.
- Web Proxy Autodiscovery Protocol (WPAD Protocol): Der Browser sucht sich die PAC-Datei selbst. Das Protokoll wird in einem gesonderten Artikel besprochen.
Die erste Möglichkeit ist die einfachste und sicherste.
Die zweite (PAC) ist flexibler (erlaubt die Verwendung vieler verschiedener Proxys). Die URL der PAC-Datei muss jedoch einmal initial von Hand angegeben werden.
Die dritte Möglichkeit (WPAD) baut auf PAC auf und macht diese Handarbeit unnötig: Jeder Browser einer Organisation kann damit angewiesen werden, dieselbe PAC-Konfiguration zu verwenden.
Die PAC-Datei
Um PAC zu nutzen, wird eine PAC-Datei auf einem Webserver veröffentlicht und der Browser angewiesen, sie durch die Angabe der Adresse in den Verbindungs-Einstellungen oder durch Nutzung des WPAD-Protokolls zu lesen.
Eine PAC-Datei ist eine Textdatei, die eine JavaScript-Funktion definiert:
FindProxyForURL(url, host)
. Standardmäßig heißt sie proxy.pac, wird der WPAD-Standard genutzt, so heißt sie oft auch wpad.dat. Der Server muss angewiesen werden als MIME-Type der Datei application/x-ns-proxy-autoconfig anzugeben.Ein sehr einfaches Beispiel einer PAC-Datei ist:
function FindProxyForURL(url, host) { return "PROXY proxy.example.com:8080; DIRECT"; }
Diese Funktion weist den Browser an, alle Seitenanfragen an den Proxy auf Port 8080 des Servers proxy.example.com zu leiten. Sollte dies fehlschlagen, so wird eine direkte Verbindung ins WWW aufgebaut.
Das Folgende ist ein komplexeres Beispiel, das die Verwendung einiger JavaScript-Funktionen demonstriert, die für die
FindProxyForURL
-Funktion zur Verfügung stehen:function FindProxyForURL(url, host) { // Adressen, die auf example.com liegen, brauchen keinen Proxy: if (shExpMatch(url,"*.example.com/*")) {return "DIRECT";} if (shExpMatch(url, "*.example.com:*/*")) {return "DIRECT";} // URLs innerhalb dieses Netzwerkes werden abgefragt über // Port 8080 auf fastproxy.example.com: (macht Nameserver Anfrage) if (isInNet(host, "10.0.0.0", "255.255.248.0")) { return "PROXY fastproxy.example.com:8080"; } // Alle anderen Anfragen gehen über Port 8000 von proxy.example.com. // sollte das fehlschlagen, verbinde direkt ins Netz: return "PROXY proxy.example.com:8000; DIRECT"; }
Für eine vollständige Liste verwendbarer vordefinierter Funktionen siehe Weblinks.
Einschränkungen
Die Funktion
isInNet
(und weitere ähnliche Funktionen) führen eine DNS-Anfrage durch, die den Browser blockieren kann, falls der DNS-Server nicht antwortet.Die Proxy-Zwischenspeicherung in Microsofts Internet Explorer schränkt die Flexibilität des PAC-Standards ein. Folglich kann ein Proxy anhand des Domainnamens jedoch nicht des Pfades der URL gewählt werden. Andernfalls muss die Proxy-Zwischenspeicherung abgeschaltet werden.
Prinzipiell kann ein PAC-File auch dynamisch (z. B. per PHP, Visual Basic oder Java Server Pages) generiert werden und so z. B. anhand der IP-Adresse des Clients unterschiedliche Proxys zurückliefern. Das kann sinnvoll sein, um die Mitarbeiter einer IT-Abteilung über weniger restriktive Proxy-Einstellungen zu führen oder um in einem geographisch sehr verteilten Unternehmen regionale Proxys nutzen zu können.
Anmerkungen
Einstellung im Internet Explorer oder FireFox 2.x/3.x in folgender Form:
file://<Pfad und Dateiname>
oder
http(s)://Server:Port/<Pfad und Dateiname>
Weblinks
Wikimedia Foundation.