通过SwitchyOmega插件实现Chrome的PAC模式代理网络连接

文章目录

通过SwitchyOmega插件实现Chrome的PAC模式代理网络连接SwitchyOmega的安装PAC脚本示例示例 1:如果主机是本地主机,则直接连接示例 2:如果主机在防火墙内部,则直接连接示例 3:如果主机名可解析,则直接连接示例 4:如果主机在指定的子网中,则直接连接示例 5:根据主机域确定连接类型示例 6:根据协议确定连接类型示例 7:根据与 IP 地址匹配的主机名确定代理服务器示例 8:如果主机 IP 地址与指定 IP 地址匹配,则使用代理服务器连接示例 9:如果主机名中有句点,则使用代理服务器连接示例 10:根据特定的星期几使用代理服务器连接

SwitchyOmega的安装

SwitchyOmega插件下载地址:https://github.com/FelisCatus/SwitchyOmega/releases

安装后打开SwitchyOmega配置,点击“圆圈"图标,选择“选项配置”。 新建情景模式 选择PAC模式

根据自己的网络配置进行PAC脚本编写,在编写完成之后,需要点击”应用选项“保存。

PAC脚本示例

PAC即使用自动代理配置脚本优化性能 ,PAC脚本采用javaScript脚本语言编写。

示例 1:如果主机是本地主机,则直接连接

在此示例中,如果主机是本地主机,则可以直接连接。 但是,如果服务器不是本地服务器,则必须通过代理服务器连接。 isPlainHostName 函数将检查主机名中是否存在任何句点 (.)。 如果该函数发现句点,则意味着主机不是本地主机,它将返回 False。 否则,该函数将返回 True。

function FindProxyForURL(url, host){

if (isPlainHostName(host))

return "DIRECT";

else

return "PROXY proxy:80";

}

示例 2:如果主机在防火墙内部,则直接连接

在此示例中,如果主机在防火墙内部,则可以直接连接。 但是,如果服务器在防火墙外部,则必须通过代理服务器连接。 具体而言,localHostOrDomainIs 函数将仅针对本地域中的 URL 运行。 如果主机域名与提供的域信息匹配,dnsDomainIs 函数将返回 True。

function FindProxyForURL(url, host) {

if ((isPlainHostName(host) ||

dnsDomainIs(host, ".company.com")) &&

!localHostOrDomainIs(host, "www.company.com") &&

!localHostOrDoaminIs(host, "home.company.com"))

return "DIRECT";

else

return "PROXY proxy:80";

}

示例 3:如果主机名可解析,则直接连接

在此示例中,如果主机名可解析,则可以直接连接。 但是,如果无法解析该名称,则服务器必须通过代理服务器连接。 具体而言,此函数会请求 DNS 服务器解析传递给它的主机名。 如果该名称可以解析,则进行直接连接。 如果该名称无法解析,则使用代理进行连接。 这在使用内部 DNS 服务器解析所有内部主机名时十分有用。

重要提示 isResolvable 函数将查询域名系统 (DNS) 服务器。 对 Object Model 对象、属性或方法的引用将导致代理自动配置文件以静默方式失败。 例如,所有 window.open(...)、alert(...) 和 password(...) 引用都将导致代理自动配置文件失败。

function FindProxyForURL(url, host) {

if (isResolvable(host))

return "DIRECT";

else

return "PROXY proxy:80";

}

示例 4:如果主机在指定的子网中,则直接连接

在此示例中,如果主机在指定的子网中,则可以直接连接。 但是,如果服务器在指定的子网外部,则必须通过代理服务器连接。 具体而言,如果主机 IP 地址匹配特定的模式, isInNet (主机、模式、掩码)函数将返回 Ture。 掩码指示要匹配的 IP 地址的哪一部分(255=匹配,0=忽略)。

重要提示 isInNet 函数将查询 DNS 服务器。 对 Object Model 对象、属性或方法的引用将导致代理自动配置文件以静默方式失败。 例如,所有 window.open(...)、alert(...) 和 password(...) 引用都将导致代理自动配置文件失败。

function FindProxyForURL(url, host) {

if (isInNet(host, "999.99.9.9", "255.0.255.0"))

return "DIRECT";

else

return "PROXY proxy:80";

}

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

在此示例中,如果主机是本地主机,服务器可以直接连接。 但是,如果主机不是本地主机,此函数将根据主机域确定使用哪个代理。 具体而言,如果 shExpMatch(str, shexp) 匹配使用 shell 表达式模式的 str,则 shexp 函数返回 True。 这在主机域名是用于代理选择的一个条件时十分有用。

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";

}

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

在此示例中,将从服务器中提取正在使用的协议,并将其用于选择代理。 如果没有匹配的协议,服务器将直接连接。 具体而言,substring 函数将从字符串中提取指定数目的字符。 这在协议是用于代理选择的一个条件时十分有用。

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, 6) == "https:") {

return "PROXY secproxy:8080";

}

else {

return "DIRECT";

}

}

示例 7:根据与 IP 地址匹配的主机名确定代理服务器

在此示例中,通过将主机名转换为 IP 地址,然后将该地址与指定的字符串进行比较来选择代理服务器。

重要提示 dnsResolve 函数将查询 DNS 服务器。 对 Object Model 对象、属性或方法的引用将导致代理自动配置文件以静默方式失败。 例如,所有 window.open(...)、alert(...) 和 password(...) 引用都将导致代理自动配置文件失败。

function FindProxyForURL(url, host) {

if (dnsResolve(host) == "999.99.99.999") { // = https://secproxy

return "PROXY secproxy:8080";

}

else {

return "PROXY proxy:80";

}

}

示例 8:如果主机 IP 地址与指定 IP 地址匹配,则使用代理服务器连接

在此示例中,通过显式获取 IP 地址,然后将其与指定字符串进行比较来选择代理服务器。 如果没有匹配的协议,服务器将直接连接。 具体而言,myIpAddress 函数将返回运行浏览器的主机的 IP 地址(采用整数句点格式)。

function FindProxyForURL(url, host) {

if (myIpAddress() == "999.99.999.99") {

return "PROXY proxy:80";

}

else {

return "DIRECT";

}

}

示例 9:如果主机名中有句点,则使用代理服务器连接

在此示例中,函数将检查主机名中是否存在句点 (.)。 如果存在任何句点,将使用代理服务器连接。 如果没有句点,将直接连接。 具体而言,dnsDomainLevels 函数将返回与主机名中句点数目相等的整数。

注意 这是根据主机名特征确定连接类型的另一种方法。

function FindProxyForURL(url, host) {

if (dnsDomainLevels(host) > 0) { // if the number of periods in host > 0

return "PROXY proxy:80";

}

return "DIRECT";

}

示例 10:根据特定的星期几使用代理服务器连接

在此示例中,函数将根据星期几确定是否连接到代理服务器。 在指定日期参数范围之外的日期连接可以使服务器进行直接连接。 具体而言, weekdayRange(day1 [,day2] [,GMT] ) 函数将返回当前系统时间是否位于参 day1、 day2和 GMT指定的范围之内。 只有第一个参数是必需的。 GMT 参数假定时间值为格林威治标准时间而不在本地时区。 对于希望在通信繁忙时使用代理服务器,但在通信量较少时允许直接连接的情况,此函数将十分有用。

function FindProxyForURL(url, host) {

if (weekdayRange("WED", "SAT", "GMT"))

return "PROXY proxy:80";

else

return "DIRECT";

}

好文推荐

评论可见,请评论后查看内容,谢谢!!!评论后请刷新页面。