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

如何在iOS设备的PAC文件中拦截以.pdf结尾的URL?

解决iOS PAC文件拦截PDF链接的问题

核心问题分析

你当前的PAC代码有两个关键问题导致规则失效:

  • 返回值未使用字符串常量:标准PAC规范中,BLACKHOLE和DIRECT(对应你代码里的normal)必须用双引号包裹,否则iOS的PAC引擎会将其视为未定义变量,直接跳过规则。
  • 匹配规则不准确:shExpMatch(url, ".*pdf")和url.match(".pdf")会匹配任意位置包含pdf的URL,而非仅以.pdf结尾的链接。

修正后的PAC代码

function FindProxyForURL(url, host) {
    url = url.toLowerCase();
    host = host.toLowerCase();
    
    // 匹配以.pdf结尾的URL,或指定域名
    if (
        shExpMatch(url, "*.pdf") 
        || _dnsDomainIs(host, "api.giphy.com")
    ) {
        // 拦截请求(丢弃流量)
        return "BLACKHOLE";
    } else {
        // 直接连接,不经过代理
        return "DIRECT";
    }
}

关键修正说明

  • 匹配规则优化:shExpMatch(url, "*.pdf")是iOS PAC引擎支持的通配符写法,精准匹配所有以.pdf结尾的URL;如果想用正则,也可以替换为url.match(/\.pdf$/)(注意正则的结尾锚点$和转义的.)。
  • 返回值规范:必须使用标准PAC字符串常量,"BLACKHOLE"用于丢弃流量(拦截),"DIRECT"用于直接连接网络。
  • 小写转换保留:继续保留url和host的小写转换,确保匹配不区分大小写。

额外验证步骤

  1. 确认PAC文件编码为UTF-8无BOM格式,避免iOS加载时出现解析错误。
  2. 通过JAMF重新推送配置后,在iOS设备的「设置-无线局域网-已连接网络-代理」中确认PAC文件已成功加载。
  3. 测试不同域名下的PDF链接(如https://example.com/test.pdf),验证拦截效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 21:40:51