可以看到网上有很多得说法都是去修改参数达到目的
from selenium import webdriver
from selenium.webdriver import ChromeOptions
option = ChromeOptions() #实例化一个ChromeOptions对象
option.add_experimental_option('excludeSwitches', ['enable-automation']) #以键值对的形式加入参数
bro = webdriver.Chrome(executable_path='./chromedriver.exe',options=option) #在调用浏览器驱动时传入option参数就能实现undefined
只能说貌似有用吧,但是真正在遇到反爬网站机制厉害得时候这种方式是不行得,加载出来得页面是不全得,因为目标网站还是检测出来你是selenium访问,另一种方式:
修改chromedriver源码:
1.首先测试一下没有修改源码得driver去访问百度并且在控制台输入window.navigator.webdriver,查看响应:
2.修改源码再进行测试
用Notepad++直接打开chromedriver.exe看到源码,在搜索一下:
var key = '$cdc_asdjflasutopfhvcZLmcfl_'
这里要改一下key得值:
注意一定要改成相同长度得字符串否则会导致driver不可用
var key = '$abcdefghijklmnopqrstuvwxyz@'
这里需要注意变成underfined是因为在访问时加得最上面得options参数才变成underfined得,这加参数只是起到表面作用,真正可以跳过检测selenium得还是得改源码