博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PAC自动代理文件格式,教你如何写PAC文件
阅读量:5887 次
发布时间:2019-06-19

本文共 2357 字,大约阅读时间需要 7 分钟。

 前些天,同事给我抱怨,公司的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

 

你可能感兴趣的文章
8月3号__学习报告
查看>>
jQuery 1.8 Release版本发布了
查看>>
Java读书笔记03 输入输出
查看>>
html5 中的 canvas 绘制椭圆的方法
查看>>
每日英语:Female muscle | Now is not a good time to be a man
查看>>
POJ 3133 Manhattan Wiring
查看>>
vsftpd 3.0.1 正式版发布
查看>>
处理日期和时间数据--过滤日期范围
查看>>
在WCF中调用Server.MapPath 获取服务发布目录路径
查看>>
稳定排序和不稳定排序
查看>>
linq 去除list集合中的重复项。
查看>>
C++设计模式之前言
查看>>
Ubuntu 12.04安装
查看>>
mysql client命令行选项
查看>>
vc遍历网页表单并自动填写提交 .
查看>>
log4j
查看>>
自定义TabControl
查看>>
配置ORACLE 11g绿色版客户端和PLSQL远程连接环境
查看>>
wordpress wp_head()函数 浏览器顶部 空白28px 解决办法
查看>>
读书笔记:改变人心的技巧
查看>>