IE自动配置脚本(PAC)

针对不同网页使用不同代理 —— IE自动配置脚本
1.前言
2.自动配置脚本简介
3.自动配置脚本语法
4.相关例子
a、isPlainHostName(host)
b、dnsDomainIs(host, "")、localHostOrDomainIs(host, "")
c、isResolvable(host)
d、isInNet(host, "", "")
e、shExpMatch(host, "")
f、url.substring()
g、dnsResolve(host)
h、myIpAddress()
i、dnsDomainLevels(host)
j、weekdayRange()
k、随机使用代理

1.前言
有些朋友会问为什么tw没有自动代理的功能,其实IE本身就有这个功能,只要有一点点JS知识,你可以自己手动编写一个最适合自己的IE代理脚本。

2.自动配置脚本简介
自动配置脚本起的作用就是,当IE访问网页的时候会根据脚本文件里面界定的内容来访问。比方说,你在脚本文件里面限定了访问某些IP使用某个代理的时候,访问另外一些IP使用另外的代理,这就很方便通过脚本文件来完成。

3.自动配置脚本语法
一个PAC文件其实就是一个文本文件,最简单的格式就是包含一个叫FindProxyForURL的JScript函数,IE通过传入两个变量来调用这个函数,一个是用户浏览的地址URL全路经,一个是这个URL中的主机名部分(host)。

这个FindProxyForURL函数有三种可能的字符串返回值,一是"DIRECT",就是直接连接,不通过代理;二是"PROXY proxyaddr:port",其中proxyaddr和port分别是代理的地址和代理的端口;三是"SOCKS socksaddr:port",其中socksaddr和port分别是socks代理的地址和端口,一个自动代理文件可以是多个选择的组合,其中用分号(;)隔开,如:
function FindProxyForURL(url,host)
{
if (host == "www.x2009.net")
return "DIRECT";
return "PROXY myproxy:80;
PROXY myotherproxy:8080;
DIRECT";
}
把以上代码另存为proxy.pac的文件,如:e:\proxy.pac,然后在IE的菜单里"工具"->"INTEL选项"->"连接"->局域网设置

把使用自动配置脚本选上,然后在地址栏填入file://e:/proxy.pac,注意file后是两斜杠,要使设置生效,需要关闭IE再重新打开.
现在我们介绍下这个proxy.pac脚本文件,脚本的语法是js语法,js的内置函数可以使用,要实现自动配置代理,需要实现FindProxyForURL这个函数,其参数url代表要访问的连接,host代表要访问连接的主机名,该函数有三个返回参数
direct:直接连接
proxy IP:PORT
socket IP:PORT
返回结果大小写不敏感

PAC的其他内置语法见http://wp.netscape.com/eng/mozilla/2.0/relnotes/demo/proxy-live.html (已失效)
PAC脚本另外一个重要的应用是多台代理服务器并存的情况下,通过pac脚本的控制:

用户随机选择使用多台代理服务器中的任意一台来达到流量负载均衡的目的;
管理员通过PAC脚本控制用户使用和不使用某台代理服务器,这样可以空出时间对代理服务器进行维护;
让服务器工作在主备模式,当主服务器宕机时,会自动切换到其它备用服务器而不会中断服务;
根据访问目的地的不同,自动选择最佳代理服务器。
4.相关例子
下面列举几个PAC的实例
a、isPlainHostName(host),本例演示判断是否为本地主机,如http://myservername/
的方式访问,如果是直接连接,否则使用代理
function FindProxyForURL(url, host)
{
if (isPlainHostName(host))
return "DIRECT";
else
return "PROXY proxy:80";
}

b、dnsDomainIs(host, "")、localHostOrDomainIs(host, ""),本例演示判断访问主机
是否属于某个域和某个域名,如果属于.x2009.net域的主机名,而域名不是
www.x2009.net和home.x2009.net的直接连接,否则使用代理访问。
function FindProxyForURL(url, host)
{
if ((isPlainHostName(host) ||
dnsDomainIs(host, ".x2009.net")) &&
!localHostOrDomainIs(host, "www.x2009.net") &&
!localHostOrDomainIs(host, "home.x2009.net"))

return "DIRECT";
else
return "PROXY proxy:80";
}

c、isResolvable(host),本例演示主机名能否被dns服务器解析,如果能直接访问,否
则就通过代理访问。
function FindProxyForURL(url, host)
{
if (isResolvable(host))
return "DIRECT";
else
return "PROXY proxy:80";
}
d、isInNet(host, "", ""),本例演示访问IP是否在某个子网内,如果是就直接访问,
否则就通过代理,例子演示访问清华IP段的主页不用代理。
function FindProxyForURL(url, host)
{
if (isInNet(host, "166.111.0.0", "255.255.0.0"))
return "DIRECT";
else
return "PROXY proxy:80";
}
e、shExpMatch(host, ""),本例演示根据主机域名来改变连接类型,本地主机、*.edu、
*.com分别用不同的连接方式。
function FindProxyForURL(url, host)
{
if (isPlainHostName(host))
return "DIRECT";
else if (shExpMatch(host, "*.com"))
return "PROXY comproxy:80";
else if (shExpMatch(host, "*.edu"))
return "PROXY eduproxy:80";
else
return "PROXY proxy:80";
}

f、url.substring(),本例演示根据不同的协议来选择不同的代理,http、https、ftp、
gopher分别使用不同的代理。
function FindProxyForURL(url, host)
{
if (url.substring(0, 5) == "http:") {
return "PROXY proxy:80";
}
else if (url.substring(0, 4) == "ftp:") {
return "PROXY fproxy:80";
}
else if (url.substring(0, 7) == "gopher:") {
return "PROXY gproxy";
}
else if (url.substring(0, 6) == "https:") {
return "PROXY secproxy:8080";
}
else {
return "DIRECT";
}
}

g、dnsResolve(host),本例演示判断访问主机是否某个IP,如果是就使用代理,否则直
接连接。
function FindProxyForURL(url, host)
{
if (dnsResolve(host) == "166.111.8.237") {
return "PROXY secproxy:8080";
}
else {
return "PROXY proxy:80";
}
}

h、myIpAddress(),本例演示判断本地IP是否某个IP,如果是就使用代理,否则直接使
用连接。
function FindProxyForURL(url, host)
{
if (myIpAddress() == "166.111.8.238") {
return "PROXY proxy:80";
}
else {
return "DIRECT";
}
}

i、dnsDomainLevels(host),本例演示访问主机的域名级数是几级,就是域名有几个点
如果域名中有点,就通过代理访问,否则直接连接。
function FindProxyForURL(url, host)
{
if (dnsDomainLevels(host) > 0) { // if number of dots in host > 0
return "PROXY proxy:80";
}
return "DIRECT";
}

j、weekdayRange(),本例演示当前日期的范围来改变使用代理,如果是GMT时间周三
到周六,使用代理连接,否则直接连接。
function FindProxyForURL(url, host)
{
if(weekdayRange("WED", "SAT", "GMT"))
return "PROXY proxy:80";
else
return "DIRECT";
}

k、最后一个例子是演示随机使用代理,这样可以好好利用代理服务器。
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;
}
}

迅雷在IE浏览器的右键里没有“使用迅雷下载”和“使用迅雷下载全部链接”

问:

    在IE浏览器的右键没有使用迅雷下载的这项,弄的很不好用,请问如何添加“使用迅雷下载”和“使用迅雷下载全部链接”的选项呢?

答:

修复一下浏览器关联。
新版本(5.9以上)迅雷:菜单栏里的“工具”——配置——监视设置中,点”修复浏览器关联“。
老版本迅雷:菜单栏里的“工具”——浏览器支持——迅雷做为IE默认下载工具。

如果在右键菜单中还是没有“使用迅雷下载”和“使用迅雷下载全部链接”,就先卸载迅雷,再重新安装迅雷,也可考虑安装别的版本的迅雷。 

关闭(取消)Windows 2003中IE增强的安全配置的方法

因为要准备网络技能大赛,所以 今天决定把曾经卸载的windows server 2003企业MSDN版重新安装好,顺手把windows xp给卸载了。 新安装好Windows Server 2003操作系统后,打开浏览器来查询网上信息时,发现IE浏览器总是“不厌其烦”地提示,“是否需要将当前访问的网站添加到自己信任的站点中去;要是不信任的话,就无法打开指定网页;倘若信任的话,就必须单击“添加”按钮,将该网页添加到信任网站的列表中去“。一次尚可接受不过每次访问网页,都要经过这样的步骤,就显然就太烦琐了。其实我们可以通过下面的方法来取消IE对网站安全性的检查

1、依次点击“开始”-->“设置”“控制面板”,在打开的控制面板窗口中,用鼠标双击“添加或删除程序”图标,然后点击“添加和删除Windows组件”将界面切换到“添加和删除Windows组件”页面中;

2、用鼠标选中“Internet Explorer增强的安全配置”选项,将它前面方格内的勾去除,然后单击“下一步”按钮,就能将该选项从系统中删除了;

3、再单击一下“完成”按钮,退出组件删除提示窗口。 以后,再上网的时候,IE就不会自动去检查网站的安全性了,这样就能少了不少麻烦。

ok,到此,问题得到圆满解决。其实平时就很少使用IE浏览器上网,太占内存了。而其他不基于ie内核的浏览器比如Firefox火狐、Opera等的速度都非常不错。希望以上解决方法对你有用。

浏览器中的Gif图片能显示但不会播放动画的解决办法

问:

    我的IE浏览器显示GIF图片,不会动,但是能显示静态的图像,请问是什么问题。

答:

    打开IE浏览器,然后在菜单栏选择‘工具’菜单,如果没有菜单栏,请按一下’Alt’键,然后在弹出的菜单中选择 Internet选项然后选择‘高级’选项卡——找到多媒体——勾选播放网页中的动画,然后按确定就可以搞定了,如果还有什么问题,欢迎在下面的评论留言给我。

百度搜索框无法保留历史搜索记录的解决办法

问:

我的电脑是xp,不论是用腾讯TT,还是用IE7.0,都不保存了,以前双击空白搜索栏什么的都能显示以前搜过的内容…………

答:

首先需要确定的是 1、IE的工具菜单里的”Internet选项”中的”属性”—“内容”--“自动完成”中包括表单在内的内容全都打上勾了

如果都勾选上了,那么采用以下办法应该可以解决。

