代理服务器的设置_为什么代理脚本怎么设置-程序员宅基地

技术标签: 网络  代理模式  

在某些特别的情况下,我们需要设置代理服务器实现上网的目的,本文主要介绍代理服务器的设置

系统代理服务器设置

Win10系统提供系统级代理服务器设置,通过在Win10系统中设置代理服务器,系统中所有的软件都会通过我们设置的代理服务器访问网络,这样就不用一个一个软件设置代理服务器了,包括浏览器等应用,都会使用设定的系统代理服务器上网。

Win10系统「网络和Internet」,在网络设置中,点击「代理」选项,即可设置系统级的代理服务器。

系统中代理有两种设置

  1. 手动设置代理是全局代理,所有的流量都会走代理服务器
  2. 自动设置代理是自动代理,根据规则决定是否使用代理。设置自动代理可以实现智能分流,多个代理服务器同时使用。

在这里插入图片描述

浏览器的代理服务器设置

更多时候,我们不会做全局的代理服务器设置,因为这样所有的软件都会用我们设定的代理服务器连接网络,更多时候,我们需要某个软件使用代理服务器上网,比如浏览器使用某个代理服务器上网。IE浏览器的代理服务器设置和系统级的代理服务器设置效果是一样的,设置了IE浏览器代理服务器之后,系统的代理服务器也被设置为一样。

但有时候在浏览器中也不希望所有网站流量都走代理,比如希望国内网站不走代理,国外网站走代理,这时也是需要自动代理的。

实现自动代理的方案:

  1. 在浏览器中可以使用 SwitchyOmega 等插件,安装 Privoxy 实现动态代理。
  2. 在系统配置PAC自动代理脚本,优点是跨平台,无需安装第三方软件或插件,几乎所有的系统都支持。

使用浏览器插件 SwitchyOmega 实现浏览器自动代理

下面两篇文章已非常详细,故不再赘述。

chrome浏览器插件SwitchyOmega的安装(离线安装)
SwitchyOmega插件的使用

使用系统自动代理

1、编写自动代理脚本文件

代理自动配置(PAC)文件是一个 JavaScript 脚本,
其核心是一个 JavaScript 函数,用来决定网页浏览请求(HTTP、HTTPS,和 FTP)应当直连目标地址,还是被转发给一个网页代理服务器并通过代理连接。

PAC 文件中的核心 JavaScript 函数通常是这样定义的:

/**
 * @url  google.comURL中类似https://这样的的路径和查询组件已被去除
 * @host 从URL中提取得到的主机名,端口号不包括在此参数中
*/

function FindProxyForURL(url, host) {
    
  // 
}

自动配置文件应当被保存为一个以.pac作为文件拓展名的文件,比如:

proxy.pac

2、设置代理自动配置文件(PAC)

把PAC上传到http服务器,或者放本地,在系统设置网络中找到自动代理配置,填上PAC的访问地址即可。

3、示例代码

以下示例都是完整的,使用时不需要增加任何其它代码,直接保存应用即可。

例 1 对除本地主机以外的所有连接使用代理
这是只有一个代理服务器情况下最简单高效的自动配置脚本。

function FindProxyForURL(url, host) {
    
    // 当主机名中没有域名时或主机名与第二个参数匹配时为真
    if (isPlainHostName(host) || dnsDomainIs(host, ".mozilla.org")) {
    
        return "DIRECT";
    } else {
    
        return "PROXY w3proxy.mozilla.org:8080; DIRECT";
    }
}

例 2 对防火墙外的本地服务器使用代理
如果有主机(例如生产环境中的 Web 服务器)属于本地域但在防火墙外,仅可通过代理访问,可以通过 localHostOrDomainIs() 来为上述主机添加例外:

function FindProxyForURL(url, host) {
    
    if (
        // 当主机名中没有域名时或主机名与第二个参数匹配时为真
        (isPlainHostName(host) || dnsDomainIs(host, ".mozilla.org")) &&
        // 且完整域名匹配或主机名(host)匹配时返回true。
        !localHostOrDomainIs(host, "www.mozilla.org") &&
        // 且完整域名匹配或主机名(host)匹配时返回true。
        !localHostOrDoaminIs(host, "merchant.mozilla.org")
    ) {
    
        return "DIRECT";
    } else {
    
        return "PROXY w3proxy.mozilla.org:8080; DIRECT";
    }
}

例 3 如果无法解析域名,则使用代理
这个示例可用于网络中的DNS服务器只解析内部主机名的情况,其功能是只对不能成功解析的域名使用代理。

function FindProxyForURL(url, host) {
    
    // 尝试解析主机名。如果成功,则返回true。
    if (isResolvable(host)) {
    
        return "DIRECT";
    } else {
    
        return "PROXY proxy.mydomain.com:8080";
    }
}

例 4 基于网域(Subnet)的选择方案
在此示例中,所有同一子网内的主机均直接连接,其他主机则通过代理连接:

function FindProxyForURL(url, host) {
    
    // 一个 DNS 主机名,或者一个 IP 地址。如果传入了主机名,则会被此函数解析为 IP 地址,再进行判断。
    if (isInNet(host, "198.95.0.0", "255.255.0.0")) {
    
        return "DIRECT";
    } else {
    
        return "PROXY proxy.mydomain.com:8080";
    }
}

例 5 负载均衡 / 基于 URL 模式(pattern)的路由规划
这个例子更复杂,有四 (4) 个代理服务器,其中第四个是备用代理,如果其余三个中的任何一个出现故障,第四个将接管。

注意主代理与备用代理是通过 + 号连接的。

function FindProxyForURL(url, host) {
    

    if (isPlainHostName(host) || dnsDomainIs(host, ".mydomain.com"))
      return "DIRECT";
    // 如果字符串(host)匹配指定表达式(*.com)则返回true。
    else if (shExpMatch(host, "*.com"))
      return "PROXY proxy1.mydomain.com:8080; " +
             "PROXY proxy4.mydomain.com:8080";
  
    else if (shExpMatch(host, "*.edu"))
      return "PROXY proxy2.mydomain.com:8080; " +
             "PROXY proxy4.mydomain.com:8080";
  
    else
      return "PROXY proxy3.mydomain.com:8080; " +
             "PROXY proxy4.mydomain.com:8080";
  }

例 6 为不同协议设置不同代理
大多数 JavaScript 标准功能在 FindProxyForURL() 中可用。
作为例子,我们通过startsWith() 为不同的协议设置不同的代理。

function FindProxyForURL(url, host) {
    

  if (url.startsWith("http:"))
    return "PROXY http-proxy.mydomain.com:8080";

  else if (url.startsWith("ftp:"))
    return "PROXY ftp-proxy.mydomain.com:8080";

  else if (url.startsWith("gopher:"))
    return "PROXY gopher-proxy.mydomain.com:8080";

  else if (url.startsWith("https:") || url.startsWith("snews:"))
    return "PROXY security-proxy.mydomain.com:8080";

  else
    return "DIRECT";
}

参考资料:
代理自动配置(PAC)文件

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_44721831/article/details/124931596

智能推荐

Python实现自动挂机脚本(基础篇)_我是农场主自动挂机脚本-程序员宅基地

文章浏览阅读8.4w次,点赞67次,收藏608次。不知不觉肝阴阳师也快一年了,对这游戏真是又爱又恨,最近刚刚发布了PC版,突然很想尝试着写个脚本挂机,话不多说进入正题。简单的鼠标操作游戏挂机脚本,无非就是自动移动鼠标,自动点击,进行重复操作,所以,第一步就是如何控制鼠标_我是农场主自动挂机脚本

java 筛法_AcWing 874. 筛法求欧拉函数JAVA-程序员宅基地

文章浏览阅读135次。时间复杂度O(n)java代码import java.util.*;class Main{static int n = 0, N = 1000010;static int[] phi = new int[N];//存储数字n的质数的个数static int[] primes = new int[N];//存储质数的下标对应的质数static int cnt = 0;//存储质数的下标static ..._java 欧拉筛

时间管理类APP分析:拇指时间-程序员宅基地

文章浏览阅读1.1w次,点赞2次,收藏19次。就目前市场来看,时间管理类应用,大致分为划分为:行程管理、任务管理和备忘管理三种类型。市场上,这三种类型的产品百花齐放,做细分市场的,做垂直人群的不断在增加。今天,我们来看看“日历”,这个可以囊括行程管理、任务管理和备忘管理的工具。数据显示,从07年到15年的,人们对PC日历的需求越来越大,为了方便用户,日历APP在此基础上开始衍生。 APP因手机、平板等电子化设备携带方便,在各使用场景中占有优势_时间管理类app用户调研

MySQL-程序员宅基地

文章浏览阅读371次。1、初识MySQLjavaEE:企业级java开发 Webweb分为 :前端(页面:展示(数据库里的数据))后台 (连接点:链接数据库JDBC,链接前端(做控制,控制试图跳转,和给前端传递数据))数据库 (存数据,txt,Excel,world)只会写代码的码农是基本的,学好数据库; 基本混饭吃学习操作系统,学习数据结构与算法! 当一个不错的程序员离散数学,数字电路,网站体系结构,编译原理。+实战经验 = 优秀的程序员1.1、为什么学习数据库岗位需求现在的世界,大数据时代,

Bug的生命周期状态流程图_bug生命周期流程图-程序员宅基地

文章浏览阅读4.3k次,点赞2次,收藏8次。bug的生命周期BUG的生命周期,就是一个BUG被发现到这个BUG被关闭的过程。生命周期中缺陷状态:新建-->指派-->已解决-->待验-->关闭发现BUG-->提交BUG-->指派BUG-->研发确认BUG-->研发去修复BUG-->回归验证BUG-->是否通过验证-->关闭BUG如果待验的BUG在验证时没有解决好,我们需要重新打开--指派—已解决—待验,循环这个过程。中间其他状态:拒绝、延期等_bug生命周期流程图

Pandas对行/列求和_pandas对具体列求和-程序员宅基地

文章浏览阅读5.3k次,点赞3次,收藏18次。Pandas对行/列求和_pandas对具体列求和

随便推点

lenovo 邵阳E42-80 Ubuntu14.04.5 wireless 驱动安装_昭阳e42-80网卡驱动-程序员宅基地

文章浏览阅读2.7k次。转载地址:https://blog.csdn.net/sc_lilei/article/details/79545524?utm_source=blogxgwz4 装完系统后, $sudo apt-get upgrade系统版本内核变为:jxl@lenovo:~$ uname -aLinux lenovo 4.4.0-138-generic #164~14.04.1-Ubun..._昭阳e42-80网卡驱动

C和C++安全编码笔记:总结_c与c++安全编码 试题-程序员宅基地

文章浏览阅读3.4k次,点赞8次,收藏51次。《C和C++安全编码》(原书第2版)这本书是2013年出版的。这里是基于之前所有笔记的简单总结,笔记列表如下:字符串:https://blog.csdn.net/fengbingchun/article/details/105325508指针诡计:https://blog.csdn.net/fengbingchun/article/details/105458861动态内存管理:https://blog.csdn.net/fengbingchun/article/details/105921_c与c++安全编码 试题

C# 读取Word 表格数据(单元格纵合并)_vc++ ole 判断word表格单元格是否合并-程序员宅基地

文章浏览阅读9.4k次。对于word中存在合并单元格的表格: 下图是对Cells遍历的结果,True表示该行该列的单元格存在,False表示不存在。_vc++ ole 判断word表格单元格是否合并

java面向对象--内部类-程序员宅基地

文章浏览阅读55次。将一个类定义在另一个类里面,里面的那个类称为内部类,与属性、方法等一样视作外部类的成员。内部类提供了更好的封装,不允许同包中的其他类访问该内部类。内部类作为外部类的成员,同样可以被4个访问限定符修饰。如果外部类需要访问非静态内部类的成员,必须创建非静态内部类对象来访问。内部类成员可以直接访问外部类的数据。如果存在一个非静态内部类对象,则一定存在一个被它寄存的外部类对象,也就是说在拥有外...

深入浅出 FlatBuffers 之 Schema-程序员宅基地

文章浏览阅读1.3k次。一. FlatBuffers 是什么?FlatBuffers 是一个序列化开源库,实现了与 Protocol Buffers,Thrift,Apache Avro,SBE 和 Cap'n Proto 类似的序列化格式,主要由 Wouter van Oortmerssen 编写,并由 Google 开源。Oortmerssen 最初为 Android 游戏和注重性能的应用而开发了FlatBuffe..._flatbuffers64位

IT发展方向_it以后的几个方向-程序员宅基地

文章浏览阅读626次。自己的IT发展方向。1.做T型进化,横向做语言(java、python)的扩展,纵向主要是算法、模式、计算机原理。2.多系统的学习,WINDOW和LINUX的基本操作及维护。3.尽量做产品,少做项目,提高自己的竞争力。4.外语学习,日语是工作方面,英语是学习方面。坚持做自己喜欢的事。_it以后的几个方向

推荐文章

热门文章

相关标签