如何隐藏Selenium特征实现自动化网页采集

简介: Selenium是一个流行的自动化网页测试工具,可以通过模拟用户在Chrome浏览器中的操作来完成网站的测试。然而,有些网站会检测浏览器是否由Selenium驱动,如果是,就会返回错误的结果或拒绝访问。为了避免这种情况,我们需要隐藏Selenium的特征,让网站认为我们是正常的用户。

22.png

Selenium是一个流行的自动化网页测试工具,可以通过模拟用户在Chrome浏览器中的操作来完成网站的测试。然而,有些网站会检测浏览器是否由Selenium驱动,如果是,就会返回错误的结果或拒绝访问。为了避免这种情况,我们需要隐藏Selenium的特征,让网站认为我们是正常的用户。

以下是三种常见的隐藏Selenium特征的方法:

  1. 修改navigator.webdriver标志:navigator.webdriver是一个浏览器提供的属性,用于表示浏览器是否由webdriver控制。默认情况下,如果浏览器由Selenium驱动,这个标志的值为true,否则为false。我们可以通过execute_cdp_cmd命令来执行Google Chrome DevTools命令,从而修改这个标志的值为false或者undefined,以隐藏Selenium的特征。
  2. 改变user-agent:user-agent是一个浏览器发送给网站的字符串,用于表示浏览器的类型和版本。有些网站会根据user-agent来判断用户的设备和操作系统,如果发现user-agent不符合正常的范围,就会怀疑是Selenium驱动的浏览器。我们可以通过execute_cdp_cmd命令来设置Network.setUserAgentOverride参数,从而改变user-agent为任意我们想要的值,以隐藏Selenium的特征。
  3. 排除或关闭一些Selenium相关的开关:enable-automation和useAutomationExtension是两个常见的Selenium相关开关,它们会影响浏览器的行为和外观,比如在浏览器窗口上显示“Chrome正在受到自动软件的控制”的提示。我们可以通过Chrome选项来添加或删除这些开关,从而让浏览器看起来更像正常的浏览器,以隐藏Selenium的特征。

综上所述,隐藏Selenium特征是实现自动化网页测试的关键。通过以上三种方法,我们可以让浏览器看起来更像正常的用户,避免被网站检测到并拒绝访问。综合上面的几种selenium特征隐藏方式,以采集大众点评的评论为案例,结合实际爬虫采集过程中需要使用的代理IP池,提供如下demo:

fromseleniumimportwebdriverfromselenium.webdriver.common.proxyimportProxy, ProxyType# 亿牛云爬虫加强版代理IP 地址、端口号、用户名和密码proxy_address='www.16yun.cn'proxy_port='3100'proxy_username='16YUN'proxy_password='16IP'# 设置Chrome选项,包括隐藏Selenium特征、设置代理IP和排除或关闭一些Selenium相关开关options=webdriver.ChromeOptions()
options.add_argument('--disable-blink-features=AutomationControlled')
options.add_argument('--disable-extensions')
options.add_argument('--disable-gpu')
options.add_argument('--disable-infobars')
options.add_argument('--disable-notifications')
options.add_argument('--disable-popup-blocking')
options.add_argument('--disable-web-security')
options.add_argument('--ignore-certificate-errors')
options.add_argument('--no-sandbox')
options.add_argument('--start-maximized')
options.add_argument('--user-data-dir=/dev/null')
options.add_argument('--proxy-server={}'.format(proxy_address+':'+proxy_port))
options.add_argument('--proxy-auth={}:{}'.format(proxy_username, proxy_password))
options.add_experimental_option('excludeSwitches', ['enable-automation', 'useAutomationExtension'])
# 初始化Chrome浏览器,并使用上述选项driver=webdriver.Chrome(options=options)
# 隐藏navigator.webdriver标志,将其值修改为false或undefineddriver.execute_cdp_cmd('Page.addScriptToEvaluateOnNewDocument', {
'source': 'Object.defineProperty(navigator, "webdriver", {get: () => undefined})'})
# 设置user-agent,改变user-agent的值user_agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36"driver.execute_cdp_cmd("Network.setUserAgentOverride", {"userAgent": user_agent})
# 访问大众点评中商品的评论页面url='https://www.dianping.com/shop/1234567/review_all'driver.get(url)
# 在此处添加其他代码来执行您想要的任务

