什么是PAC

代理自动配置(英语:Proxy auto-config,简称PAC)是一种网页浏览器技术,用于定义浏览器该如何自动选择适当的代理服务器来访问一个网址。

一个PAC文件包含一个 JavaScript 形式的函数“FindProxyForURL(url, host)”。这个函数返回一个包含一个或多个访问规则的字符串。用户代理根据这些规则适用一个特定的代理其或者直接访问。当一个代理服务器无法响应的时候,多个访问规则提供了其他的后备访问方法。浏览器在访问其他页面以前,首先访问这个PAC文件。PAC文件中的URL可能是手工配置的,也可能是是通过网页的网络代理自发现协议(Web Proxy Autodiscovery Protocol)自动配置的。

Pac 工作原理

规则大概描述如下

  • 通配符支持,如 *.example.com/* 实际书写时可省略 * 如 .example.com/ 意即 *.example.com/*
  • 正则表达式支持,以\开始和结束, 如 [\w]+://example.com\
  • 例外规则 @@,如 @@.example.com/ 满足 @@ 后规则的地址不使用代理
  • 匹配地址开始和结尾 |,如 |http://example.com、example.com| 分别表示以 http://example.com 开始和以 example.com 结束的地址
  • || 标记,如 ||example.comhttp://example.comhttps://example.comftp://example.com 等地址均满足条件,只用于匹配地址开头
  • 注释 !! Comment
  • 分隔符 ^,表示除了字母、数字或者 _ - . % 之外的任何字符。如 http://example.com^http://example.com/http://example.com:8000/ 均满足条件,而 http://example.com.ar/ 不满足条件

自定义规则如下:

1
2
3
4
5
! Put user rules line by line in this file.
! See https://adblockplus.org/en/filter-cheatsheet
||itunes.apple.com
||golang.org
||github.com^

以上自定义规则经测试在 Mac 上虽然提示 “已更新成功”,但是需要重启 APP 才生效