别去送死了。Selenium 与 Puppeteer 能被网站探测的几十个特征

简介: 别去送死了。Selenium 与 Puppeteer 能被网站探测的几十个特征

摄影:产品经理味道很好的毛血旺

很多人喜欢使用Selenium 或者 Puppeteer(Pyppeteer)通过模拟浏览器来编写爬虫,自以为这样可以不被网站检测到,想爬什么数据就爬什么数据。

但实际上,Selenium 启动的浏览器,有几十个特征可以被网站通过 JavaScript 探测到。Puppeteer 启动的浏览器,也有很多特征能够被网站探测。

如果你不相信,那么我们来做一个实验。首先你使用正常的浏览器打开如下网址:https://bot.sannysoft.com/。可以看到,页面的内容如下:

这个页面很长,你得滚动鼠标往下看。大部分都是绿色的。

接下来,使用Selenium启动一个 Chrome 的有头模式,再打开这个页面看看效果:

一开始WebDriver这一项就标红了,说明网站成功检测到你使用模拟浏览器了。你再往下翻,标红的都是可以被检测出的特征。

左边是普通浏览器,右边是模拟浏览器

左边是普通浏览器,右边是模拟浏览器。如果你一项一项对比,就会发现很多地方都不一样。

这还是有头模式的效果。我们来看看无头模式:

from selenium.webdriver import Chrome
from selenium.webdriver.chrome.options import Options
chrome_options = Options()
chrome_options.add_argument("--headless")
driver = Chrome('./chromedriver', options=chrome_options)
driver.get('https://bot.sannysoft.com/')
driver.save_screenshot('screenshot.png')

截图打开以后是下面这样的。不要吓到:

万里河山一片红

这么多特征都直接暴露了,你还隐藏个屁。网站只要想发现你,非常容易。

既然 Selenium 不行,那 Puppeteer 或者 Pyppeteer怎么样呢?我们使用 Pyppeteer 来做个实验。直接启动无头模式并截图。运行效果是下面这样的:

跟 Selenium 没什么区别。

所以,你还好意思继续用这两个东西来写爬虫?爬点没有安全意识的小网站可以。爬那些有强大安全团队和法务团队的公司,你就是在找死。

目录
相关文章
|
7月前
|
数据采集 Web App开发 搜索推荐
突破目标网站的反爬虫机制:Selenium策略分析
突破目标网站的反爬虫机制:Selenium策略分析
|
5月前
|
数据采集 前端开发 JavaScript
被爬网站用fingerprintjs来对selenium进行反爬,怎么破?
闲暇时看到一个问题关于如何应对FingerprintJS的唯一标记技术。FingerprintJS通过收集浏览器特性如Canvas、音频、字体及插件信息生成唯一标识符,用于识别和追踪用户。常见应对策略如使用`stealth.min.js`脚本或虚拟指纹插件有局限性。高级解决方案包括: - **浏览器特征随机化**:如Canvas和音频指纹随机化,动态替换插件和字体。 - **真实用户流量模拟**:模拟自然的鼠标移动与点击、键盘输入节奏。 - **服务端策略**:使用高质量代理IP服务,如青果网络提供的代理IP,结合IP地址轮换、会话管理和合理的切换频率设置。
|
4月前
|
数据采集 Web App开发 存储
基于Python的51job(前程无忧)招聘网站数据采集,通过selenium绕过网站反爬,可以采集全国各地数十万条招聘信息
本文介绍了一个使用Python和Selenium库实现的51job(前程无忧)招聘网站数据采集工具,该工具能够绕过网站的反爬机制,自动化登录、搜索并采集全国各地的招聘信息,将数据保存至CSV文件中。
175 0
|
7月前
|
数据采集 Web App开发 JavaScript
使用Selenium爬取目标网站被识别的解决之法
使用Selenium爬取目标网站被识别的解决之法
|
7月前
|
安全 测试技术 API
Selenium框架添加CONNECT以抓取https网站
Selenium框架添加CONNECT以抓取https网站
|
Web App开发 数据采集 测试技术
如何隐藏Selenium特征实现自动化网页采集
Selenium是一个流行的自动化网页测试工具,可以通过模拟用户在Chrome浏览器中的操作来完成网站的测试。然而,有些网站会检测浏览器是否由Selenium驱动,如果是,就会返回错误的结果或拒绝访问。为了避免这种情况,我们需要隐藏Selenium的特征,让网站认为我们是正常的用户。
910 0
如何隐藏Selenium特征实现自动化网页采集
|
数据采集 前端开发 安全
如何避免Selenium爬虫被网站识破
如何避免Selenium爬虫被网站识破
|
数据采集 JavaScript 前端开发
Selenium+代理爬取需要模拟用户交互的网站
Selenium+代理爬取需要模拟用户交互的网站
|
数据采集 数据可视化 JavaScript
使用 Python/Selenium 抓取网站的 Power BI dashboard
Power BI可以帮助用户从不同来源的数据中提取信息,生成交互式报表和可视化仪表盘。Power BI dashboard是Power BI的一个重要组成部分,它可以将来自多个数据源的数据整合到一个面板上,为用户提供全面的数据洞察。通过Power BI dashboard,用户可以方便地查看关键指标的实时数据、分析趋势变化和发现隐藏在数据中的模式和趋势。重点是Power BI dashboard是使用 JavaScript 呈现的,因此在尝试抓取任何数据之前,需要确保页面已完成加载。可以使用 WebDriverWait 类等待某个元素出现在页面上,这是页面加载完成的良好指示。
270 0
|
Web App开发 前端开发 测试技术
从零开始Web自动化(三):通过selenium,9行代码实现打字网站的自动打字
从零开始Web自动化(三):通过selenium,9行代码实现打字网站的自动打字
290 0
从零开始Web自动化(三):通过selenium,9行代码实现打字网站的自动打字