此代码将使用Chrome浏览器,并在启动浏览器时使用选项隐藏Selenium特征、设置用户名和密码方式的代理IP和排除或关闭一些Selenium相关开关。然后,使用execute_cdp_cmd命令来执行Google Chrome DevTools协议中的命令,将navigator.webdriver标志的值修改为false或undefined。使用execute_cdp_cmd命令来设置Network.setUserAgentOverride参数,将user-agent更改为指定的user-agent字符串。最后,访问大众点评中商品的评论页面,并在此处添加其他代码来执行您想要的任务.

相关文章
|
数据采集 Web App开发 资源调度
最完美方案!模拟浏览器如何正确隐藏特征
最完美方案!模拟浏览器如何正确隐藏特征
2065 0
|
存储 缓存 算法
Python中的hash函数
Python中的hash函数
767 2
|
数据采集 存储 JSON
淘宝数据爬虫方案
本项目使用 Selenium 模拟浏览器行为,实现淘宝商品信息爬取,包括商品标题、价格、到手价、店铺名、销量等,并支持保存为 CSV 或 JSON 文件。代码内置反爬策略应对机制,适合用于商品数据采集与分析。
|
应用服务中间件 nginx Windows
音视频系列六:Windows搭建Nginx+rtmp推流服务器
在前面 阿里云服务器搭建Nginx+rtmp推流服务器 中,我们已经配置把阿里云的rtmp推流服务搭建好了,用的是PC软件OBS来进行推流到阿里云服务器转发然后本地拉流。Windows也是大同小异,现在是用Windows进行推流服务的搭建,本地ffmpeg命令行推流,本地ffplay拉流播放/VLC拉流播放。
2031 0
音视频系列六:Windows搭建Nginx+rtmp推流服务器
|
算法 Shell 数据库
ACM-ICPC 常用算法刷题网站整理(转)
ACM-ICPC 常用算法刷题网站整理          转载From http://blog.csdn.net/bat67/article/details/72765485          以及http://blog.csdn.net/pinellina/article/details/46843165  感谢原作者。
3612 0
|
编解码 缓存 开发工具
Unity跨平台UI解决方案:可能是最全的FairyGUI系列教程-第三天
众所周知,人生是一个漫长的流程,不断克服困难,不断反思前进的过程。在这个过程中会产生很多对于人生的质疑和思考,于是我决定将自己的思考,经验和故事全部分享出来,以此寻找共鸣!!!
1412 0
|
JSON 监控 API
深入研究:shopee商品详情API接口Python攻略
Shopee 商品详情 API 是用于获取 Shopee 平台商品详细信息的接口,支持开发者提取商品标题、价格、库存、描述和图片等多维度数据。该接口适用于电商数据分析、比价工具开发及商品监控等场景。请求方式为 GET,需提供 itemid(商品 ID)和 shopid(店铺 ID),返回格式为 JSON。部分功能可能需要 API 密钥或访问令牌认证。以马来西亚站点为例,URL 为 shopee.com.myapi/v4/item/get,不同国家站点域名可能有所不同。
|
传感器 SQL 运维
常见网络安全设备:IPS(入侵防御系统)零基础入门到精通,收藏这一篇就够了
常见网络安全设备:IPS(入侵防御系统)零基础入门到精通,收藏这一篇就够了
946 3
|
测试技术 Python
Python中的装饰器:原理、用法与实例
【2月更文挑战第20天】 本文将深入探讨Python中装饰器的工作原理,使用方法以及实际应用场景。装饰器是Python的一项重要特性,它允许我们在不改变函数源代码的情况下,增加函数的功能。我们将通过实例来详细解析装饰器的使用,帮助读者更好地理解和应用这一强大的工具。

热门文章

最新文章