我们在使用selenium控制Chromedriver的时候,selenium在运行的时候会暴露出一些预定义的Javascript变量(特征字符串),例如"window.navigator.webdriver",在非selenium环境下其值为undefined,而在selenium环境下,其值为true,这种情况下会被防爬机制检测出来。
我所要做的一切是为了确保
c
d
c
不
再以文档变量的形式存在,我们可以用
16
进制编辑器将
c
h
r
o
m
e
d
r
i
v
e
r
.
e
x
e
打开,查找
cdc_不再以文档变量的形式存在,我们可以用16进制编辑器将chromedriver.exe打开,查找
cdc不再以文档变量的形式存在,我们可以用16进制编辑器将chromedriver.exe打开,查找cdc_asdjflasutopfhvcZLmcfl_ 进行手动替换,无需实际进行任何编译。查找 $cdc_asdjflasu## 标题topfhvcZLmcfl_ 替换成内容等长的字符即可。
我们在Linux中安装hexedit:
yum install hexedit
安装完成后,运行命令,将chromedriver.exe用16进制打开
hexedit chromedriver.exe
通过Tab键将光标定位到右侧栏,按Ctrl+S进行查找:
我们可以查找到var key= '$cdc_asdjflasutopfhvcZLmcfl_ ';这一条语句,然后我们将引号里面的 $cdc_asdjflasutopfhvcZLmcfl_ 替换成内容等长的字符即可:
替换完成按Ctrl+W保存,Ctrl+X退出。