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

news2024/11/25 4:48:54

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/144058.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

华为云、阿里云、腾讯云、百度云、浪潮云、金山云-云计算能力横向对比

导读 近些年,各大公司和码农们对云服务需求日益增长,大家不断在问“做云服务和物联网服务器的到底哪家强?”。网上也有不少人给出简单的答案,“明显是腾讯云,华为云的应用还没那么广泛,目前最好的有三个&am…

SpringBoot统一功能处理实现

⭐️前言⭐️ 这篇文章主要介绍Spring Boot的统一功能处理模块,也是AOP的实战环节。 🍉欢迎点赞 👍 收藏 ⭐留言评论 📝私信必回哟😁 🍉博主将持续更新学习记录收获,友友们有任何问题可以在评论…

ORB-SLAM2 --- KeyFrameDatabase::DetectLoopCandidates函数

目录 1.函数作用 2.函数流程 3.函数解析 3.1 传入参数解析 3.2 找出和当前帧具有公共单词的所有关键帧,不包括与当前帧连接的关键帧 3.3 统计上述所有闭环候选帧lKFsSharingWords中与当前帧具有共同单词最多的单词数,用来决定相对阈值 3.4 遍…

java基于ssm的图书管理系统图书借阅管理网站图书管理网站源码

简介 本项目是图书借阅管理系统,主要实现了对图书的管理和借阅。 演示视频 https://www.bilibili.com/video/BV14p4y1H7GQ/?share_sourcecopy_web&vd_sourceed0f04fbb713154db5cc611225d92156 技术 ssmjqueryajaxmysql 角色 管理员学生 功能 管理员&am…

带着刚刷题的你一步步学会刷题:989. 数组形式的整数加法

这是一道很经典的题目啊,考的就是数字数组转换,思路不难,但是在写的时候一步一步改代码,去优化复杂度,也是有助于学习的,今天刷了一下,也分享出来,建议刚开始刷题的友友们可以做一做…

【 java 集合】Map 接口常用实现类对比

📋 个人简介 💖 作者简介:大家好,我是阿牛,全栈领域优质创作者。😜📝 个人主页:馆主阿牛🔥🎉 支持我:点赞👍收藏⭐️留言&#x1f4d…

P9 PyTorch 导数,偏微分,梯度

参考: 多元函数的偏导数、方向导数、梯度以及微分之间的关系思考 - 知乎 关于梯度下降与Momentum通俗易懂的解释_ssswill的博客-CSDN博客_有momentum之后还要梯度剪裁吗 前言: 这里简单了解一下 导数 梯度 微分的概念。 在前面矩阵求导术里面介绍过 梯…

表格控件DHTMLX Spreadsheet 5.0版本重大更新,新增搜索和过滤数据、合并单元格、自动宽度功能

DHTMLX Spreadsheet是用纯JavaScript编写的开源电子表格小部件,可让您快速在网页上添加类似于Excel的可编辑数据表。高度可定制的JavaScript电子表格组件,具有优雅的Material样式,可安全、方便地编辑和格式化数据。本文给大家讲解DHTMLX Gant…

4种大文件传输工具和软件,用于共享大文件

无论是个人还是与团队一起工作,大文件传输软件和网站都能协助提高工作效率、有效地管理工作内容。疫情原因有时我们不得不居家办公,在这种情况下可以分享文件的工具就显得尤为重要。 每个公司都需要一个文件传输软件,让员工可以上传和分享他…

【华为机试真题详解】不含 101 的数(二)【2022 Q4 | 100分】

文章目录 前言题目解析参考代码前言 《华为机试真题详解 Python实现》专栏含牛客网华为专栏、华为面经试题、华为OD机试真题。 如果您在准备华为的面试,期间有想了解的可以私信我,我会尽可能帮您解答,也可以给您一些建议! 本文解法非最优解(即非性能最优),不能保证通过…

Docker 从入门到精通

目录 一、安装Docker 1. 安装必要的包 2. 设置镜像的仓库 3. 更新软件包的索引 4. 安装docker 5. 启动docker 6. 测试 hello-world 7. 查看的hello-world镜像 8. 卸载docker 9. 配置阿里云镜像加速 二、Docker 常用命令 镜像命令 (1)docker …

4.2 集成运放中的电流源电路

集成运放电路中的晶体管和场效应管,除了作为放大管外,还构成电流源电路,为各级提供合适的静态电流;或作为有源负载取代高阻值的电阻,从而提高放大电路的放大能力。 一、基本电流源电路 1、镜像电流源 图4.2.1所示为…

SAP FICO 内部订单解析

内部订单提供成本控制和短期的工作与任务的监测。内部订单通常被用于内部工作和任务的计划、信息收集和成本清算等等,如市场营销活动和工作修复等。成本中心用于长期成本管理,而内部订单则用于中短期的成本征收。整个订单生命周期过程(从订单…

mysqldump命令备份数据库数据

#MySQLdump常用 mysqldump -u root -p --databases 数据库1 数据库2 > xxx.sql备份全部数据库的数据和结构mysqldump -u root -hlocalhost -p123456 -A > /data/mysqlDump/mydb.sql备份全部数据库的结构(加-d参数)mysqldump -u root -hlocalhost -p123456 -A -d > /da…

【测试】Bug篇

努力经营当下,直至未来明朗! 文章目录一. 如何创建Bug二.Bug的级别三.Bug的生命周期四.跟开发起争执怎么办【高频面试题】:sparkles:小结普通小孩也要热爱生活! 一. 如何创建Bug 创建Bug的要素&#xff1…

逻辑卷管理器:PV、PE、VG、LV

LVM:Logical Volume Manager,逻辑卷管理器。重点:可以弹性的调整文件系统的容量,而不在于性能和数据安全上面,因此如果强调性能和备份,那么直接使用raid即可,不需要用到LVM。 LVM可以整合多个物…

利用VNC远程连接Ubuntu server(图形界面)

有时会需要远程连上ubuntu server图形界面控制调试,这时VNC就是一个挺好的工具, windows 上安装 vnc viewer , ubuntu server 上安装vnc server 进行连接即可 一、ubuntu 安装vnc server 1.sudo apt-get install vnc4server 2.修改vnc pwd …

Django-ORM框架操作数据库不生效问题的定位示例

本文详细描述使用Django 的ORM框架操作PostgreSQL数据库删除不生效问题的定位过程及解决方案,并总结使用ORM框架操作数据库不生效的问题的通用定位方法 问题描述 最近使用Django 的ORM框架操作PostgreSQL数据库总是出现删除不生效(尤其是在并发的时候&…

C#/.Net开发chatGPT、openAI

C#/.Net开发chatGPT、openAI 最近ChatGPT火爆了,自己使用了一下,确实厉害。但是使用官方网站不支持国内访问,好在国内可以使用API调用,所以自己折腾一番,使用C#来调用API。 获取Token 注册账号获取api-keys等操作可…

HR软件如何人性化管理提高留存率

一直以来,我们都在强调“人是企业最大的资产”,这应该是新时代下,企业对于人才管理的共识。在这样的环境中,人力资源部门承担着重要的责任,HR需要迎合当前的人才需求和管理趋势,在“技术运用”和“人性管理…