查看原文
其他

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

The following article is from 未闻Code Author kingname

关注上方“Python数据科学”,选择星标,

精彩文章不会错过!



▼文末赠送5本新书《Python高手修炼之道》,欢迎留言参与~

很多人喜欢使用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 没什么区别。

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

赠书福利
赠送新书《Python高手修炼之道》共5本,刚刚上架!由「人民邮电出版社」赞助提供,Python数据处理和机器学习非常棒的学习资料,推荐入手一本。
介绍:本书从Python的基础安装开始介绍,系统梳理了Python的入门语法知识,归纳介绍了图像处理、数据文件读写、数据库操作等Python基本技能;然后详细讲解了NumPy、Matplotlib、Pandas、Scipy、Scikit-learn等在数据处理、机器学习领域的应用。代码实例涵盖网络爬虫、数据处理、视觉识别、机器学习等应用领域。
参与方式:本篇文章底部「点赞」+「在看」+「留言」,文章内容相关的优质留言才可上墙!留言点赞数量最多前5位读者将获得这本书,截止时间「12月17日20:00」,最终获赠者添加我的微信领取。
PS:禁止恶意刷赞!发现后将进入黑名单,取消上墙资格。
🧐分享、点赞、在看,给个三连击呗!👇

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存