使用PAC配置代理设置,以便在代理服务器不可用时回退到DIRECT


1

我有以下.pac文件:

function FindProxyForURL(url, host)
{
    return "PROXY proxy.example.com:8080; DIRECT;";
}

我正在使用FoxyProxy和Firefox 13,DIRECT如果给定的代理不可用,我希望它可以回退。相反,我得到消息Firefox配置为使用无法找到的代理服务器。我的期望是否错位?有没有办法让它按照我的意愿行事?

Answers:


0

你应该明确告诉它直接去。

控制此问题的最佳方法是检测您所在的网络。这是一个更复杂的proxy.pac示例:

function FindProxyForURL(url, host) {
    // Variables
    var proxy_LAN1 = "PROXY 10.61.9.200:8080; DIRECT;"; 
    var LAN1_addr_ip4 = "10.97.100.0"; 
    var LAN1_addr_ip6 = "fe80::b892:6a74:9635:*"; // Needed for FF/TB (Mozilla)
    var proxy_no = "DIRECT";
    var alert_done = 99;

    //alert("My Addr: " + myIpAddress() + "\nURL: " + url + "\nHost: " + host);

    // If address is local, always go direct
    if( isPlainHostName(host) ) {
        //alert("Local address so no proxy");
        return proxy_no;
    }

    // Proxy if PC is on LAN1
    if (isInNet(myIpAddress(), LAN1_addr_ip4, "255.255.255.0") || shExpMatch(myIpAddress(), LAN1_addr_ip6) ) {
        //alert("LAN1 address & proxy");
        return proxy_LAN1;
    }

    // Default to a direct connection
    // alert("Default proxy (none)");
    return proxy_no;
}

/*
NOTES:
    Use alert("xxx") to find out what is happening. IE displays a pop-up, FF/TB use the error console
    Can have multiple proxies to try. Separate each with ;
    For local pac files, IE requires "file://c:\proxy.pac", FF/TB require file:///c:\proxy.pac" (extra /)
    FF/TB - myIpAddress() returns an IPv6 rather than IPv4 address for Vista and Win7 so isInNet() doesn't work!
FUNCTIONS:
    alert(text)
    isPlainHostName(host)
    shExpMatch(lookup, match)
    isInNet(address, lookup.address, netmask)
    myIpAddress()
    dnsDomainIs(host, ".foobar")
EXAMPLES:
    if (shExpMatch(url, "http://192.168.1.100*")) { return proxy_no; }
    if (isInNet(myIpAddress(), "192.168.1.0", "255.255.255.0"))
*/

正如您所看到的,这会尝试检测我们是否在特定网络上,并且仅在设置为代理时才设置代理。


我认为问题与可用性有关,即代理服务器是否出现故障。通过区分子网是不可能实现的。
双螺旋

啊,我不认为这是proxy.pac文件的工作方式。通常,您应始终为同一网络使用相同的代理地址。您应该确保您的代理具有弹性,这样,如果一个失败,还有其他人承担负担,否则您将使整个网络面临风险。这就是proxy.pac文件专注于了解您所在的网络的原因。另一个问题是IE至少每次会话只检查一次特定URL的代理。
Julian Knight
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.