JavaScript oder JScript Auto-Proxy-Beispieldateien

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

Beispiel 1: Lokale Hosts stellen direkt eine Verbindung her, alle anderen ⁿber einen Proxyserver

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.

Beispiel 2: Hosts innerhalb eines Firewalls stellen direkt eine Verbindung her, lokale Server ausserhalb ⁿber einen Proxyserver

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

Beispiel 3: Wenn der Host aufgel÷st werden kann, wird eine direkte Verbindung hergestellt, andernfalls eine Verbindung ⁿber einen Proxyserver

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.

Beispiel 4: Wenn sich der Host im angegebenen Subnet befindet, wird eine direkte Verbindung hergestellt, andernfalls ⁿber einen Proxyserver

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).

Beispiel 5: Bestimmen des Verbindungstyps auf der Basis der HostdomΣne

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.

Beispiel 6: Bestimmen des Verbindungstyps auf der Basis des verwendeten Protokolls

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.

Beispiel 7: Bestimmen der Proxyservereinstellung durch Prⁿfen, ob der Hostname der IP-Adresse entspricht

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.

Beispiel 8: Wenn die IP-Adresse des Hosts der angegebenen IP-Adresse entspricht, wird die Verbindung ⁿber einen Proxyserver hergestellt, andernfalls direkt

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.

Beispiel 9: Wenn der Hostname Punkte enthΣlt, wird die Verbindung ⁿber einen Proxyserver hergestellt, andernfalls direkt

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.

Beispiel 10: Angeben der Wochentage, an denen die Verbindung ⁿber einen Proxyserver hergestellt werden soll, und der Wochentage, an denen eine direkte Verbindung verwendet wird

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.

----------