Contents

问题：

问题：

什么是代理Pac文件，并且有没有任何示例？

环境：Cisco Web安全工具

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

参考链路：Javascript或JScript自动代理示例文件

Javascript或JScript自动代理示例文件

以下脚本提供示例‘.pac’文件如何可能用于指定自动代理URL。要使用这些功能，您必须更改代理名字、端口号和IP地址。

1. isInNet， isResolvable和dnsResolve功能查询DNS服务器

2. 在对象模型对象、属性或者方法的参考造成代理自动配置文件静静地发生故障。例如，参考window.open (...)，戒备(...)和密码(...)全部在Internet Explorer造成代理自动配置文件失效。

示例 1：本地主机连接直接，其他通过代理连接

看到主机名-是否的以下功能检验是否是本地主机，和，如果是，连接是直接的。如果主机名-不是本地主机，连接是通过代理(代理)。

功能FindProxyForURL (URL，主机)

{

如果(isPlainHostName(host))

返回“处理”;

返回“代理proxy:80";

}

看到isPlainHostName的功能检验是否有在主机名的任何小点-。如果那样，它返回错误;否则，功能返回真。

Note:对于与本地网络服务器的直接连接，域或子网匹配也许也是需要的。使用主机名，不是对本地网络服务器的所有的请求完成

示例 2：主机在防火墙里面连接直接，外部当地服务器通过代理连接

看到以下的功能检验主机是否作为“无格式”一个特定的域(.company.com)，但是主机名的主机名- (意味着域名不是包括的)或部分-不www或家庭。

功能FindProxyForURL (URL，主机)

{

如果((isPlainHostName(host)||

dnsDomainIs (主机， “.company.com”))&&

!! localHostOrDomainIs (主机， “www.company.com ") &&

!! localHostOrDoaminIs (主机， “home.company.com”))

返回“处理”;

返回“代理proxy:80";

}

Note:

- localHostOrDomainIs功能为在本地域的URL仅被执行。

- dnsDomainIs作用真的回归，如果主机名的域-匹配产生的域。

示例 3：如果主机是可溶解的，请连接直接。使用代理，否则请连接。

以下功能请求DNS服务器设法解决主机名-通过对它。如果它能，则直接连接做。如果它不能，联系通过代理被建立。当一个内部DNS服务器用于解决所有内部主机名时，这是有用的。

功能FindProxyForURL (URL，主机)

{

如果(isResolvable(host))

返回“处理”;

返回“代理proxy:80";

}

请参阅关于isResolvable功能的附注在页顶部。

示例 4：如果主机在指定的子网，请连接直接。使用代理，否则请连接。

以下功能一个特定IP地址模式和掩码与主机名比较-。这是有用的，如果在子网的某些主机应该直接地被连接使用代理，并且其他应该被连接。

功能FindProxyForURL (URL，主机)

{

如果(isInNet (主机， "999.99.9.9"， "255.0.255.0"))

返回“处理”;

返回“代理proxy:80";

}

请参阅关于isInNet功能的附注在页顶部。

isInNet (主机、模式，掩码)功能返回真，如果主机IP地址匹配指定的模式。掩码指示匹配的IP地址的哪个部分(255=match， 0=ignore)。

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

如果主机是本地，以下功能指定直接连接。如果主机不是本地，此功能确定哪个代理使用根据主机域。如果主机域名是其中一个代理选择的，标准这是有用的。

功能FindProxyForURL (URL，主机)

{

如果(isPlainHostName(host))

返回“处理”;

如果(shExpMatch (主机， “*.com”))

返回“代理comproxy:80";

如果(shExpMatch (主机， “*.edu”))

返回“代理eduproxy:80";

返回“代理代理”;

}

shExpMatch (str， shexp)功能返回真使用shell表达式模式，如果str匹配shexp。

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

以下功能提取使用的协议并且相应地做代理选择。如果匹配在协议没有被做，则直接连接做。如果使用的协议是其中一个代理选择的，标准这是有用的。

功能FindProxyForURL (URL，主机)

{

如果(url.substring(0， 5) == “http ：") {

返回“代理proxy:80";

}

如果(url.substring(0， 4) == “ftp ：") {

返回“代理fproxy:80";

}

如果(url.substring(0， 7) == “Gopher ：") {

返回“代理gproxy”;

}

如果(url.substring(0， 6) == “https ：") {

返回“代理secproxy:8080";

}

{

返回“处理”;

}

}

子链功能从字符串提取字符指定的编号。

示例 7：是否通过检查确定代理设置看到主机名-匹配IP地址

以下功能通过转换主机名-成IP地址和比较它做一个代理选择与指定的字符串。

功能FindProxyForURL (URL，主机)

{

如果(dnsResolve(host) == "999.99.99.999") {//= http://proxy

返回“代理secproxy:8080";

}

{

返回“代理proxy:80";

}

}

请参阅关于dnsResolve功能的附注在页顶部。

示例 8：如果主机IP配比指定了IP，通过代理连接，连接直接

以下功能是另一个方式做根据指定IP地址的代理选择。此示例，不同于示例7，使用函数调用明确地获得数字IP地址(示例7使用dnsResolve功能翻译主机名-成数字IP地址)。

功能FindProxyForURL (URL，主机)

{

如果(myIpAddress() == "999.99.999.99") {

返回“代理proxy:80";

}

{

返回“处理”;

}

}

myIpAddress作用回归IP地址(以整数小点格式浏览器运行的)的主机。

示例 9：如果有在主机名的任何小点-使用代理，请连接。否则，请连接直接。

看到多少个的以下功能检验小点在主机名-。如果有在主机名的任何小点-，请通过代理建立联系。如果没有在主机名的小点-，请做直接连接。这是另一个方式确定根据主机名的连接类型-特性。

功能FindProxyForURL (URL，主机)

{

如果(dnsDomainLevels(host) > 0) {//，如果小点的数量在主机的> 0

返回“代理proxy:80";

}

返回“处理”;

}

dnsDomainLevels作用回归每整数相等与小点的数量在主机名的-。

示例 10：指定星期通过代理连接，其他日连接直接

以下功能通过指定为代理是适当的星期确定连接类型。不下跌在这些参数之间的几天使用直接连接。此功能可能是有用的在您也许要使用代理的情况，当数据流是大量的和允许直接连接时，当数据流是灯时。

功能FindProxyForURL (URL，主机)

{

如果(weekdayRange (“星期三”， “SAT”， “GMT”))

返回“代理proxy:80";

返回“处理”;

}

weekdayRange(day1 [,day2] [，GMT])功能返回当前系统时间是否属于参数指定的范围day1、day2和GMT。需要仅第一个参数。GMT参数假定时间值在格林尼治标准时间而不是本地时区。

示例 11：与简单计算功能的负载均衡

功能FindProxyForURL (URL，主机) {

返回randomProxy();

}

功能randomProxy()

{

交换(Math.floor (Math.random () *2))

{

案例0 ：返回“代理1.1.1.1:3128;代理2.2.2.2;直接的代理; "”

案例1 ：返回“代理2.2.2.2:3128;代理1.1.1.1;直接的代理; "”

}

}

您看到案件也实现一故障切换，万一一个代理不是可用的。