前端js对模拟浏览器爬虫的解决方案
前端js对模拟浏览器爬虫的解决方案
- 我们在开发爬虫的过程中喜欢使用Selenium + Chromedriver,然后在前端中一行Javascript代码就可以识别出来,从而把你干掉
首先我们用一下代码启动模拟浏览器
from selenium.webdriver import Chrome
driver = Chrome()
如下图:
接下来我们用一行js代码来调试window.navigator.webdriver
返回的结果为ture
接下来咱们返回正常的浏览器进行查看,运行相同的代码,如下图所示
可以看到正常的浏览器为undefined,所以我们就知道了在一些网站会知道咱们的是模拟浏览器的,这只是其中的一种方法。
同样有影响的是咱们**了某个网站的加密,在借助模拟浏览器进行解密的时候获取的加密数据不对,有一部分的原因就是对方在加密的时候对浏览器进行了判定,包括某乎的加密和某音的加密。
接下来我们来讲讲如何解决。
对js比较熟悉的同学们肯定会用下面这行代码进行解决
Object.defineProperties(navigator, {webdriver:{get:()=>undefined}});
如下图所示:现在确实是解决了,但是我们在翻页的时候就行了
现在就又不行了,有种简单的方法,直接修改代码即可,在启动Chromedriver之前,为Chrome开启实验性功能参数excludeSwitches,它的值为['enable-automation']
from selenium.webdriver import Chrome
from selenium.webdriver import ChromeOptions
option = ChromeOptions()
option.add_experimental_option('excludeSwitches', ['enable-automation'])
driver = Chrome(options=option)