代理 PAC 文件是什么?有哪些示例?

您所在的位置:网站首页 pac连接是什么意思 代理 PAC 文件是什么?有哪些示例?

代理 PAC 文件是什么?有哪些示例?

2024-07-17 17:31| 来源: 网络整理| 查看: 265

问题:

什么是代理Pac文件?是否有任何示例?

环境: 思科网络安全设备

注意:此知识库文章中提及了思科不维护或支持的软件。  提供该信息只是为了方便您使用。如需进一步协助,请联系软件供应商。

参考链接:JavaScript或JScript自动代理示例文件

JavaScript或JScript自动代理示例文件

下面的脚本作为示例,展示了如何使用“.pac”文件指定自动代理 URL。要使用此功能,您必须先更改代理名称、端口编号和 IP 地址。

isInNet、isResolvable和dnsResolve函数查询DNS服务器 对对象模型对象、属性或方法的引用会导致代理自动配置文件以静默方式失败。例如,参考window.open(...)、alert(...)和password(...)都会导致代理自动配置文件在Internet Explorer上失败。

示例1:本地主机直接连接,所有其他主机通过代理连接

以下函数检查主机名是否为本地主机,如果是,检查连接是否直接。如果主机名不是本地主机,则通过代理(代理)进行连接。函数FindProxyForURL(url, host) { if (isPlainHostName(host)) 返回“直接”; 其他 返回"PROXY proxy:80"; }

isPlainHostName函数检查主机名中是否存在任何点。如果是,则返回false;否则,函数返回true。

注意:对于与本地Web服务器的直接连接,可能还需要匹配域或子网。并非所有对本地Web服务器的请求都仅使用主机名完成

示例2:防火墙内的主机直接连接,外部本地服务器通过代理连接

以下函数检查主机名是“普通”主机名(意味着不包括域名)还是特定域(.company.com)的一部分,但主机名不是www或home。函数FindProxyForURL(url, host) { if ((isPlainHostName(host)) || dnsDomainIs(主机,“.company.com”))&& !localHostOrDomainIs(host, "www.company.com") && !localHostOrDomainIs(host, "home.company.com")) 返回“直接”; 其他 返回"PROXY proxy:80"; }

注意:

localHostOrDomainIs函数仅对本地域中的URL执行。 如果主机名的域与给定的域匹配,dnsDomainIs函数将返回true。

示例3:如果主机可解析,请直接连接。否则,使用代理进行连接。

以下函数要求DNS服务器尝试解析向其传递的主机名。如果可以,则建立直接连接。如果不能,则通过代理建立连接。当使用内部DNS服务器解析所有内部主机名时,此功能非常有用。函数FindProxyForURL(url, host) { if (isResolvable(host)) 返回“直接”; 其他 返回"PROXY proxy:80"; }

请参阅页面顶部的isResolvable函数注释。

示例4:如果主机在指定子网中,请直接连接。否则,使用代理进行连接。

以下函数将给定的IP地址模式和掩码与主机名进行比较。如果子网中的某些主机应直接连接,而其它主机应使用代理连接,则此命令非常有用。函数FindProxyForURL(url, host) { if (isInNet(host, "999.99.9.9", "255.0.255.0")) 返回“直接”; 其他 返回"PROXY proxy:80"; }

请参见页顶部的isInNet函数注释。

如果主机IP地址与指定的模式匹配,isInNet(host, pattern, mask)函数将返回true。掩码指示要匹配的IP地址部分(255=match, 0=ignore)。

示例5:根据主机域确定连接类型

如果主机是本地主机,则以下函数指定直接连接。如果主机不是本地主机,此功能将根据主机域确定使用哪个代理。如果主机域名是选择代理的条件之一,则此命令很有用。函数FindProxyForURL(url, host) { if (isPlainHostName(host)) 返回“直接”; else if (shExpMatch(host, "*.com")) 返回"PROXY comproxy:80"; else if (shExpMatch(host, "*.edu")) 返回"PROXY eduproxy:80"; 其他 返回“代理代理"; }

如果str使用shell表达式模式与shexp匹配,shExpMatch(str, shexp)函数将返回true。

示例6:根据使用的协议确定连接类型

以下函数提取正在使用的协议,并相应地选择代理。如果未在协议上进行匹配,则建立直接连接。如果使用的协议是代理选择的标准之一,则此命令很有用。函数FindProxyForURL(url, host) { if (url.substring(0, 5) == "http:") { 返回"PROXY proxy:80"; } else if (url.substring(0, 4) == "ftp:") { 返回"PROXY fproxy:80"; } else if (url.substring(0, 7) == "gopher:") { 返回"PROXY gproxy"; } else if (url.substring(0, 6) == "https:") { 返回"PROXY secproxy:8080"; } 其他{ 返回“直接”; } }

子字符串函数从字符串中提取指定数量的字符。

示例7:通过检查主机名是否与IP地址匹配来确定代理设置

以下函数通过将主机名转换为IP地址并将其与指定字符串进行比较来选择代理。函数FindProxyForURL(url, host) { if (dnsResolve(host) == "999.99.99.999") { // = http://proxy 返回"PROXY secproxy:8080"; } 其他{ 返回"PROXY proxy:80"; } }

请参阅页面顶部有关dnsResolve功能的说明。

示例8:如果主机IP与指定的IP匹配,请通过代理连接,否则请直接连接

以下功能是基于指定IP地址进行代理选择的另一种方法。与示例7不同,此示例使用函数调用显式获取数字IP地址(示例7使用dnsResolve函数将主机名转换为数字IP地址)。函数FindProxyForURL(url, host) { if (myIpAddress() == "999.99.999.99") { 返回"PROXY proxy:80"; } 其他{ 返回“直接”; } }

myIpAddress函数返回运行浏览器的主机的IP地址(采用整数点格式)。

示例9:如果主机名中有任何点,请使用代理连接。否则,请直接连接。

以下函数检查主机名中的点数。如果主机名中有任何点,请通过代理建立连接。如果主机名中没有圆点,请建立直接连接。这是根据主机名特征确定连接类型的另一种方法。函数FindProxyForURL(url, host) { 如果(dnsDomainLevels(host) > 0) { // if the number of dots in host > 0 返回"PROXY proxy:80"; } 返回“直接”; }

dnsDomainLevels函数返回一个整数,等于主机名中的点数。

示例10:指定星期几通过代理连接,其他天直接连接

以下函数通过指定适用于代理的一周中的天数来确定连接类型。不介于这些参数之间的天数使用直接连接。在流量较大时您可能想要使用代理,而在流量较小时允许直接连接的情况下,此功能非常有用。函数FindProxyForURL(url, host) { if(weekdayRange(“星期三”、“星期六”、“GMT”)) 返回"PROXY proxy:80"; 其他 返回“直接”; }

weekdayRange(day1 [,day2] [,GMT])函数返回当前系统时间是否在参数day1、day2和GMT指定的范围内。只需要第一个参数。GMT参数假定时间值为格林威治标准时间,而不是本地时区。

示例11:使用简单数学函数执行负载均衡

函数FindProxyForURL(url, host){return randomProxy();}function randomProxy(){switch( Math.floor( Math.random() *2)){案例0:返回“PROXY 1.1.1.1:3128; PROXY 2.2.2.2; PROXY DIRECT;”案例1:返回“PROXY 2.2.2.2:3128; PROXY 1.1.1.1; PROXY DIRECT;”}}

您将看到,在一个代理不可用时,这些情况还实施故障切换。



【本文地址】


今日新闻


推荐新闻


    CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3