2008年6月29日 星期日

瀏覽器 Proxy 自動組態指令碼

將以下文字另存為文字檔,檔案名稱為 proxy.pac:

function FindProxyForURL(url, host)
{
if( dnsDomainIs(host, "localhost") ||
dnsDomainIs(host, "hinet.net") ||
dnsDomainIs(host, "ntu.edu.tw")) {
return "DIRECT";
}
else if (isInNet(host, "192.168.10.0", "255.255.255.0") ||
isInNet(host, "10.12.0.0", "255.255.255.0") ||
isInNet(host, "140.112.0.0", "255.255.255.0")) {
return "DIRECT"
}
else if( dnsDomainIs(host, "yahoo.com.tw") ||
dnsDomainIs(host, "yahoo.com") ||
dnsDomainIs(host, "msgr.hotmail.com") ||
isPlainHostName("mail")) {
return "PROXY proxy.ntu.edu.tw:8080";
}
else {
return "PROXY proxy.moe.edu.tw:3128";
}
}

前二個區段是指出位於校內的網址和 ip 區段,這些都不經由 proxy 直接連接,其餘的全都經由 proxy moe.edu.tw 使用教育部的代理伺服器出去,這樣子可以獲得比較好的連線品質;但是 yahoo 和 MSN Messenger 等教育部無法接受的內容部份,則改使用 proxy.ntu.edu.tw 台大本身的代理伺服器而後面的 8080 表示代理伺服器使用的埠號。

請小心注意其中括弧(() 和 {})的配對使用!先前我設定不成功的原因,多半是因為沒有成雙成對地使用。

而 .pac 檔的設定,會因為不同的環境而有差異,尤其像 mail.yahoo.com.tw 或 MSN Messenger 到底真實地是怎麼連線方式情況,各位可以試著先將 Proxy 設定全部取消,然後在 DOS 命令提示字元中輸入「netstat」,即可看到目前本機的所有對外網路連線狀態:

C:\>netstat
Active Connections
Proto Local Address Foreign Address State
TCP MIS01:1096 baym6-cs8.messenger.hotmail.com:1863 ESTAED
TCP MIS01:1523 cwb.hinet.net:http TIME_WAIT
TCP MIS01:1529 edit.vip.tpe.yahoo.com:http TIME_WAIT
TCP MIS01:1530 pic24.pic.wretch.cc:http ESTABLISHED
TCP MIS01:1535 bs2.ads.vip.krs.yahoo.com:http TIME_WAIT
TCP MIS01:1537 s5.wretch.cc:http ESTABLISHED
TCP MIS01:1538 s5.wretch.cc:http ESTABLISHED

再將「正確的」網址填入 proxy.pac 檔中,記得該 Internet Explorer 必須要關閉後重新開啟,才會抓取新的 Proxy 設定檔哦!

最後就可以將 proxy.pac 發佈出來了!將其上傳到大家都可以連結的特定網站上(測試時,可以放在本來,位置標示方式類似 file://C:\proxy.pac ),然後點選 Internet Explorer 瀏覽器中的「工具」→「網際網路選項」→點選「連線」標籤頁中的「區域網路設定」按鈕→啟用「使用自動組態指令碼」,然後將您的位置填入,例如:http://proxy.ntu.edu.tw/proxy.pac。

補充資料:http://www.cses.tcc.edu.tw/~chihwu/proxy-pac.htm

沒有留言: