PAC自動代理文件格式,教你如何寫PAC文件


 前些天,同事給我抱怨,公司的GPO強制更改了筆記本的IE代理服務器,在辦公室還好,一回家就上不了網了,必須手動更改代理設置,真是麻煩。我想了想,proxy.pac自動代理文件應該可以解決這個問題,於是想到就做。

Proxy.pac文件的本質是javascript的一個函數,通過設定各種條件(域名,IP等等),從而讓瀏覽器加載的時候自動去尋找對應的代理服務器。比如說

function FindProxyForURL(url, host) {

               if(isInNet(myIpAddress(), "10.71.80.0", "255.255.255.0")){

                               return"PROXY 112.186.227.85:8080";
               }


               return"DIRECT";
}

當瀏覽器加載這個proxy.pac文件之后,就會自動比較自己的IP地址,如果屬於10.71.80.0/24 這個范圍,那么他就使用代理服務器112.186.227.85:8080,否則直接連接網絡。

以IE為例,可以在Option->Connection->LAN setting 中進行設置。注意IE的格式是[url=file:///C:/proxy.pac]file://c:/proxy.pac[/url], 而在某些瀏覽器里面需要改成[url=file:///C:/proxy.pac]file:///c:/proxy.pac[/url]





Proxy.pac文件寫好以后,就需要配置在一個共享的服務器上以供下載。我把他放在文件服務器fileserver的一個共享文件夾中,我的思路是域用戶登錄客戶機時,自動下載proxy.pac到本地文件夾中,同時通過配置GPO中的IE選項讓IE綁定該文件。
我找了一個現成的vb腳本下載,稍加改動路徑以便滿足自己的需要。同時因為我要把文件拷貝到C:\WINDOWS\system32\drivers\etc\,默認普通用戶是沒有權限訪問的,我還必須更改這個文件夾的權限。


Copy.vbs

Option Explicit
Dim WshShell
Dim fso
Dim USERPROFILE
Dim srcPath
Dim tgtPath
Dim computername

On Error Resume Next
Set WshShell =WScript.CreateObject("Wscript.Shell")
Set fso =WScript.CreateObject("Scripting.FilesystemObject")
USERPROFILE =WshShell.ExpandEnvironmentStrings("%USERPROFILE%")

'Set wshShell = WScript.CreateObject("WScript.Shell" )
'computername= wshShell.ExpandEnvironmentStrings("%COMPUTERNAME%" )
'WScript.Echo "Computer Name: " & computername

srcPath = "\\fileserver\it\proxy\proxy.pac"
tgtPath =  "C:\WINDOWS\system32\drivers\etc\proxy.pac"

If Not fso.FileExists(tgtPath) Then

fso.CopyFile srcPath, tgtPath, True
'wscript.echo "Copy to "+tgtPath

ElseIf fso.FileExists(srcPath) Then
ReplaceIfNewer srcPath, tgtPath

End If

Sub ReplaceIfNewer(strSourceFile, strTargetFile)
Const OVERWRITE_EXISTING = True
Dim objFso
Dim objTargetFile
Dim dtmTargetDate
Dim objSourceFile
Dim dtmSourceDate
Set objFso =WScript.CreateObject("Scripting.FileSystemObject")
Set objTargetFile = objFso.GetFile(strTargetFile)
dtmTargetDate = objTargetFile.DateLastModified
Set objSourceFile = objFso.GetFile(strSourceFile)
dtmSourceDate = objSourceFile.DateLastModified


If (dtmTargetDate < dtmSourceDate) Then
objFso.CopyFile objSourceFile.Path,objTargetFile.Path,OVERWRITE_EXISTING


End If
Set objFso = Nothing
End Sub

最后是GPO配置結果
一個是針對文件夾權限的,需要在用戶電腦的OU配置

一個是用戶的登錄腳本,比較更新時間下載最新版本的proxy.pac,同時綁定IE


經測試,在我的TMG代理服務器上能夠成功檢測到連接的客戶session。客戶機訪問My IP顯示的也是代理服務器的公網地址。Done!

http://m.blog.csdn.net/article/details?id=41650719

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM