专业编程基础技术教程

网站首页 > 基础教程 正文

jcef中设置代理自动配置(自动配置代理网址)

ccvgpt 2024-07-18 12:54:13 基础教程 7 ℃

之前的文章,我们在JCEF例子中设置代理,进行js内容修改。如果有时只需要对指定的资源进行代理,那么可以使用pac,在jcef中可以如下设置:

builder.getJcefArgs().add("--proxy-pac-url=http://127.0.0.1:63860/assets/PAC/virhuiai.pac");

PAC 文件介绍

PAC(Proxy Auto Config)是一个自动代理配置脚本,最早由 Netscape Navigator 2.0 引入。此技术被广泛支持于各种浏览器和操作系统中。PAC 文件通过定义 JavaScript 函数 FindProxyForURL 来指导浏览器如何选择代理服务器或直接连接。

jcef中设置代理自动配置(自动配置代理网址)

// proxy.pac
function FindProxyForURL(url, host) {
  if (dnsDomainIs(host, '.public.example.com')) {
    return 'PROXY 127.0.0.1:8080';
  }

  if (
    shExpMatch(host, 'localhost') ||
    shExpMatch(host, '127.0.0.1') ||
    shExpMatch(host, '10.*') ||
    shExpMatch(host, '192.168.*') ||
    shExpMatch(url, 'https://gitlab.example-inc.com/*') ||
    shExpMatch(url, 'https://oa.example-inc.com/*') ||
    shExpMatch(url, 'https://mail.example-inc.com/*') ||
    dnsDomainIs(host, '.example.com') ||
    dnsDomainIs(host, '.test.com')
  ) {
    return 'DIRECT';
  } else {
    return 'PROXY 127.0.0.1:8080';
  }
}

具体如何编写可以参考

https://developer.mozilla.org/en-US/docs/Web/HTTP/Proxy_servers_and_tunneling/Proxy_Auto-Configuration_(PAC)_file

PAC 文件编写完成后需要托管到静态文件服务器上,以便通过某个地址访问,比如

http://static.example.com/proxy.pac

PAC 文件示例

function FindProxyForURL(url, host) {
//     return "PROXY 127.0.0.1:49408";
    if (shExpMatch(host, "test.virhuiai.com")) {
        return "PROXY 127.0.0.1:49408";
    }
    return "DIRECT";
}

这个 PAC (Proxy Auto-Configuration) 脚本定义了浏览器或应用程序如何自动选择代理服务器或直接连接。PAC 脚本是一个 JavaScript 函数,它决定了特定请求是否通过代理服务器,以及使用哪个代理服务器。以下是这个特定 PAC 脚本 FindProxyForURL 函数的详细解释:

  • 函数定义: function FindProxyForURL(url, host) 是 PAC 脚本中的标准函数,它接收两个参数:url 和 host。其中 url 是完整的请求 URL,host 是请求的域名部分。
  • 条件判断: 使用 if (shExpMatch(host, "test.virhuiai.com")) 进行条件判断。这里,shExpMatch() 是一个内置函数,用于字符串匹配。它检查 host 是否符合模式 "test.virhuiai.com"。如果匹配,说明请求是针对指定的域名。
  • 代理设置: 如果条件为真(即请求的域名是 test.virhuiai.com),函数将返回字符串 "PROXY 127.0.0.1:49408"。这告诉浏览器或应用程序使用位于本地计算机(IP 地址为 127.0.0.1)的 49408 端口上的代理服务器。
  • 直接连接: 如果条件不成立(即访问的不是 test.virhuiai.com),则函数返回 "DIRECT"。这意味着请求应该直接连接到目标服务器,不通过任何代理。

使用场景

这种 PAC 脚本通常用于测试和开发环境,特别是当开发者需要对特定域名进行特殊网络处理(如调试、流量捕获、修改请求或响应等)时。通过这种方式,可以确保只有目标域名的流量被代理,而其他流量则不受影响,保持正常访问。这种方法有效地隔离了测试环境和生产环境,减少了对用户正常使用的干扰。

Tags:

最近发表
标签列表