问题:
写爬虫的时候遇到一个ajax动态请求+javascrapt异步加载的项目,解析出来的数据还需要md5解密,果断换selenium+Chromedriver,在掘金看到一个大佬写的一个Chrome参数,顺手加上,结果Chrome就不停的弹出这个框:
代码在这里,不会被后台检测到Chromedriver访问:
options.add_experimental_option('excludeSwitches', ['enable-automation'])
解决办法:
网上搜索了一圈,发现主要有3种方法:组策略法,运行批处理法,直接改dll文件法。第一种组策略的据说很早就失效了,我亲测了一下确实没用。另外一个批处理的方法据说也生效了,而且批处理权限太大没敢尝试运行,直接试了第三种方法,一次性成功!下面记录一下解决过程(ps:直接上成功方法)。
修改dll文件法
打开Chrome安装目录,找到chrome.dll文件,用x64dbg打开,
双击x96dbg.exe,然后选择x64dbg(如果打不开,换x32dbg打开):
然后连续多次点击运行到用户代码按钮,直至窗口标题处的模块变成chrome.dll:
然后在主面板右键依次选择搜索 -> 当前模块 -> 字符串:
然后会打开一个搜索界面,等待进度条加载完毕,搜索ExtensionDeveloperModeWarning:
会搜到2条结果,双击第一个,跳转到反汇编界面,往上翻一点,找到cmp eax,2(也有可能是cmp eax,3):
双击打开编辑页面,修改成cmp eax,9,然后点击确定,注意只需要点击一次确定即可,点击确定后它还是会继续弹出其它行的编辑界面,此时直接关闭对话框即可。:
修改完之后Ctrl+P导出修改过的dll文件(点击修补文件按钮就是导出dll文件):
你可以把dll文件导出到其它某个位置,然后把原始chrome.dll文件备份,再把这个修改过的替换,然后重启Chrome,可以发现该死的提示已经没有了。