3月阅读周·HTTP权威指南:代理之客户端的代理设置篇
引言
HTTP(Hypertext Transfer Protocol,超文本传输协议[插图])是在万维网上进行通信时所使用的协议方案。HTTP有很多应用,但最著名的是用于Web浏览器和Web服务器之间的双工通信。
《HTTP权威指南》一书将HTTP中一些互相关联且常被误解的规则梳理清楚,并编写了一系列基于各种主题的章节介绍HTTP各方面的特性。纵观全书,对HTTP“为什么”这样做进行了详细的解释,而不仅仅停留在它是“怎么做”的。此外,这本书还介绍了很多HTTP应用程序正常工作所必需且重要的非HTTP技术。
这本书主要包括以下内容:
- 第一部分描述了Web的基础构件与HTTP的核心技术
- 第二部分重点介绍了Web系统的结构构造块:HTTP服务器、代理、缓存、网关以及机器人应用程序。
- 第三部分提供了一套用于追踪身份、增强安全性以及控制内容访问的技术和技巧。
- 第四部分涵盖HTTP报文主体和Web标准,前者包含实际内容,后者描述并处理主体内容。
- 第五部分介绍了发布和传播Web内容的技巧。
- 第六部分是一些很有用的参考附录,以及相关技术的教程。
代理
Web代理(proxy)服务器是网络的中间实体。代理位于客户端和服务器之间,扮演“中间人”的角色,在各端点之间来回传送HTTP报文。
客户端的代理设置
实际上,很多浏览器都提供了多种配置代理的方式,其中包括以下几种。
- 手工配置:显式地设置要使用的代理。
- 预先配置浏览器:浏览器厂商或发行商会在将浏览器发送给其客户之前预先对浏览器(或所有其他Web客户端)的代理设置进行手工配置。
- 代理的自动配置(Proxy Auto-Configuration, PAC):提供一个URI,指向一个用JavaScript语言编写的代理自动配置文件;客户端会取回这个JavaScript文件,并运行它以决定是否应该使用一个代理,如果是的话,应该使用哪个代理服务器。
- WPAD的代理发现:有些浏览器支持Web代理自动发现协议(Web Proxy Autodiscovery Protocol, WPAD),这个协议会自动检测出浏览器可以从哪个“配置服务器”下载到一个自动配置文件。
客户端的代理配置:手工配置
很多Web客户端都允许用户手工配置代理。网景的Navigator和微软的Internet Explorer都为代理配置提供了便捷的支持。
在网景的Navigator 6中,可以通过菜单选项Edit(编辑)→Preferences(首选项)→Advanced(高级)→Proxies(代理),然后选中单选按钮“Manual proxy”(手工配置代理)来指定代理。
在微软的Internet Explorer 5中,可以在Tools(工具)→Internet Options(Internet选项)菜单中,选择一个连接,点击“Settings”(设置),选中“Use a proxy server”(使用代理服务器)框,并点击“Advanced”(高级),来手工指定代理。
其他浏览器都有不同的方式来进行手工配置的修改,但其思想是一样的:为代理指定主机和端口。有些ISP会向客户发送预先配置好的浏览器,或定制好的操作系统,使其将Web流量重定向到代理服务器上。
客户端代理配置:PAC文件
手工代理配置很简单但有些死板。只能为所有内容指定唯一的一个代理服务器,而且不支持故障转移。手工代理配置还会给大型组织带来管理问题。如果配置过的浏览器基数很大,那么需要进行修改的时候,重新配置每个浏览器是非常困难,甚至是不可能的。
PAC文件是一些小型的JavaScript程序,可以在运行过程中计算代理设置,因此,是一种更动态的代理配置解决方案。访问每个文档时,JavaScript函数都会选择恰当的代理服务器。
要使用PAC文件,就要用JavaScript PAC文件的URI来配置浏览器[配置方式与手工配置类似,但要在 “automatic configuration”(自动配置)框中提供一个URI]。浏览器会从这个URI上获取PAC文件,并用JavaScript逻辑为每次访问计算恰当的代理服务器。PAC文件的后缀通常是.pac, MIME类型通常是application/x-ns-proxy-autoconfig。
每个PAC文件都必须定义一个名为FindProxyForURL(url, host)的函数,用来计算访问URI时使用的适当的代理服务器。
PAC文件为HTTP事务处理指定了一个代理,为FTP事务处理指定了另一个代理,并为所有其他类型的事务处理使用直连方式。
例1-1 代理自动配置文件示例
function FindProxyForURL(url, host) {
if (url.substring(0,5) == "http:") {
return "PROXY http-proxy.mydomain.com:8080";
} else if (url.substring(0,4) =="ftp:") {
return "PROXY ftp-proxy.mydomain.com:8080";
} else {
return "DIRECT";
}
}
客户端代理配置:WPAD
另一种浏览器配置机制是WPAD协议。WPAD协议的算法会使用发现机制的逐级上升策略自动地为浏览器查找合适的PAC文件。实现WPAD协议的客户端需要:
- 用WPAD找到PAC的URI;
- 从指定的URI获取PAC文件;
- 执行PAC文件来判定代理服务器;
- 为请求使用代理服务器。
WPAD会使用一系列的资源发现技术来判定适当的PAC文件。并不是所有组织都能够使用所有的发现技术,所以WPAD使用了很多种发现技术。WPAD会一个接一个地对每种技术进行尝试,直到成功为止。
当前的WPAD协议规范按顺序定义了下列技术:
- 动态主机配置协议(Dynamic Host Configuration Protocol, DHCP);
- 服务定位协议(Service Location Protocol, SLP);
- DNS知名主机名;· DNS SRV记录;
- TXT记录中的DNS服务URI。
总结
所有现代的Web浏览器都允许用户对代理的使用进行配置
作者介绍
非职业「传道授业解惑」的开发者叶一一。
《趣学前端》、《CSS畅想》等系列作者。华夏美食、国漫、古风重度爱好者,刑侦、无限流小说初级玩家。
如果看完文章有所收获,欢迎点赞👍 | 收藏⭐️ | 留言📝。
- 点赞
- 收藏
- 关注作者
评论(0)