`
nicegege
  • 浏览: 591109 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

[转]玩转IE之自动切换代理服务器

 
阅读更多

今天和一个朋友聊到了chrome的自动代理功能,很多人感觉这个功能非常方便,但大家或许不知道这个功能其实是继承自IE浏览器,而且在“遥远”的Windows 98时代IE就已经具有了这个功能。这个功能在IE中被称作Proxy Automatic Configuration简称PAC,这个功能在1996年由Netscape公司开发,随着被IE支持后成为一个业内统一标准。

那么我们在什么情况下需要用到PAC呢?简单的说就是我们需要对一部分网站需要用到特定的代理服务,比如我们公司的内部办公系统就需要用到一个公司的内部代理去访问,而这个代理又不能连接外网,这时候如果我们在访问这些网站时再手动设置代理就会非常麻烦。用PAC就会轻松得多。

如何配置PAC

PAC的配置方法非常简单,不需要安装任何软件或插件,只需用记事本建立一个脚步文件即可,我们可以把这个文件保存在硬盘的任何位置,也可以保存在服务器上,然后打开Internet选项 - 进入 连接 选项卡 - 点击 局域网选项 - 选中 使用自动配置脚本 选项 -  在地址里面填入你的文件位置,比如files://d:/goagent.pac ,即可完成配置。

image

PAC文件的内容

那么PAC文件中应该写些什么呢?其实这个文件只是一个在配置一个叫做FindProxyForURL(url, host)的JScript函数。比如这个文件的内容可以是:

 function FindProxyForURL(url, host) { return "PROXY DIRECT; PROXY 192.168.0.1:8080; SOCKS 192.168.1.1:1080 "; } 这是一个最简单的PAC脚本,意思就是让对于所有网站都直接进行连接,如果不能连接就尝试使用http代理192.168.0.1进行连接,如果仍然无法连接就尝试SOCKS代理192.168.1.1。

通过上面的示例大家不难看出IE在调用这个函数的时候会传入两个变量来,一个是地址URL全路经,另一个是URL中的主机名部分。而函数在返回的时候可以是三种值,DIRECT代表直接连接,PROXY代表HTTP代理,SOCKS代表SOCKS类型代理。

 

典型应用

根据URL判断是否需要代理

function FindProxyForURL(url, host) {
   if (shExpMatch(url,"*.facebook.com/*")) {
     return "PROXY 127.0.0.1:8087";
   }
   return "DIRECT";
}

shExpMatch这个函数可能是写PAC脚本中最常用到的了,在本示例中的作用实现对于facebook 域名下的页面调用127.0.0.1:8087这个代理,而其他URL直接访问。

 

代理不能解析的主机

function FindProxyForURL(url, host)
{
  if (isResolvable(host))
    return "DIRECT";
  else
    return "PROXY 127.0.0.1:8087";
}

这个isResolvable函数实现的功能就是当某个主机域名不能被正常解析的时候就尝试代理访问,比如公司内部如果有独立的DNS而这台DNS又只解析内部地址,就可以利用这个函数自由的切换内外网了,当然也可以用来对付某些ISP的域名劫持。

 

在家庭和公司之间自动切换

function FindProxyForURL(url, host)
{
if (myIpAddress() == "192.168.0.254") {
return “PROXY 127.0.0.1:80″;
}
else {
return “DIRECT”;
}
}

如果你习惯在下班后将笔记本带回家中的话myIpAddress函数将会十分有用,示例中实现的作用是当本机ip为192.168.0.254的时候就使用127.0.0.1:80这个代理,否则直接连接。

 

随机选择代理

function FindProxyForURL(url,host)
{
return randomProxy();
}

function randomProxy()
{
switch( Math.floor( Math.random() * 5 ) )
{
case 0:
return “PROXY proxy1:80″;
break;
case 1:
return “PROXY proxy2:80″;
break;
case 2:
return “PROXY proxy3:80″;
break;
case 3:
return “PROXY proxy4:80″;
break;
case 4:
return “PROXY proxy5:80″;
break;
}
}

这个示例中用了一个js中常见的随机数选择方法实现了在5个代理服务器中随机选择,这条函数的作者用意大概是平衡服务器使用量,但更重要是的是给我们打开了一个思路,让一些常见的js函数加入到PAC文件中或许能写出一些精彩有趣的函数来。

可用函数

以下列举的是可用于FindProxyForURL()函数体中的条件函数,这些函数的具体用法如果大家感兴趣请查阅互联网,这里就不详细介绍了:

基于主机名的函数:

isPlainHostName()  dnsDomainIs()  localHostOrDomainIs()  isResolvable()  isInNet()

相关的实用程序函数:

dnsResolve()  myIpAddress()  dnsDomainLevels()

基于URL/主机名的条件:

shExpMatch()

基于时间的条件:

weekdayRange()  dateRange()  timeRange()  isPlainHostName(host)

PAC辅助函数功能:
dnsDomainIs(host, domain):

如果主机是指定域一部分,否则返回false则返回true
isInNet(hostname, Resolves the hostname and subnet IP, subnet mask) :

sInNet(主机名,解决主机和子网IP地址,子网掩码返回true,如果子网内的主机名
指定IP地址和子网掩码,否则返回false
isPlainHostName(host):

isPlainHostName(主机返回true,如果没有点的主机名,否则返回false
isResolvable(host):

isResolvable(主机)Internet Explorer尝试解析主机名DNS如果成功则返回true,否则返回false
localHostOrDomainIs:

localHostOrDomainIs返回true,如果主机匹配的主机部分(主机,域)的域,或者如果主机匹配的主机和域部分,否则为false 在本地域中URL)。
dnsDomainLevels(host):

返回点的数量的主机名
dnsResolve(host):

dnsResolve(主机)返回一个字符串,其中包含指定的主机的IP地址
myIPAddress( ):

myIPAddress()返回一个字符串,其中包含了本地计算机的IP地址
shExpMatch(url, shexp):

所提供的URL,如果符合指定的shell表达,shExpMatch(URLshexp返回true,否则返回false
dateRange(parmList):

如果当前日期在指定日期parmList则返回true否则返回false
timeRange(parmList):

如果当前时间parmList指定的时间范围内,返回true,否则返回false
weekdayRange(parmList):

如果今天是的一周中指定的parmList,则返回true,否则返回false

转自:http://blog.sina.com.cn/s/blog_3dbdb89701013xy5.html

分享到:
评论

相关推荐

    IE自动切换代理

    IE 代理 proxy IE自动切换代理

    IE Proxy Swich IE 代理切换工具(绿色版)

    **IE代理切换工具详解** 标题中的“IE Proxy Swich”是一款专为Windows系统设计的代理切换工具,尤其适用于需要频繁更改网络代理设置的用户。它提供了便捷的方式,让用户能够在不同的代理配置之间快速切换,而无需...

    自动切换IE代理设置: 简单使用IE自动配置脚本

    ### 自动切换IE代理设置:简单使用IE自动配置脚本 #### 1. IE自动配置脚本概述 ##### 1.1 定义 IE自动配置脚本是一种用于自动化管理Internet Explorer浏览器代理设置的技术手段。它能够根据用户访问的目标网址...

    Proxypal(IE代理切换)

    IE的代理切换插件。对于习惯使用IE的朋友可以使用Proxypal快速的在使用代理和不适用代理之间切换了。

    IE代理服务器设置被禁用问题

    IE代理服务器设置被禁用问题 收藏  有时管理员为了限制上网,将IE代理服务器设置禁用了,我们只要通过组策略将其启用即可。  单击“开始->运行”,输入“gpedit.msc”打开组策略:  对于IE5.0/6.0 ,依次...

    设置IE浏览器代理服务器

    Edit:hua.peng Date:2015/11/19 1.用于开启和设置IE浏览器中的局域网(LAN)代理服务器。

    快速切换IE代理.VBS

    VBS脚本实现代理切换的功能,可能涉及到以下几个知识点: 1. **Visual Basic Script基础**:VBS是一种解释型的、面向对象的脚本语言,用于创建批处理任务、控制Windows操作系统、网页交互等。其语法简洁,易于学习...

    IE代理切换工具

    本工具适合需要经常切换网络环境的用户,如笔记本用户,在公司使用代理上网,在家需要取消代理! 工具小巧实用,只要执行一次,就可以实现切换,再执行一次就实现自动关闭!无毒,无广告,无害!本人自编小工具,...

    IEProxy IE代理

    IE代理 免费代理 代理服务器 快速的代理 上网代理 浏览器免费代理 代理服务器地址列表 代理服务器软件 代理IP 代理在线 Internet Explorer 免费代理 免费代理服务器 免费代理服务器地址 免费代理软件 代理IP 代理...

    自动切换多个IE窗口

    这是一个根据实际需求开发的微型VBS 简单 方便 好用 有什么问题需要技术支持 请电邮58021973@qq.com

    win7_批处理_自动切换IP_自动设置IE代理

    说明: 1、本程序用于经常需要在公司、... ④一键清除IE代理,一键设置IE代理 2、程序使用简单批处理代码,在win7下测试通过,使用本程序时,只需修改IP、网关、IE代理几个参数即可 3、有问题欢迎私信新浪微博Micro_Cai

    IE代理超级版

    除了上述功能,IE代理超级版可能还包括自动切换代理、代理服务器验证、性能优化等特性。自动切换代理可以在不同情况下自动选择最合适的代理服务器,提高网络连接的稳定性和效率。代理服务器验证确保所使用的代理是...

    命令行设置IE代理服务器设置,实现多机同时上网

    因此,本文将详细介绍如何利用批处理脚本(命令行工具)自动完成IE浏览器的代理服务器设置,从而方便地实现多台计算机共享一个互联网连接。 #### 实现原理与步骤 ##### 一、了解代理服务器的基本概念 1. **代理...

    IE浏览器 局域网代理 代理开关

    这个主题涉及到如何在Internet Explorer(IE)浏览器中设置和管理代理服务器,以便在局域网(LAN)环境中进行网络访问。代理服务器在局域网中起到中介的作用,可以用于缓存、安全过滤、或者在某些情况下,帮助用户...

    清除IE代理服务器设置

    使用网络不同,所以总要从新设置IE代理服务器,不用时再清除。每次都要在IE里点来点去的,非常麻烦。 <br>于是萌发了想制作清除IE代理服务器设置的软件。算上上网查资料的时间,共用了3、4个小时,小软件诞生了。...

    IE代理设置,vb实例,自动获取代理ip,并设置ie代理

    IE代理设置工具, 自动获取代理服务器,并设置 , 8888888888888888888888888

    IE 自动设置脚本

    4. **代理服务器配置**:通过修改注册表,可以设置IE的代理服务器,包括自动检测、特定服务器地址等。 ``` reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v ProxyServer /t REG_...

    IE 代理快速切换器

    快速的切换代理的IP,每天更新最快的IP地址,供选择!

    VB设置IE代理服务器

    这个过程对于开发需要动态切换代理的程序,或者在没有用户交互的情况下管理IE代理设置的自动化任务非常有用。请注意,直接修改注册表可能会影响系统的其他部分,因此在进行此类操作时要格外小心。

    IE代理超级版 (免费)

    3. **自动切换**:软件支持定时或按照规则自动切换代理,用户可以根据需要设置切换策略,确保网络连接的稳定性和多样性。 4. **验证功能**:内置代理验证机制,可以检查代理服务器的可用性、速度和安全性,避免使用...

Global site tag (gtag.js) - Google Analytics