6

PAC(代理自动配置)

 1 year ago
source link: https://syxdevcode.github.io/2022/05/10/PAC(%E4%BB%A3%E7%90%86%E8%87%AA%E5%8A%A8%E9%85%8D%E7%BD%AE)/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

代理自动配置(Proxy Auto Config)

PAC(Proxy Auto-Config) 配置文件使用 Javascript 进行 URL 和代理服务器的描述。通常使用 proxy.pac 作为文件名, WPAD 的规范则使用 wpad.dat 作为 PAC 文件的文件名。

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

自动化技术

现代的浏览器实现了几个级别的自动化;用户可以选择最适合他们需要的级别。下面的这些方法被普遍的实现:

  • 手动代理配置 :为所有的URLs规定一个主机名和端口作为代理。大多数浏览器允许用户规定一个域名的列表(例如 localhost),访问这个列表里面的域名的时候不通过代理服务器。
  • 代理自动配置(PAC) :规定一个指向PAC文件的URL,这个文件中包括一个JavaScript函数来确定访问每个URL时所选用的合适代理。这个方法更加适合需要几个不同代理配置的笔记本用户,或者有很多不同代理服务器的复杂的企业级设置。
  • 网络代理自发现协议(WPAD) : 浏览器通过DHCP和DNS的查询来搜索PAC文件的位置。

PAC文件

要使用PAC,我们应当在一个网页服务器上发布一个PAC文件,并且通过在浏览器的代理链接设置页面输入这个PAC文件的URL或者通过使用WPAD协议告知用户代理去使用这个文件。

一个PAC文件是一个至少定义了一个JavaScript函数的文本文件。这个函数 FindProxyForURL(url, host) 有2个参数:url是一个对象的URL,host是一个由这个URL所派生的主机名。按照惯例,这个文件名字一般是 proxy.pac.WPAD 标准使用 wpad.dat

虽然大多数客户端无论从HTTP请求返回的MIME类型是什么都能正确处理,但为了完整性和最佳的兼容性,我们应该设置网页服务器将这个文件的MIME类型声明为 application/x-ns-proxy-autoconfig 或者 application/x-javascript-config

PAC文件内容示例如下:

function FindProxyForURL(url, host) {
if (url== 'http://Her0in.org/') return 'DIRECT';
if (shExpMatch(host, "*.wooyun.org")) return "DIRECT";
if (host== 'wooyun.com') return 'SOCKS 127.1.1.1:8080';
if (dnsResolve(host) == '10.0.0.100') return 'PROXY 127.2.2.2:8080;DIRECT';
return 'DIRECT';
}

该文件定义了当用户访问 http://Her0in.org/ 时,将不使用任何代理服务器直接(DIRECT)访问 URL。
也可以使用 shExpMatch 函数对 host 或者 url 进行匹配设置,SOCKS 127.1.1.1:8080 指定了使用 127.1.1.1:8080 的 SOCKS 代理进行 URL 的访问
PROXY 127.2.2.2:8080;DIRECT 指定了使用 127.2.2.2:8080 的 HTTP 代理进行 URL 的访问,如果连接 127.2.2.2:8080 的 HTTP 代理服务器失败,则直接(DIRECT)访问 URL。

本地搭建提供 WPAD 使用的 HTTP 代理服务器时,需要监听 80 端口,因为客户端浏览器默认会从 80 端口下载 PAC 文件,同时要将 PAC 文件的 MIME 类型设置为 application/x-ns-proxy-autoconfigapplication/x-javascript-config

PAC文件的编码问题

有些浏览器,例如 FirefoxInternet Explorer 只支持系统默认的编码类型 的 PAC 文件,不支持Unicode编码的PAC文件,例如UTF-8编码的PAC文件。

PAC(代理自动配置)


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK