7.User-Agent(用户代理)

devtools/2025/1/17 8:44:13/

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

网络爬虫使用程序代码来访问网站,而非人类亲自点击访问,因此爬虫程序也被称为“网络机器人”。绝大多数网站都具备一定的反爬能力,禁止网爬虫大量地访问网站,以免给网站服务器带来压力

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

常见的 User-Agent 请求头

系统

浏览器

User-Agent字符串

Mac

Chrome

 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.75 Safari/537.36

Mac

Firefox

 Mozilla/5.0 (Macintosh; Intel Mac OS X 10.12; rv:65.0) Gecko/20100101 Firefox/65.0

Mac

Safari

Mozilla/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

Windows 

Edge

 Mozilla/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

Windows 

IE

Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko

Windows 

Chrome

 Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36

iOS

Chrome

 Mozilla/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

iOS

Safari

Mozilla/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

Android

Chrome

Mozilla/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

Android

Webkit

Mozilla/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 信息

您当前使用的浏览器UserAgent信息如下

浏览器名字

Chrome

浏览器版本

106.0.0.0

系统平台

Windows

原始UA信息

Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.0.0 Safari/537.36 Edg/106.0.1370.47

爬虫程序UA信息 

向 HTTP 测试网站(httpbin.org)发送 GET 请求来查看请求头信息,从而获取爬虫程序的 UA

python"># 导入模块
import urllib.request
# 向网站发送get请求
response = urllib.request.urlopen('http://httpbin.org/get')
html = response.read().decode()
print(html)

运行结果:

python">{"args": {}, "headers": {"Accept-Encoding": "identity", "Host": "httpbin.org", "User-Agent": "Python-urllib/3.9", #UserAgent信息包含在请求头中!"X-Amzn-Trace-Id": "Root=1-635646d0-5f26ba47125fd9d508274f3c"}, "origin": "113.235.123.41", "url": "http://httpbin.org/get"
}

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

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

重构爬虫UA信息

使用urllib.request.Request()方法重构 User-Agent 信息

python">from urllib import request
# 定义变量url与headers
url = 'http://httpbin.org/get' # 向测试网站发送请求
# 重构请求头,可以使用任意浏览器的UA信息
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.0.0 Safari/537.36 Edg/106.0.1370.47'
}
# 创建请求对象,包装UA信息
req = request.Request(url=url,headers=headers)
# 发送请求,获取响应对象
res = request.urlopen(req)
# 提取响应内容
html = res.read().decode('utf-8')
print(html)

运行结果:

python">{"args": {}, "headers": {"Accept-Encoding": "identity", "Host": "httpbin.org", "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.0.0 Safari/537.36 Edg/106.0.1370.47", "X-Amzn-Trace-Id": "Root=1-63564a2b-13daf2dd7b1db5545a26052e"}, "origin": "113.235.123.41", "url": "http://httpbin.org/get"
}

重构了 User-Agent 字符串信息,这样就解决了网站通过识别 User-Agent 来封杀爬虫程序的问题


http://www.ppmy.cn/devtools/151224.html

相关文章

Spring6.0新特性-HTTP接口:使用@HttpExchange实现更优雅的Http客户端

文章目录 一、概述二、使用1、创建接口HttpExchange方法2、创建一个在调用方法时执行请求的代理3、方法参数4、返回值5、错误处理(1)为RestClient(2)为WebClient(3)为RestTemplate 注意 一、概述 官方文档…

《小迪安全》学习笔记05

目录 读取: 写入: (其中的读取和写入时我认为比较重要的,所以单独做成了目录,这里的读取和写入是指在进行sql注入的时候与本地文件进行的交互) 好久没发博客了。。。从这篇开始的小迪安全学习笔记就开始…

1.5 安装Kuboard在页面上熟悉k8s集群

本节重点总结: Kuboard 是一款免费的 Kubernetes 管理工具,提供了丰富的功能,结合已有或新建的代码仓库、镜像仓库、CI/CD工具等,可以便捷的搭建一个生产可用的 Kubernetes 容器云平台,轻松管理和运行云原生应用 具体…

利用 Java 爬虫获取 1688 商品评论的实践指南

在电商领域,商品评论是消费者决策的重要参考因素,同时也是商家了解产品反馈、优化服务的关键数据来源。1688 作为国内知名的 B2B 电商平台,拥有海量的商品评论数据。本文将详细介绍如何利用 Java 爬虫技术获取 1688 商品评论,并提…

神经网络作为一种强大的人工智能技术

一、神经网络概述 神经网络是一种模拟人类大脑神经元结构和功能的计算模型,它由大量的节点(神经元)和连接这些节点的边组成,通过学习数据中的模式和关系来执行各种任务,如分类、回归、预测、图像识别、自然语言处理等。神经网络在人工智能领域取得了巨大的成功,广泛应用…

【机器学习:二十二、机器学习项目开发的技巧】

机器学习项目开发的技巧 机器学习项目的开发不仅仅依赖于算法的选择和模型的调优,还需要良好的项目管理技巧和方法论。以下是机器学习项目开发中的关键技巧: 明确需求:在项目启动之前,明确问题定义和业务目标。例如,…

消息中间件的基础概念入门

目录 一、什么是消息中间件 1.1、简介 1.2、消息中间件的主要作用 解耦合 异步通信 负载均衡 可靠性与持久性 消息路由与调度 削峰 事务支持 监控与审计 跨平台和跨语言支持 二、常用消息中间件对比 2.1、 RabbitMQ 2.1.1、特点 2.1.2、适用场景 2.2、Apache K…

UI自动化测试框架之PO模式+数据驱动

🍅 点击文末小卡片,免费获取软件测试全套资料,资料在手,涨薪更快 1、PO设计模式简介 什么是 PO模式? PO(PageObject)设计模式将某个页面的所有元素对象定位和对元素对象的操作封装成一个 Page…