网站首页 > 技术文章 正文
使用Google的Chrome Devtools-Protocol(Chrome开发工具协议)简称CPD。
我们打开CPD的官方文档,可以看到如下的命令:
在每个Frame刚刚打开,还没有运行Frame的脚本前,运行给定的脚本。
通过这个命令,我们可以给定一段JavaScript代码,让Chrome刚刚打开每一个页面,还没有运行网站自带的JavaScript代码时,就先执行我们给定的这段代码。
那么如何在Selenium中调用CDP的命令呢?实际上非常简单,我们使用driver.execute_cdp_cmd。根据Selenium的官方文档,引发需要调用的CDP命令和参数即可:
于是我们可以写出如下代码:
from selenium.webdriver import Chrome
driver = Chrome('./chromedriver')
driver.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", {
"source": """
Object.defineProperty(navigator, 'webdriver', {
get: () => undefined
})
"""
})
driver.get('http://exercise.kingname.info')
运行效果如下图所示:
完美隐藏window.navigator.webdriver。并且,关键语句:
driver.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", {
"source": """
Object.defineProperty(navigator, 'webdriver', {
get: () => undefined
})
"""
})
只需要执行一次,之后只要你不关闭这个driver开启的窗口,无论你打开多少个网址,他都会自动提前在网站自带的所有js之前执行这个语句,隐藏window.navigator.webdriver。
如果有人运行上面的代码,出现如下报错:
那么请升级你的ChromeDriver。老版本的Chrome + ChromeDriver只能用以前的方法,不能用今天的方法。新版本的Chrome + ChromeDriver可以使用今天的方法,但不能用老方法。
【转载】https://mp.weixin.qq.com/s/U2aAC6K6RuQDRqfb8m35_w
猜你喜欢
- 2024-11-27 VirtualBox 7.1.2 发布! 带来多项 GUI 更新,无人值守安装已彻底删除
- 2024-11-27 Spring boot+Mybatisplus用AR模式实现逻辑删除操作
- 2024-11-27 碎片时间学编程「127]:从数组中删除元素
- 2024-11-27 JavaScript程序员需要掌握的5个debug技巧
- 2024-11-27 python 列表删除
- 2024-11-27 souce-map-js + Vue 还原生成环境报错,让JS报错无所遁形
- 2024-11-27 如何使用 rmdir 命令删除目录?
- 2024-11-27 illustrator插件-常用功能开发-删除所有蒙版-js脚本开发-AI插件
- 2024-11-27 如何在 Ubuntu 22.04 LTS 中添加、删除和授予用户 Sudo 权限
- 2024-11-27 删除此函数式编程技术的 Switch 语句
- 标签列表
-
- content-disposition (47)
- nth-child (56)
- math.pow (44)
- 原型和原型链 (63)
- canvas mdn (36)
- css @media (49)
- promise mdn (39)
- readasdataurl (52)
- if-modified-since (49)
- css ::after (50)
- border-image-slice (40)
- flex mdn (37)
- .join (41)
- function.apply (60)
- input type number (64)
- weakmap (62)
- js arguments (45)
- js delete方法 (61)
- blob type (44)
- math.max.apply (51)
- js (44)
- firefox 3 (47)
- cssbox-sizing (52)
- js删除 (49)
- js for continue (56)
- 最新留言
-