chrome升了chrome88后,selenium修改window.navigator.webdriver

写在前面

在这里插入图片描述
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

测试成功,完美修改,登录成功!
在这里插入图片描述

  • 23
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 46
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 46
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

诡途

你的鼓励是我 创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值