软件开发定制User-Agent(用户代理)是什么

User-Agent(用户代理)是什么

User-Agent 软件开发定制即用户代理,简称“UA”,软件开发定制它是一个特殊头。软件开发定制网站服务器通过识别 “UA”软件开发定制来确定用户所使用的操软件开发定制作系统版本、CPU 类型、软件开发定制浏览器版本等信息。软件开发定制而网站服务器则通过判断 UA 来给客户端发送不同的页面。

我们知道,网络使用程序代码来访问网站,而非人类亲自点击访问,因此爬虫程序也被称为“网络机器人”。绝大多数网站都具备一定的反爬能力,禁止网爬虫大量地访问网站,以免给网站服务器带来压力。本节即将要讲解的 User-Agent 就是反爬策略的第一步。

网站通过识别请求头中 User-Agent 信息来判断是否是爬虫访问网站。如果是,网站首先对该 IP 进行预警,对其进行重点监控,当发现该 IP 超过规定时间内的访问次数, 将在一段时间内禁止其再次访问网站。

常见的 User-Agent 请求头,如下所示:

常见的 User-Agent 汇总表

系统浏览器User-Agent字符串
MacChromeMozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.75 Safari/537.36
MacFirefoxMozilla/5.0 (Macintosh; Intel Mac OS X 10.12; rv:65.0) Gecko/20100101 Firefox/65.0
MacSafariMozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.0.3 Safari/605.1.15
WindowsEdgeMozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.140 Safari/537.36 Edge/18.17763
WindowsIEMozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko
WindowsChromeMozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36
iOSChromeMozilla/5.0 (iPhone; CPU iPhone OS 7_0_4 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) CriOS/31.0.1650.18 Mobile/11B554a Safari/8536.25
iOSSafariMozilla/5.0 (iPhone; CPU iPhone OS 8_3 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko) Version/8.0 Mobile/12F70 Safari/600.1.4
AndroidChromeMozilla/5.0 (Linux; Android 4.2.1; M040 Build/JOP40D) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.59 Mobile Safari/537.36
AndroidWebkitMozilla/5.0 (Linux; U; Android 4.4.4; zh-cn; M351 Build/KTU84P) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30

使用上表中的浏览器 UA,我们可以很方便的构建出 User-Agent。通过在线识别工具,可以查看本机的浏览器版本以及 UA 信息,如下所示:

当前浏览器UA信息

浏览器名称Chrome
浏览器版本88.0.4324.182
系统平台Windows
UA信息Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.182 Safari/537.36

若想更多地了解浏览器 UA 信息(包含移动端、PC端)可参考《常用浏览器User-Agent》。

爬虫程序UA信息

下面,通过向 HTTP 测试网站(http://httpbin.org/)发送 GET 请求来查看请求头信息,从而获取爬虫程序的 UA。代码如下所示:

#导入模块import urllib.request#向网站发送get请求response=urllib.request.urlopen('http://httpbin.org/get')html = response.read().decode()print(html)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

程序运行后,输出的请求头信息如下所示:

{  "args": {},  #请求头信息  "headers": {    "Accept-Encoding": "identity",    "Host": "httpbin.org",    "User-Agent": "Python-urllib/3.7", #UserAgent信息包含在请求头中!    "X-Amzn-Trace-Id": "Root=1-6034954b-1cb061183308ae920668ec4c"  },  "origin": "121.17.25.194",  "url": "http://httpbin.org/get"}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

从输出结果可以看出,User-Agent 竟然是 Python-urllib/3.7,这显然是爬虫程序访问网站。因此就需要重构 User-Agent,将其伪装成“浏览器”访问网站。

注意:httpbin.org 这个网站能测试 HTTP 请求和响应的各种信息,比如 cookie、IP、headers 和登录验证等,且支持
GET、POST 等多种方法,对 Web 开发和测试很有帮助。

重构爬虫UA信息

下面使用urllib.request.Request()方法重构 User-Agent 信息,代码如下所示:

from urllib import request# 定义变量:URL 与 headersurl = 'http://httpbin.org/get' #向测试网站发送请求#重构请求头,伪装成 Mac火狐浏览器访问,可以使用上表中任意浏览器的UA信息headers = {'User-Agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.12; rv:65.0) Gecko/20100101 Firefox/65.0'}# 1、创建请求对象,包装ua信息req = request.Request(url=url,headers=headers)# 2、发送请求,获取响应对象res = request.urlopen(req)# 3、提取响应内容html = res.read().decode('utf-8')print(html)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

程序的运行结果,如下所示:

{  "args": {},  "headers": {    "Accept-Encoding": "identity",    "Host": "httpbin.org",    #伪装成了Mac火狐浏览器    "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.12; rv:65.0) Gecko/20100101 Firefox/65.0",    "X-Amzn-Trace-Id": "Root=1-6034a52f-372ca79027da685c3712e5f6"  },  "origin": "121.17.25.194",  "url": "http://httpbin.org/get"}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

上述代码重构了 User-Agent 字符串信息,这样就解决了网站通过识别 User-Agent 来封杀爬虫程序的问题。当然这只是应对反爬策略的第一步。重构 UA 也可以通过其他模块实现,比如 requests 模块,这在后续内容会做相应介绍。

网站建设定制开发 软件系统开发定制 定制软件开发 软件开发定制 定制app开发 app开发定制 app开发定制公司 电商商城定制开发 定制小程序开发 定制开发小程序 客户管理系统开发定制 定制网站 定制开发 crm开发定制 开发公司 小程序开发定制 定制软件 收款定制开发 企业网站定制开发 定制化开发 android系统定制开发 定制小程序开发费用 定制设计 专注app软件定制开发 软件开发定制定制 知名网站建设定制 软件定制开发供应商 应用系统定制开发 软件系统定制开发 企业管理系统定制开发 系统定制开发