2019独角兽企业重金招聘Python工程师标准>>>
在计算机科学中,用户代理(英语:User Agent)指的是代表使用者行为的软件(软件代理程序)所提供的对自己的一个标识符。例如,一个电子邮件阅读器就是一个电子邮件客户端,而在会话发起协议 (SIP) 中,用户代理的术语指代的是一个通信会话的所有两个终端[1]。
在很多场合,用户代理作为一个主从式架构的分布式计算系统中的通信所用网络传输协议的客户端而行为。特别的,超文本传输协议指定了发起请求的客户端软件,使用一个“User-Agent”请求头,即使在客户端不由用户操纵的时候。SIP 协议(基于 HTTP)沿用了这一用法。
格式
用户代理字符串的格式目前被RFC 2616 (HTTP/1.1)的 Section 14.43 所指定。在 HTTP 中,用户代理字符串的格式是产品标记(关键字)和可选的注释所组成的一个列表。例如如果你的产品叫做 WikiBrowser, 你的用户代理字符串就可能是 WikiBrowser/1.0 Gecko/1.0。“最重要的”产品组件被最先列出。这个字符串的部分如下所示:
- 产品名称和版本(WikiBrowser/1.0)
- 排版引擎和版本(Gecko/1.0)。在这种情况下,这指示了排版引擎和版本。
但不幸的是,在浏览器大战期间,很多网络服务器被配置为只给被识别为某些版本的 Mozilla 的客户端发送需要高级功能的网页。
由于这个原因,绝大多数网页浏览器使用的 User-Agent 值如下:Mozilla/[version] ([system and browser information]) [platform] ([platform details]) [extensions]}}。例如,iPad 上的 Safari 使用的就是下述:
Mozilla/5.0 (iPad; U; CPU OS 3_2_1 like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML, like Gecko) Mobile/7B405
这个字符串的组成如下:
- Mozilla/5.0:先前用以指示与 Mozilla 排版引擎的兼容性
- (iPad; U; CPU OS 3_2_1 like Mac OS X; en-us):浏览器所运行于的系统的详细信息
- AppleWebKit/531.21.10:浏览器所使用的平台
- (KHTML, like Gecko):浏览器平台的细节
- Mobile/7B405:被浏览器用于指示特定的直接由浏览器提供或者通过第三方提供的可用的增强功能。这方面的一个实例是 Microsoft Live Meeting,它注册了一个扩展以使 Live Meeting 服务知道该软件是否已经安装上,这意味着它可以为加入会议提供一个简化的体验。