什么是 User-Agent?
管你黑猫白猫,抓不到老鼠的猫,它就不是个好猫
什么是 User-Agent
User Agent中文名为用户代理,简称 UA,它是一个特殊字符串头,使得服务器能够识别客户使用的操作系统及版本、CPU 类型、浏览器及版本、浏览器渲染引擎、浏览器语言、浏览器插件等。一些网站常常通过判断 UA 来给不同的操作系统、不同的浏览器发送不同的页面,因此可能造成某些页面无法在某个浏览器中正常显示,但通过伪装 UA 可以绕过检测。浏览器向服务器发起请求的流程图,可以用下图表示:
这里以火狐浏览器和谷歌浏览器为例,UA 的格式或者说表现形式是这样的:
Firefox 的 User-Agent:
Mozilla/5.0 (Macintosh; Intel Mac OS X 10.13; rv:63.0) Gecko/20100101 Firefox/63.0 复制代码
Chrome 的 User-Agent:
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.77 Safari/537.36 复制代码
User-Agent 在网络请求中充当什么角色?
在网络请求当中,User-Agent 是标明身份的一种标识,服务器可以通过请求头参数中的 User-Agent 来判断请求方是否是浏览器、客户端程序或者其他的终端(当然,User-Agent 的值为空也是允许的,因为它不是必要参数)。
浏览器的角色,如上图方框中所示,那么 User-Agent 的角色,就是表明身份。
为什么反爬虫会选择 User-Agent 这个参数呢?
从上面的介绍中,可以看出它是终端的身份标识。意味着服务器可以清楚的知道,这一次的请求是通过火狐浏览器发起的,还是通过 IE 浏览器发起的,甚至说是否是应用程序(比如 Python )发起的。
网站的页面、动效和图片等内容的呈现是借助于浏览器的渲染功能实现的,浏览器是一个相对封闭的程序,因为它要确保数据的成功渲染,所以用户无法从浏览器中大规模的、自动化的获取内容数据。
而爬虫却不是这样的,爬虫生来就是为了获取网络上的内容并将其转化为数据。这是两种截然不同的方式,你也可以理解为通过编写代码来大规模的、自动化的获取内容数据,这是一种骚操作。
回到正题,为什么会选择 User-Agent 这个参数呢?
因为编程语言都有默认的标识,在发起网络请求的时候,这个标识在你毫不知情的情况下,作为请求头参数中的 User-Agent 值一并发送到服务器。比如 Python 语言通过代码发起网络请求时, User-Agent 的值中就包含 Python 。同样的,Java 和 PHP 这些语言也都有默认的标识。
作者:云享专家韦世东
链接:https://juejin.im/post/5bdeb32d51882516fa635ace
来源:掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
- 点赞
- 收藏
- 关注作者
评论(0)