百度该版了,你发现一个小变化没?当你在百度搜索时会.比如你打"时间"后面就会自动出现"时间简史" 等相关的搜索. 这样的搜索不支持保存搜索记录.搜一次就没了.这是百度提供使用偏好的设置.解决方案:1.输入了搜索内容后.搜索结果下面出现的那些相关的内容后面有个(关闭)点了就行. 这样再搜索就没有相关内容的了,后来的搜索记录也有了. (####也可以进入百度提供的使用偏好里设置####)步骤如下: http://www.baidu.com/gaoji/advanced.html 注意下面的选项. 搜索框提示 是否希望在搜索拼音时显示搜索框提示 选不显示 是否希望在搜索汉字时显示搜索框提示 选不显示。

通过以上办法应该可以解决了,如果还是不行,可以在下面留言给我…

IE浏览器显示音标会乱码的解决办法

问:

我的IE长期以来都不能完整显示音标,换了好几种音标字体都没有什么用,不知道究竟是哪里的问题。
今天我偶然用Firefox在百度搜索了一个单词,才发现竟然完整的显示了音标,再换IE打开同样的页面,依然不能完整显示,看来问题已经找到了,是IE出问题了。
可是具体是哪里有问题,如何修复,还不清楚,特来求助~

补充一下:即使用金山词霸,软件内置的使用说明中,显示的音标也是不全的。
我截图上来了,麻烦看看

其中的(d3injes),中的3就是乱码了…,显示成一个口形的.

答:

请打开控制面板——打开internet选项——常规——点辅助功能
看看是不是选中下面的其中一项
"不使用网页中指定的字体样式"
"使用样式表编排文档格式"
去掉选择就好了。

IE7,IE8在浏览器上设置百度搜索的方法

当你装上IE7,IE8,你会发现浏览器自带了一个搜索框,可是这里默认是没有百度的,怎么添加呢?说起来最快的方法,就是把以下内容复制到记事本里,保存为"搜索.reg"然后双击它按照提示导入注册表,一切就搞定了,当你重新打开浏览器,是不是就能看到了呢!赶快行动吧! Windows Registry Editor Version 5.00 [HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\SearchScopes] "DefaultScope"="{CDB051F2-166F-408A-B5AD-852FBEB67EB5}" "Version"=dword:00000001 [HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\SearchScopes\{CDB051F2-166F-408A-B5AD-852FBEB67EB5}] "DisplayName"="baidu" "FaviconURL"="http://www.baidu.com/favicon.ico" "OSDFileURL"="http://www.ieaddons.com/cn/DownloadHandler.ashx?ResourceId=857" "URL"="http://www.baidu.com/s?tn=myejin_pg&wd={searchTerms}&cl=3&ie=utf-8" "Codepage"=dword:0000fde9

如何改变IE浏览器的首页,以及首页设置变成灰色锁定,标题栏修复

问:

    请问如何修改IE浏览器的首页设置?新装的系统,还不太会设置.

答:

常规方法

    打开IE浏览器,如果你的是IE7,请先按一下Alt键,就会出现菜单栏,然后点”工具”菜单,然后点”Internet 属性”.将首页的文字输入框里的内容设置为您需要设置的地址,比如www.x2009.net

如果以上方法无效,请尝试以下方法.

注册表的修改方法

    点击Windows界面左下角的"开始"按钮---->运行---->输入"regedit"---->HKEY   CURRENT USER---->software---->Microsoft---->Internet Explorer---->Main---->Start Page.   这个键的键值是可以修改的.用户可以根据自己的需要更改.注:不要输入"http://" 例如首页想要改为"https://www.x2009.net直接输入https://www.x2009.net既可.

如果以上2种方法都是无效,请检测电脑是否中了病毒或者木马,请更新您的杀毒软件和查杀木马工具,完成之后再执行以上操作即可.

IE8如何安装支付宝安全登陆验证插件

问:

IE8.0如何安装支付宝安全控件?

答:

    先在支付宝首页上下载支付宝安全控件“aliedit.exe”,右键点击其属性,在“兼容性”里面将以“Windows XP SP2模式”上打上勾,并以管理员模式重新安装!然后依次打开浏览器上的“工具”-“选项”-“高级”-“启用内存保护以减少联机攻击”,将前面的勾去掉,重启IE8,进入支付宝登录页面,出现ActiveX控件提示的时候选择启用,大概2~3次的样子,然后就一切正常了!要将以下三个网址加入IE的可信站点就可以了

http://*.taobao.com

https://*.taobao.com

https://*.alipay.com

https://www.x2009.net

我就这样设置的,然后就可以用了.

解决Internet Explorer下载文件99%时停止下载的问题

“99%下载门”说的就是在IE浏览器或其他下载软件下载网络资源时,进行到99%时就停了,不能结束下载的问题。关于这类问题相信不少朋友都遇到过,那么出现这种情况主要是由什么原因引起的?有什么切实可效的解决办法呢?下面就一起来讨论讨论。
下载到99%时就不动了,排除宽带掉线的因素,这时其实文件已经下载完成,可以在Internet的临时目录中找到。问题出在下载文件从Internet临时目录移到指定下载目录这一步没有执行。目前对于这种问题的解决办法主要有以下几种:
1、找内因
这包括当前使用的浏览器是否遭到损坏、有恶意插件干扰、防病毒软件文件监控设置等。可以先从浏览器自身设置原因下手,比如IE浏览器安全防范级别的调整,可进入“Internet选项”设置对话框,然后在“高级”标签项下,取消“检查下载程序的签名”的勾选,并检查勾选“允许运行或安装软件,即使签名无效”一项,如图1所示。

另外就是对Internet临时文件存储的考虑,前面我们已经提到,因为下载软件时是先下载到临时文件夹下,然后再移动到指定目录,如果指定目录的磁盘空间不够或写入权限不够,就会出现下载到99%中断的问题。如何解决呢?可以尝试指定另外的下载文件存放位置,也可尝试清空临时文件夹以及Cookies,如图2所示;然后再重新下载一次。

如果以上步骤实施后未见效果,可以考虑使用一些浏览器修复工具来排除这种可能,比如超级兔子的IE修复功能等;当然也可以将所用浏览器重新安装一次。
2、请外援
如果是下载视频文件时遇到这类情况,而又不想使用前面介绍的那些步骤一一去排查系统错误,则可以试试“Fix Video”这款软件,如图3所示;利用它可以简单快速地修复损毁、没下载完、无法拖动或无法播放的divx、avi、asf、wmv、wma、rm、rmvb等格式文件。不过实际修复的完整情况不是很理想,但至少提供了一种便捷的解决方法,可以一试。

另外,目前大部分专注于下载领域的软件,针对用户遇到的这种问题都提供了相应的解决方案,比如快车下载软件,就在它最新的FlashGet2.3版本中指出了“新增BT文件校验算法,减少99%完成不了的情况”更新功能,如图4所示。这种更新的实质就是:将在本文之前介绍的那些解决办法的思路都融入了自己的版本更新中,使得用户在使用专门的下载软件下载资源时,不知不觉中就避免了“99%下载门”的影响。这也算得上是最好最便捷的一种化解办法了。

“99%下载门”问题不仅是在用浏览器下载时会遇到,在使用快车、Bit Comet等专用下载软件时也会出现类似问题,它其实是属于一种普遍性而又趋于表面的问题。应该说,这类问题的出现大部分都是自身原因引起的,只需要仔细检查一下你的网络环境,基本都可以解决。