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

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

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] ) 函数将返回当前系统时间是否位于参 day1day2GMT指定的范围之内。 只有第一个参数是必需的。 GMT 参数假定时间值为格林威治标准时间而不在本地时区。 对于希望在通信繁忙时使用代理服务器,但在通信量较少时允许直接连接的情况,此函数将十分有用。

function FindProxyForURL(url, host) {
    if (weekdayRange("WED", "SAT", "GMT"))
        return "PROXY proxy:80";
    else
        return "DIRECT";
}
  • 5
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要基于SSH隧道和Chrome插件SwitchyOmega通过跳板机访问内网机器,你可以按照以下步骤进行设置: 1. 首先,确保你可以通过SSH登录到跳板机。跳板机是一个可以访问内网机器的中间机器。 2. 在本地计算机上安装SSH客户端,比如OpenSSH(Windows上可以使用PuTTY)。 3. 使用SSH客户端创建一个SSH隧道,将本地计算机的某个端口与跳板机的某个端口进行绑定。例如,如果你希望访问内网机器的SSH服务(默认端口22),可以执行以下命令: ``` ssh -L 8888:内网机器IP:22 用户名@跳板机IP ``` 这将在本地计算机的8888端口上创建一个SSH隧道,将流量转发到跳板机再转发到内网机器的SSH服务。 4. 安装Chrome浏览器插件SwitchyOmega,它可以帮助你设置指定规则的代理服务器。 5. 打开SwitchyOmega插件的选项页面,并创建一个新的情景模式(Profile),将代理服务器设置为本地计算机上创建的SSH隧道,即将代理服务器配置为`127.0.0.1:8888`。 6. 在SwitchyOmega中设置规则,将需要通过SSH隧道访问的内网网址或域名配置为使用刚刚创建的情景模式。 7. 确保SwitchyOmega插件已经启用,并且选择了刚刚创建的情景模式。 现在,当你访问被配置为使用SSH隧道的内网网址或域名时,Chrome浏览器将通过SSH隧道连接到跳板机,然后再通过跳板机连接到内网机器,实现访问内网机器的功能。 请注意,这只是一种基于SSH隧道和SwitchyOmega插件的方法,你也可以尝试其他工具和方法来实现类似的目的。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值