Ano ang PAC file?
Ang isang file na may extension na .pac (Proxy Auto-Configuration) ay isang configuration file na naglalaman ng mga panuntunan sa pagpapadala ng mga kahilingan sa web nang direkta sa internet o ruta ang mga ito sa pamamagitan ng isang proxy server. Naglalaman ito ng JavaScript function na nagruruta sa mga kahilingan sa web sa pamamagitan ng ilang web proxy server sa halip na ipadala ang mga ito nang direkta sa patutunguhan. Ang isang proxy server ay tulad ng isang man-in-the-middle na tumatanggap ng mga kahilingan mula sa maraming kliyente at inihahatid ang mga ito sa pamamagitan ng pagpapasa sa mga destinasyon. Ginagamit ang mga ito upang kontrolin ang pagkarga sa trapiko sa internet. Maaaring mabuksan ang mga PAC file gamit ang anumang text editor gaya ng Microsoft Notepad.
Higit pang Impormasyon tungkol sa PAC File Format
Ang mga PAC file ay unang ipinakilala sa Netscape Navigator noong 1990. Ang mga PAC file ay nakasulat sa simpleng JavaScript na format ng teksto at nababasa ng tao. May opsyon ang mga web browser na tukuyin ang impormasyon ng URL ng proxy server mula sa kung saan kinukuha ang listahan ng mga proxy URL.
Ang function na tinukoy sa loob ng PAC gamit ang JavaScript ay ang sumusunod:
function FindProxyForURL(url, host) {
// ...
}
Halimbawang PAC File
function FindProxyForURL(url, host) {
// If the hostname matches, send direct.
if (dnsDomainIs(host, "intranet.domain.com") ||
shExpMatch(host, "(*.abcdomain.com|abcdomain.com)"))
return "DIRECT";
// If the protocol or URL matches, send direct.
if (url.substring(0, 4)=="ftp:" ||
shExpMatch(url, "http://abcdomain.com/folder/*"))
return "DIRECT";
// If the requested website is hosted within the internal network, send direct.
if (isPlainHostName(host) ||
shExpMatch(host, "*.local") ||
isInNet(dnsResolve(host), "10.0.0.0", "255.0.0.0") ||
isInNet(dnsResolve(host), "172.16.0.0", "255.240.0.0") ||
isInNet(dnsResolve(host), "192.168.0.0", "255.255.0.0") ||
isInNet(dnsResolve(host), "127.0.0.0", "255.255.255.0"))
return "DIRECT";
// If the IP address of the local machine is within a defined
// subnet, send to a specific proxy.
if (isInNet(myIpAddress(), "10.10.5.0", "255.255.255.0"))
return "PROXY 1.2.3.4:8080";
// DEFAULT RULE: All other traffic, use below proxies, in fail-over order.
return "PROXY 4.5.6.7:8080; PROXY 7.8.9.10:8080";
}