大家好,我是安果!
我们使用 Selenium 对网页进行爬虫时,如果不做任何处理直接进行爬取,会导致很多特征是暴露的
对一些做了反爬的网站,做了特征检测,用来阻止一些恶意爬虫
本篇文章将介绍几种常用的隐藏浏览器指纹特征的方式
1. 直接爬取
目标对象:
aHR0cHM6Ly9xaWthbi5jcXZpcC5jb20vUWlrYW4vU2VhcmNoL0FkdmFuY2U=
我们使用 Selenium 直接爬取目标页面
页面明显做了反爬,网页返回直接返回空白内容
2. CDP
CDP 全称为 Chrome Devtools-Protocol
https://chromedevtools.github.io/devtools-protocol/
通过执行 CDP 命令,可以在网页加载前运行一段代码,进而改变浏览器的指纹特征
比如,window.navigator.webdriver 在 Selenium 直接打开网页时返回结果为 true;而手动打开网页时,该对象值为 undefined
因此,我们可以利用 CDP 命令修改该对象的值,达到隐藏指纹特征的目的
需要指出的是,浏览器的指纹特征很多,使用该方法存在一些局限性
3. stealth.min.js
该文件包含了常用的浏览器特征,我们只需要读取该文件,然后执行 CDP 命令即可
下载地址:
https://github.com/berstend/puppeteer-extra/tree/stealth-js
4. undetected_chromedriver
这是一个防止浏览器指纹特征被识别的依赖库,可以自动下载驱动配置再运行
项目地址:
https://github.com/ultrafunkamsterdam/undetected-chromedriver
使用步骤也很方便
首先,我们安装依赖库
然后,通过下面几行代码就能完美隐藏浏览器的指纹特征
5. 操作已开启的浏览器
最后一种方式上篇文章已经介绍过
如何利用 Selenium 对已打开的浏览器进行爬虫!
我们只需要通过命令行启动一个浏览器
然后,利用 Selenium 直接操作上面的浏览器即可模拟正常操作浏览器的行为
6. 最后
上面罗列出了多种应对网站反爬的解决方案,大家可以根据实际需求去选择适合自己的方案
如果大家有任何疑惑,欢迎在评论区留言!
推荐阅读
5 分钟,教你从零快速编写一个油猴脚本!
实战 | 如何利用 Scrapy 编写一个完整的爬虫!
一个人,一座城,你到底在乎什么?Python 爬虫告诉你!
END
领取专属 10元无门槛券
私享最新 技术干货