Die folgenden 10 Skripts stellen Beispiele dafⁿr dar, wie eine .pac-Datei verwendet werden kann, um einen Auto-Proxy-URL anzugeben. Um diese Funktionen verwenden zu k÷nnen, mⁿssen Sie die Proxynamen, Anschlussnummern und IP-Adressen Σndern.
Anmerkungen
Die folgende Funktion ⁿberprⁿft, ob es sich bei dem Hostnamen um einen lokalen Host handelt. Wenn dies der Fall ist, wird ⁿberprⁿft, ob die Verbindung direkt ist. Wenn es sich bei dem Hostnamen nicht um einen lokalen Host handelt, besteht eine Verbindung ⁿber einen Proxyserver (Proxyserver).
Funktion FindProxyForURL(url, host) { if (isPlainHostName(host)) return "DIRECT"; else return "PROXY proxy:80"; }
Die Funktion isPlainHostName() ⁿberprⁿft, ob der Hostname Punkte enthΣlt. Wenn dies der Fall ist, wird FALSE zurⁿckgegeben, andernfalls TRUE.
Die folgende Funktion prⁿft, ob es sich bei dem Host entweder um einen "einfachen" Hostnamen handelt (d. h. der DomΣnenname ist nicht enthalten), oder ob er Teil einer bestimmten DomΣne ist (.firma.com); der Hostname ist jedoch nicht www oder home.
Funktion FindProxyForURL(url, host) { if ((isPlainHostName(host) || dnsDomainIs(host, ".company.com")) && !localHostOrDomainIs(host, "www.company.com") && !localHostOrDomainIs(host, "home.company.com")) return "DIRECT"; else return "PROXY proxy:80"; }
Anmerkungen
Die folgende Funktion fordert den DNS-Server auf, den an ihn ⁿbergebenen Hostnamen aufzul÷sen. Wenn dies m÷glich ist, wird eine direkte Verbindung hergestellt. Wenn dies nicht m÷glich ist, wird die Verbindung ⁿber einen Proxyserver hergestellt. Dieses Verfahren ist sinnvoll, wenn ein interner DNS-Server fⁿr die Aufl÷sung aller internen Hostnamen verwendet wird.
Funktion FindProxyForURL(url, host) { if (isResolvable(host)) return "DIRECT"; else return "PROXY proxy:80"; }
Siehe Anmerkung zu der Funktion isResolvable() oben auf der Seite.
Die folgende Funktion vergleicht ein angegebenes IP-Adressenmuster und eine -maske mit dem Hostnamen. Dieses Verfahren ist sinnvoll, wenn zu bestimmten Hosts in einem Subnet eine direkte Verbindung hergestellt werden soll, zu anderen ⁿber einen Proxyserver.
Funktion FindProxyForURL(url, host) { if (isInNet(host, "999.99.9.9", "255.0.255.0")) return "DIRECT"; else return "PROXY proxy:80"; }
Siehe Anmerkung zu der Funktion isInNet() oben auf der Seite.
Die Funktion isInNet(host, pattern, mask) gibt TRUE zurⁿck, wenn die IP-Adresse des Hosts dem angegebenen Muster entspricht. Die Maske gibt an, welcher Teil der IP-Adresse entsprechen soll (255=Entsprechung, 0=ignorieren).
Die folgende Funktion gibt eine direkte Verbindung an, wenn der Host lokal ist. Wenn der Host nicht lokal ist, bestimmt diese Funktion auf der Basis der HostdomΣne, welcher Proxyserver verwendet werden soll. Dieses Verfahren ist sinnvoll, wenn der HostdomΣnenname eines der Kriterien fⁿr die Proxyserverauswahl darstellt.
Funktion FindProxyForURL(url, host) { if (isPlainHostName(host)) return "DIRECT"; else if (shExpMatch(host, "*.com")) return "PROXY comproxy:80"; else if (shExpMatch(host, "*.edu")) return "PROXY eduproxy:80"; else return "PROXY proxy"; }
Die Funktion shExpMatch(str, shexp) gibt TRUE zurⁿck, wenn str dem Wert von shexp entspricht, und verwendet Shell-Ausdrucksmuster.
Die folgende Funktion extrahiert das verwendete Protokoll und nimmt dementsprechend die Proxyserverauswahl vor. Wenn fⁿr das Protokoll keine Entsprechung gefunden wird, wird eine direkte Verbindung hergestellt. Dieses Verfahren ist sinnvoll, wenn das verwendete Protokoll eines der Kriterien fⁿr die Proxyserverauswahl darstellt.
Funktion FindProxyForURL(url, host) { if (url.substring(0, 5) == "http:") { return "PROXY proxy:80"; } else if (url.substring(0, 4) == "ftp:") { return "PROXY fproxy:80"; } else if (url.substring(0, 7) == "gopher:") { return "PROXY gproxy"; } else if (url.substring(0, 6) == "https:") { return "PROXY secproxy:8080"; } else { return "DIRECT"; } }
Die Funktion substring() extrahiert die angegebene Anzahl von Zeichen aus einer Zeichenfolge.
Die folgende Funktion nimmt eine Proxyserverauswahl vor, indem sie den Hostnamen in eine IP-Adresse ⁿbersetzt und diese mit einer angegebenen Zeichenfolge vergleicht.
Funktion FindProxyForURL(url, host) { if (dnsResolve(host) == "999.99.99.999") { // = http://secproxy return "PROXY secproxy:8080"; } else { return "PROXY proxy:80"; } }
Siehe Anmerkung zu der Funktion dnsResolve() oben auf der Seite.
Die folgende Funktion stellt ein anderes Verfahren zur Proxyserverauswahl dar, das auf der Angabe einer IP-Adresse beruht. In diesem Beispiel wird anders als in Beispiel 7 der Funktionsaufruf verwendet, um die nummerische IP-Adresse explizit abzufragen (Beispiel 7 verwendet die Funktion dnsResolve(), um den Hostnamen in die nummerische IP-Adresse zu ⁿbersetzen).
Funktion FindProxyForURL(url, host) { if (myIpAddress() == "999.99.999.99") { return "PROXY proxy:80"; } else { return "DIRECT"; } }
Die Funktion myIpAddress() gibt die IP-Adresse (Integerformat mit Punkten) des Hosts zurⁿck, auf dem der Browser ausgefⁿhrt wird.
Die folgende Funktion prⁿft, wie viele Punkte der Hostname enthΣlt. Wenn der Hostname Punkte enthΣlt, wird die Verbindung ⁿber einen Proxyserver hergestellt. Wenn der Hostname keine Punkte enthΣlt, wird eine direkte Verbindung hergestellt. Dies ist ein anderes Verfahren zur Bestimmung der Verbindungstypen auf der Basis der Charakteristika des Hostnamens.
Funktion FindProxyForURL(url, host) { if (dnsDomainLevels(host) > 0) { // if the number of dots in host > 0 return "PROXY proxy:80"; } return "DIRECT"; }
Die Funktion dnsDomainLevels() gibt einen Integerwert zurⁿck, der der Anzahl der Punkte im Hostnamen entspricht.
Die folgende Funktion bestimmt den Verbindungstyp durch die Angabe der Wochentage, an denen ein Proxyserver verwendet werden soll. An Tagen, an denen diese Parameter nicht zutreffen, wird eine direkte Verbindung verwendet. Diese Funktion kann in den FΣllen sinnvoll eingesetzt werden, in denen Sie einen Proxyserver verwenden m÷chten, wenn der Verkehr hoch ist; eine direkte Verbindung wird nur bei wenig Verkehr verwendet.
Funktion FindProxyForURL(url, host) { if(weekdayRange("WED", "SAT", "GMT")) return "PROXY proxy:80"; else return "DIRECT"; }
Die Funktion weekdayRange( <day1> [,<day2>] [,<fGMT>] ) gibt zurⁿck, ob die aktuelle Systemzeit in den durch die Parameter <day1>, <day2> und <fGMT> angegebenen Bereich fΣllt. Nur der erste Parameter ist erforderlich. Der Parameter GMT setzt die Zeiten fest, die in GMT anstatt in der lokalen Zeitzone ermittelt werden sollen.
Anmerkung
Wenn die Funktion mit <day1> == <day2> aufgerufen wird, geben frⁿhere Versionen von Microsoft Internet Explorer andere Ergebnisse als Netscape Navigator aus. Frⁿhere Versionen von Internet Explorer interpretieren nΣmlich diesen Bereich von Tagen als vollstΣndige Woche, wΣhrend Microsoft Internet Explorer 4.0 und Netscape Navigator diesen Bereich als einen einzelnen Tag interpretieren. Wenn der aktuelle Tag beispielsweise Montag ist, gibt der Aufruf der Funktion weekdayRange("TUE", "TUE") TRUE in frⁿheren Versionen von Internet Explorer und FALSE fⁿr Microsoft Internet Explorer 4.0 und Netscape Navigator zurⁿck.