chrome升了chrome88后,selenium修改window.navigator.webdriver
2023-04-18 17:00:41 时间
写在前面
Google于2021年1月19日在稳定版中发布了Chrome88(大更新)
- 针对Windows 10的改进的深色主题以及较少侵入性权限提示
- 不再支持FTP URL、Flash、Mac OS X Yosemite
- 较少干扰的权限请求
- 禁用了所有旧版浏览器插件
- 数字商品API:在Google Play商店中发布的Web应用现在可以像本地应用一样使用Play商店计费。
- WebXR:AR照明估算: 对于Android上的AR和VR内容,照明估算可帮助使模型感觉更自然,并使其更“适合”用户的环境。
- 锚目标= _blank默认情况下意味着rel = noopener:为了防御“标签窃听”攻击,目标的锚的_blank 行为就像rel 设置为一样noopener。
- CSS Aspect-ratio属性: 这允许为任何元素明确指定纵横比,以获得与被替换元素相似的行为。 来源隔离: Web应用程序可以选择提高页面的安全性,以换取放弃对某些API的访问。
- JavaScript引擎: Chrome 88集成了V8 JavaScript引擎的8.8版。
更多更新信息可以自己搜搜看
今天主要想写的是,因为更新到chrome88导致了一直使用的selenium爬虫数据自动化采集代码失效了,这已经是第二次因为浏览器更新导致我代码失效了,本着记录自己工作的原则,一直对这方面进行着持续更新,所以也导致了很多小伙伴过来问我这个问题,不了解的可以点击下面链接直达前文,专为解决【chrome88导致无法修改window.navigator.webdriver】
的朋友们直接看本篇就可以了
一、出师未捷身先死的sycm数据自动化 二、关于修改window.navigator.webdriver代码失效问题 三、(新)关于修改window.navigator.webdriver代码失效问题
问题查找
版本信息
造成代码无法使用的主要原因与之前一样:
- window.navigator.webdriver值为true
经过几天的排查主要原因是
chrome88集成了V8 JavaScript引擎的8.8版 ,导致的原先修改属性的js代码失效
# 原先修改window.navigator.webdriver的js代码块
Object.defineProperty(navigator, 'webdriver', {
get: () => undefined
})
报错翻译: 无法使用defineproperty函数重新定义webdriver的属性
解决方案
对js不是太熟的我本计划使用新的js写法对window.navigator.webdriver进行重定义,经过几天的努力没成功,其他小伙伴可以尝试下这个方向,有好的方法可以评论区交流
最终解决办法:
还是从selenium着手,使用--disable-blink-features=AutomationControlled
参数完美去除window.navigator.webdriver
#手动登录
def login(extension_path,tmp_path):
chrome_options = webdriver.ChromeOptions()
# 设置好应用扩展
chrome_options.add_extension(extension_path)
#添加下载路径
prefs = {'profile.default_content_settings.popups': 0, 'download.default_directory':tmp_path,
"profile.default_content_setting_values.automatic_downloads":1}#允许多个文件下载
chrome_options.add_experimental_option('prefs', prefs)
#修改windows.navigator.webdriver,防机器人识别机制,selenium自动登陆判别机制
chrome_options.add_experimental_option('excludeSwitches', ['enable-automation'])
chrome_options.add_argument("--disable-blink-features=AutomationControlled")
# drive = webdriver.Chrome(chrome_options=chrome_options)
drive = webdriver.Chrome(options=chrome_options)
url = 'https://sycm.taobao.com/portal/home.htm'
drive.implicitly_wait(10)
drive.get(url)
input("请手动登录,成功后输入【1】:")
#叉掉页面无关元素后再输入1继续执行
drive.maximize_window() #窗口最大化
tm=random.uniform(1,2)
time.sleep(tm)
return drive
测试成功,完美修改,登录成功!
相关文章
- 谷歌夺回AI画语权,网友:DALL·E 2诞生一个月就过时了?
- 智能驾驶「人才荒」,困在了高校的学科博弈中
- 如何管理云服务器密码
- 2013年图灵奖得主 Leslie Lamport 专访:程序员需要更多的数学知识
- 30秒一签,上海核酸采样机器人来了!
- 智慧数字化经营六种优惠券发放模式
- 首款RISC-V笔记本电脑疑曝光,或配Windows系统,年底能来吗
- 清北稳进Top20!全球AI研究年度排名出炉,中美差距巨大
- 深入解读nginx配置文件
- 拜登访韩,首站三星晶圆厂!美将联合他国制裁中国芯片
- 五分钟搞懂分布式流控算法
- 追溯Ceres-Solver中CostFunction类方法
- LiveData的前世今生
- 阿里创新三维定位地图压缩算法,论文成果入选顶会CVPR 2022
- 突发!Gitee宣布仓库开源必须人工审核,「中国Github」要无了?
- 如何高效构建保险业场景化数据分析体系-承保和理赔
- Clipper: 开源的基于图论框架的鲁棒点云数据关联方法(ICRA2021)
- 手把手教你高效监控ANR
- 阿里副总裁、达摩院副院长金榕被曝离职!AI科学家集体“逃离“大厂…
- 科学家首次将AI元学习引入神经科学,有望提升脑成像精准医疗