可用的 PAC 脚本需定义 FindProxyForURL 函数,返回 DIRECT 或 PROXY 指令;示例中内网、本地域名直连,google/youtube 走指定代理,其余直连;文件须通过 HTTP/HTTPS/file 协议可访问,MIME 类型正确,并在系统网络设置中启用自动代理配置。
mac 使用 pac 脚本管理代理规则,核心是让系统根据访问目标自动决定走代理还是直连,不用手动切换。关键在于正确编写脚本、部署可访问的 pac 文件,并在系统网络设置中准确指向它。
写一个可用的 PAC 脚本
PAC 文件本质是 JavaScript 文本,必须定义 FindProxyForURL(url, host) 函数。系统每次发请求前都会调用它,返回字符串指令(如 DIRECT 或 PROXY proxy.example.com:8080)。
- 常用判断函数:用
isInNet(dnsResolve(host), "192.168.0.0", "255.255.0.0")匹配内网;用shExpMatch(host, "*.google.com")匹配域名通配;isPlainHostName(host)判断是否为无点主机名(如 localhost) - 注意不要写 HTML 标签或额外输出;所有逻辑必须包裹在函数体内;DNS 解析可能有延迟,避免对每个请求都调用
dnsResolve - 示例片段:
function FindProxyForURL(url, host) {<br> if (isPlainHostName(host) || shExpMatch(host, "*.local") || isInNet(dnsResolve(host), "10.0.0.0", "255.0.0.0")) {<br> return "DIRECT";<br> }<br> if (shExpMatch(host, "*.youtube.com") || shExpMatch(host, "*.google.com")) {<br> return "PROXY proxy-us.example.com:1080";<br> }<br> return "DIRECT";<br> }
把 PAC 文件放到能被 Mac 访问的位置
Mac 必须能通过 HTTP/HTTPS 或本地文件协议(file://)读取该脚本,且服务器需返回正确的 MIME 类型 application/x-ns-proxy-autoconfig。
提交 Dataify YouTube 音频文件 URL 构建器任务。用于用户需要使用 YouTube 音频文件收集工具,收集 YouTube 音频文件,爬取...
- 推荐用轻量 Web 服务部署:比如用 Python 启一个本地服务(端口 22222),脚本放在同目录下,服务自动设好响应头
- 测试是否生效:在 Safari 中直接打开 PAC 文件 URL(如
http://127.0.0.1:22222/proxy.pac),应显示纯文本内容,不报错、不下载 - 若用
file://协议(如file:///Users/xxx/proxy.pac),需确保路径无中文、空格,且 macOS 允许本地文件加载(部分版本会拦截)
在 Mac 系统设置里启用 PAC
路径是:苹果菜单 →「系统设置」→「网络」→ 选中当前连接(如 Wi-Fi)→「详细信息」→「代理」→ 勾选「自动代理配置」→ 在 URL 栏粘贴 PAC 文件地址。
- 务必取消勾选「自动发现代理」,避免两者冲突
- 如果代理只用于特定应用(如 Chrome),注意 Firefox 等浏览器默认忽略系统设置,需单独配置或安装插件支持 PAC
- 修改后点击「应用」或断开重连网络,让设置生效;可在「网络」状态页查看当前代理模式是否显示“自动”
验证和排错要点
脚本逻辑对了,但没生效?常见卡点不在代码本身,而在链路环节。
- 打开终端执行
curl -I http://your-pac-url,检查 HTTP 状态码是否为 200,Header 是否含Content-Type: application/x-ns-proxy-autoconfig - 访问一个明确应走代理的网站(如 google.com),用 Safari 开发者工具 →「网络」标签,看请求是否经过代理 IP;或访问
http://httpbin.org/ip对比直连与代理出口 IP - 系统日志里搜关键词
proxy或PAC(用 Console.app 过滤),有时会提示脚本语法错误或加载超时

















