Một phiếu bầu khác cho FoxyProxy nhưng tôi sẽ đề xuất sử dụng tính năng PAC nếu thiết lập của bạn phức tạp. Tôi có hai máy chủ proxy để chọn, nhưng đôi khi chọn một máy chủ rất khó khăn. Để thiết lập FoxyProxy sử dụng PAC, hãy chuyển đến Proxy Details
tab và chọn Automatic Proxy Configuration URL
và nhập một cái gì đó như file:///home/me/.myproxy.pac
. Đây là một ví dụ về tệp PAC:
function FindProxyForURL(url, host)
{
var DIRECT = "DIRECT";
var PROXY = "PROXY myproxy.company.com:80";
var LOCAL = "PROXY localhost:8118";
var rc = "";
// alert("My IP Address is: " + myIpAddress());
// special: DIRECT / localhost
if (dnsResolve(host) == "127.0.0.1") {
rc = DIRECT;
}
// special: DIRECT / plain name (no domain name (i.e. no dots)) (e.g. http://foobar)
// (must be local to where I'm at)
else if (isPlainHostName(host)) {
rc = DIRECT;
}
else {
// special: LOCAL / not at home & restricted hosts
if ((dnsDomainIs(host, "frank.home.com")) ||
(dnsDomainIs(host, "firewall.home.com")) ||
(dnsDomainIs(host, "backupserver.home.com"))) {
// determine if we're at home or not; home can resolve the laser printer
var AT_HOME = (isResolvable("myprinter.home.com") ? true : false);
if (! AT_HOME) {
rc = LOCAL;
}
else {
rc = DIRECT;
}
}
// general: DIRECT / not at work
else {
// determine if we're at work or not; work can resolve proxy server
var AT_WORK = (isResolvable("myproxy.company.com") ? true : false);
if (! AT_WORK) {
rc = DIRECT;
}
// ASSUMED: AT_WORK
// special: LOCAL / at work & broken work links
// (must use local proxy server to connect)
else if ((host == "download.company.com") ||
(host == "search.company.com") ||
(host == "www.company.com")) {
rc = LOCAL;
}
// general: DIRECT / at work & work intranet links
else if ((dnsDomainIs(host, ".company.com")) ||
(dnsDomainIs(host, ".companylocal.com")) ||
(dnsDomainIs(host, ".legacycompany.com"))) {
rc = DIRECT;
}
// general: DIRECT / at work & 192.168.*
else if (isInNet(host, "192.168.0.0", "255.255.0.0")) {
rc = DIRECT;
}
// default: go through LOCAL
else {
rc = LOCAL;
}
}
}
// alert("Proxy for {" + host + "} is: " + rc);
return rc;
}
Lưu ý rằng ví dụ trên khá kém hiệu quả vì nó thường sẽ kết thúc với việc tra cứu DNS trên myproxy.company.com cho mỗi kết nối HTTP; Tôi mã cứng AT_HOME
và AT_WORK
trong tệp .pac thông qua một chương trình bên ngoài khi khởi động. Nhưng đó là một ví dụ về mức độ phức tạp mà bạn có thể tạo tập lệnh PAC, nếu bạn cần.