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

这篇具有很好参考价值的文章主要介绍了通过SwitchyOmega插件实现Chrome的PAC模式代理网络连接。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

SwitchyOmega的安装

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

安装后打开SwitchyOmega配置,点击“圆圈"图标,选择“选项配置”。
switchyomega,软件安装配置,chrome,服务器,前端
新建情景模式
switchyomega,软件安装配置,chrome,服务器,前端
选择PAC模式
switchyomega,软件安装配置,chrome,服务器,前端

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

switchyomega,软件安装配置,chrome,服务器,前端

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 参数假定时间值为格林威治标准时间而不在本地时区。 对于希望在通信繁忙时使用代理服务器,但在通信量较少时允许直接连接的情况,此函数将十分有用。文章来源地址https://www.toymoban.com/news/detail-752246.html

function FindProxyForURL(url, host) {
    if (weekdayRange("WED", "SAT", "GMT"))
        return "PROXY proxy:80";
    else
        return "DIRECT";
}

到了这里,关于通过SwitchyOmega插件实现Chrome的PAC模式代理网络连接的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【pac文件】win10自动配置代理

    手动代理:所有地址经过代理,指定ip不经过代理 现在需求:实现指定ip范围才使用该代理 可以通过“自动设置代理”的方式实现 已有代理地址,如:192.168.18.101:808 有python环境 编写sxProxy.pac脚本 上述脚本实现:当地址中含有172.16.0…时,使用代理192.168.18.101:808访问,否则不

    2024年02月04日
    浏览(23)
  • 插件Proxy SwitchyOmega安装和使用

    SwitchyOmega 一个代理设置工具 SwitchyOmega 不提供代理服务器、VPN等网络服务。 SwitchyOmega 不会跟踪您的上网记录,不在页面中插入广告。 以两款主流浏览器 Microsoft Edge和Chrome浏览器为例演示安装过程。 其它浏览器可自行安装,步骤基本一样。 首先需要安装目标插件Proxy Switchy

    2024年01月25日
    浏览(24)
  • Chrome 插件匹配模式(Match patterns)规则

    匹配模式是采用以下结构的网址,用于指定一组网址: 1. scheme 必须是以下内容之一,并使用双斜线 ( // ) 与格式的其余部分分隔开: http https 通配符  * ,仅与  http  或  https  匹配 file 2. host 主机名 ( www.example.com )。 主机名前的  * (用于匹配子网域 ( *.example.com )),或仅使

    2024年01月19日
    浏览(26)
  • Windows7/10/11 Pac代理脚本及配置

    代理自动配置(PAC)文件是一个 JavaScript 脚本,其核心是一个 JavaScript 函数,用来决定网页浏览请求(HTTP、HTTPS,和 FTP)应当直连目标地址,还是被转发给一个网页代理服务器并通过代理连接。 以下配置保存到文件,扩展名为pac 1.界面配置 2.命令配置 以下配置保存到文件执

    2024年02月11日
    浏览(30)
  • 记录hutool http通过代理模式proxy访问外面的链接

    效果: 代码:  如何获取代理端口:  

    2024年02月10日
    浏览(47)
  • 还在苦恼如何开发一个Chrome插件吗?十分钟带你实现一个实用小插件

    你是否曾考虑过创建自己的 Chrome 插件,但又挠头毫无思路?那么在接下来的几分钟里,我不仅会介绍 Chrome 浏览器扩展的基本知识,还会指导你通过五个简单的步骤来制作自己的扩展。 知道怎么做吗?让我们一探究竟! 今年我们见证了人工智能能力的爆炸式增长。虽然cha

    2024年02月10日
    浏览(38)
  • 做了个 chrome 插件实现 B 站视频截图功能,直接从当前视频帧无损复制

    起因是看 B 站视频想截个图很麻烦,右下角暂停按钮无法去除,于是写了一行代码把暂停按钮隐藏。 后经提醒,发现可以通过 canvas 获取视频帧来截取图片,于是写了如下代码完美获取视频帧。 用法:f12 打开 console 把这段代码粘贴回车执行即可下载视频帧。 完成后又稍作改

    2024年02月07日
    浏览(43)
  • 设计模式之代理模式(Proxy),以C++为例,实现远程代理、虚拟代理、保护代理等。

            兄弟姐妹们好,又是好久没有更新了,今天给大家简单介绍代理模式,一个很简单的设计模式,旨在不改变原对象的情况下通过代理对象来控制对原对象的访问。代理模式根据具体情况还可以分为远程代理、虚拟代理、保护代理等,下面来介绍一下。 目录  一、代理

    2023年04月09日
    浏览(29)
  • 代理模式【静态代理和动态代理实现业务功能扩展】

    我们在不修改业务的情况下想要给它增加一些功能,这就需要使用代理模式。 我们不会在原有业务上直接修改,为了避免修改导致程序不可逆转的破坏。 三种角色:抽象角色-接口、真实角色-实现类和代理角色-代理类。 真实角色和代理角色继承的是同一个抽象角色接口!

    2024年02月16日
    浏览(24)
  • 代理模式以及静态代理、JDK代理、Cglib代理的实现

    介绍 1、代理模式:为对象 提供一个替身 ,以控制对这个对象的访问,即通过代理对象访问目标对象,这样做的好处是:可以在目标对象实现的基础上,增强额外的功能操作 (即: 扩展目标对象的功能 ,例如Spring AOP) 2、被代理的对象可以是 远程对象 ,创建开销大的对象

    2024年03月12日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包