关于修改window.navigator.webdriver代码失效问题
我前面写到过sycm自动抓取店铺数据
文章链接:https://blog.csdn.net/qq_35866846/article/details/103410931#comments
但是这个年过完,代码突然不能用了!
经过多方排查我发现:修改window.navigator.webdriver值的
那句代码chrome_options.add_experimental_option('excludeSwitches',['enable-automation'])
没有生效,也就是说selenium打开的浏览器在控制台Console检测结果仍然为TRUE,正常打开的 浏览器测试值应该为undefined
最后查出来原因:是因为我的chrome自动更新了,经测试:79(含79)以后的版本该语句都会失效【测试了79,80,81,个人猜测chrome后续版本把这个配置都给屏蔽掉了】
目前的解决方法:把浏览器退回到79之前的版本
更新容易回去难啊!差点儿把电脑搞报废,最后在安全模式下把系统还原到前几天了才救回来
下面详述下退回chrome的操作:
No1. 先卸载 干净
谷歌浏览器 (注意一定要卸载干净干净,否则下载的安装包点击会没反应)
我是用软件管理卸载的
卸载完成后再执行下面两步
①先用Everything搜索C盘,把google相关的文件夹删掉(如果自己 在C盘找也行,比较慢,而且找不全,建议使用工具)。
Everything下载地址:https://www.voidtools.com/zh-cn/
②(关键
)把注册表HKEY_LOCAL_MACHINESOFTWAREWow6432NodeGoogle删除,可以试试删除注册表的其他google项(不过我没删貌似也没什么问题)。
No2.下载历史版本的chrome浏览器安装包,不要去官网,官网直接给你安装最新版本的
这是我找的历史版本的下载地址(实测可用):
“ https://www.chromedownloads.net/chrome64win/
”
(我下的是76的稳定版)
No3.下载对应版本的驱动,下载地址:http://npm.taobao.org/mirrors/chromedriver/
No4.到这里已经完成了,再执行之前的代码就没问题了,但是为了避免重蹈覆辙还要继续做一步——禁用chrome的自动更新,详细步骤参考以下链接(注意一定要改成禁用禁用
,手动也会被更新):
“ https://jingyan.baidu.com/article/0aa223754076f788cc0d6492.html
”
【写在最后:】如果有更好的办法可以绕过某些网站检测,欢迎在评论区评论交流! 下面有两个方向,欢迎大家尝试 ①使用中间代理截断并修改js返回(由于本人js技术薄弱暂未实现) ②使用pypeeter (暂未尝试成功)
- 【前沿】TensorFlow Pytorch Keras代码实现深度学习大神Hinton NIPS2017 Capsule论文
- Linux 部署ASP.NET SQLite 应用 的坎坷之旅 附demo及源码
- 跨平台:使用OWIN 为WebAPI 宿主
- 如何在UWP中统一处理不同设备间的页面回退逻辑
- new and override
- 初识SignalR~仿QQ即时聊天(群发,单发)(Web,WPF等Demo演示)【上】
- 【翻译】A Next-Generation Smart Contract and Decentralized Application Platform
- asp.net回调javascript
- Oracle9i第2版中的UNT_FILE提高了文件输入/输出(I/O)功能。
- Python 工匠:善用变量来改善代码质量
- sql数据库打包部署安装
- 打包并自动安装sql数据库
- SQL 2008 r2 安装提示 visual studio 2008 版本错误解决方法
- mssql 获取表空间大小
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Java 反射 -超详细讲解(附源码)
- [Data Guard全解析]6.物理备库的Switchover
- com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException异常解决方法
- [Oracle数据库日常操作] Redo Log的相关操作
- [周末往期回顾] 使用requests和fiddler模拟登陆51cto并获取下载币
- [周末往期回顾] 自动备份思科交换机配置
- [打造自己的监控系统]让Django运行自定义命令
- 没想到 Shell 命令竟然还能这么玩?| Shell 玩转大数据分析
- 瞄准器!3D入门实战!拇指射箭!Cocos Creator 3D !
- [周末往期回顾] 使用Django创建网站
- 用 NetworkX + Gephi + Nebula Graph 分析<权力的游戏>人物关系(上篇)
- [Oracle数据库迁移]使用expdp/impdp进行迁移
- [周末往期回顾]使用Django获取Linux性能数据并存放在redis中
- [周末往期回顾]使用Python将Oracle已使用过索引存入MySQL中
- [周末往期回顾]DB_CREATE_FILE_DEST,DB_CREATE_ONLINE_LOG_DEST_n