很多人喜欢使用Selenium 或者 Puppeteer(Pyppeteer)通过模拟浏览器来编写爬虫,自以为这样可以不被网站检测到,想爬什么数据就爬什么数据。
但实际上,Selenium 启动的浏览器,有几十个特征可以被网站通过 JavaScript 探测到。Puppeteer 启动的浏览器,也有很多特征能够被网站探测。
如果你不相信,那么我们来做一个实验。首先你使用正常的浏览器打开如下网址:。可以看到,页面的内容如下:
这个页面很长,你得滚动鼠标往下看。大部分都是绿色的。
接下来,使用Selenium启动一个 Chrome 的有头模式,再打开这个页面看看效果:
一开始这一项就标红了,说明网站成功检测到你使用模拟浏览器了。你再往下翻,标红的都是可以被检测出的特征。
左边是普通浏览器,右边是模拟浏览器
左边是普通浏览器,右边是模拟浏览器。如果你一项一项对比,就会发现很多地方都不一样。
这还是有头模式的效果。我们来看看无头模式:
截图打开以后是下面这样的。不要吓到:
万里河山一片红
这么多特征都直接暴露了,你还隐藏个屁。网站只要想发现你,非常容易。
既然 Selenium 不行,那 Puppeteer 或者 Pyppeteer怎么样呢?我们使用 Pyppeteer 来做个实验。直接启动无头模式并截图。运行效果是下面这样的:
跟 Selenium 没什么区别。
所以,你还好意思继续用这两个东西来写爬虫?爬点没有安全意识的小网站可以。爬那些有强大安全团队和法务团队的公司,你就是在找死。
今天给大家推荐一本机器学习、深度学习的人都应该听说过一本经典教材:《Pattern Recognition and Machine Learning》,中文译名《模式识别与机器学习》,简称 PRML。出自微软剑桥研究院实验室主任 Christopher Bishop 大神之手。对,就是豆瓣评分 9.5 的这本书。
资料获取方法
领取专属 10元无门槛券
私享最新 技术干货