You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

公共图书馆PAC文件无法正确过滤指定授权站点求助

修正PAC脚本实现目标站点代理转发

问题根源分析

你的脚本存在两个核心问题:

  1. 匹配逻辑错误:localHostOrDomainIs(host, value) 仅能匹配主机名(域名),但你在proxylist中混入了带协议(https://)和路径(/ipl.php、/ipl)的完整URL,这类项永远无法和host参数匹配。
  2. 引号格式错误:var proxyserver = ‘0.0.0.0:8080'; 使用了中文单引号,会导致脚本解析失败。

修正后的PAC脚本

function FindProxyForURL(url, host) {
    // 代理服务器地址(修正为英文引号)
    var proxyserver = '0.0.0.0:8080';
    
    // 仅需匹配域名的站点列表
    var domainList = [
        "www.tesla.com",
        "www.monster.com",
        "www.cnn.com",
        "www.yahoo.com",
        "grantstoindividuals.org" // 这个目标站点无特殊路径,直接匹配域名
    ];
    
    // 需要匹配URL路径的目标站点模式(用通配符*匹配任意前缀/后缀)
    var urlPatterns = [
        "*://fconline.foundationcenter.org/ipl.php*",
        "*://www.guidestar.org/ipl*"
    ];

    // 先匹配域名列表
    for (var i = 0; i < domainList.length; i++) {
        if (localHostOrDomainIs(host, domainList[i])) {
            return "PROXY " + proxyserver;
        }
    }

    // 再匹配URL路径模式
    for (var j = 0; j < urlPatterns.length; j++) {
        if (shExpMatch(url, urlPatterns[j])) {
            return "PROXY " + proxyserver;
        }
    }

    // 其余流量直接走路由器
    return "DIRECT";
}

关键修改说明

  • 拆分匹配逻辑:将普通域名站点和带特殊路径的目标站点分开处理,域名用localHostOrDomainIs匹配,带路径的URL用shExpMatch配合通配符匹配。
  • 修正引号格式:把中文引号替换为英文单引号,避免脚本语法错误。
  • 优化URL模式:用*通配符覆盖协议(http/https)和路径后的额外参数(比如可能存在的查询字符串),确保所有相关请求都走代理。

验证方法

  1. 替换原有PAC脚本内容,部署到代理服务器。
  2. 在馆内客户端测试三个目标站点:
    • 访问https://fconline.foundationcenter.org/ipl.php
    • 访问https://grantstoindividuals.org
    • 访问https://www.guidestar.org/ipl
  3. 确认目标站点流量走代理,常规站点(如CNN、Tesla)仍按预期走代理,其他站点直接走路由器。

内容的提问来源于stack exchange,提问作者wildfire23

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 18:13:09