zoukankan      html  css  js  c++  java
  • 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:WINDOWSsystem32driversetc,默认普通用户是没有权限访问的,我还必须更改这个文件夹的权限。


    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 = "\fileserveritproxyproxy.pac"
    tgtPath =  "C:WINDOWSsystem32driversetcproxy.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

  • 相关阅读:
    mexHttpBinding协议 【发布元数据终结点】
    Revit API创建一个拷贝房间内对象布局命令
    Revit API判断是不是柱族模板
    Revit API封装一个通用函数“过名称找元素”
    Revit手工创建族
    Revit API根据参数类型取得参数的值
    Revit Family API 创建参考平面
    Revit Family API 添加参数与尺寸标注
    osgearth earth文件规范-符号参考
    Revit API创建几何实体Solid并找到与之相交的元素
  • 原文地址:https://www.cnblogs.com/softidea/p/6194596.html
Copyright © 2011-2022 走看看