使用selenium也会被网站反爬,有的网站甚至检测到是selenium时就会封禁ip,所以今天分享一下selenium的反爬。大多数网站识别selenium的方法是通过window.navigator.webdriver,它的作用是在用户打开浏览器时给当前窗口一个window属性来存放用户的各种信息,当我们使用selenium时值为true,正常用户访问网站时为false

 

所以要实现selenium的反爬就要去除window.navigator.webdriver,代码如下

from selenium.webdriver import ChromeOptions
from selenium import webdriver
# 实例化对象
option = ChromeOptions()
option.add_experimental_option('excludeSwitches',['enable-automation'])# 开启实验性功能
# 去除特征值
option.add_argument("--disable-blink-features=AutomationControlled")
# 实例化谷歌
driver = webdriver.Chrome(options=option)
# 修改get方法
script = '''object.defineProperty(navigator,'webdriver',{undefinedget: () => undefined})'''
#execute_cdp_cmd用来执行chrome开发这个工具命令
driver.execute_cdp_cmd("page.addscriptToEvaluateonNewDocument",{"source": script})

再次使用selenium会发现window.navigator.webdriver值为undefined,而且浏览器窗口也没有了正在使用自动化测试

 

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