很多人喜欢使用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_argum

尽管Selenium和Puppeteer常用于模拟浏览器进行网页抓取,但它们的数十个特征使它们易被网站通过JavaScript探测。实验显示,即使在无头模式下,这些工具的使用也会暴露大量可识别标志,使得伪装成正常浏览器变得困难。对于有强大安全防护的网站,使用此类工具进行爬虫可能面临风险。
最低0.47元/天 解锁文章
1234

被折叠的 条评论
为什么被折叠?



