在Selenium所用JavaScript代码中,()=>是什么含义?
代码中
()=>的含义解析 你提到的()=>是JavaScript ES6标准引入的箭头函数,是传统function函数的简化写法,在你给出的Selenium脚本里有两处应用:
最外层的
()=>{Object.defineProperties(navigator,{webdriver:{get:()=>false}})}
这是一个无参数的箭头函数:()表示这个函数不需要接收任何参数=>是箭头函数的标志性语法,用来连接参数部分和函数体- 后面的
{}包裹了函数要执行的逻辑——通过Object.defineProperties修改浏览器navigator对象的webdriver属性。在Selenium场景中,这个函数会被注入到目标页面执行,用来隐藏自动化测试的标识。
内层的
get:()=>false
这是一个极简箭头函数:- 因为函数体只有返回
false这一行逻辑,所以省略了包裹函数体的{}和return关键字(完整写法是get:()=>{return false})
它作为webdriver属性的getter方法,当页面代码读取navigator.webdriver时,会返回false,替代Selenium默认的true,以此绕过网站的反爬检测。
- 因为函数体只有返回
如果用传统function语法改写这段代码,效果完全一致:
function() { Object.defineProperties(navigator, { webdriver: { get: function() { return false; } } }); }
内容的提问来源于stack exchange,提问作者Zhang Shengjie Can
相关产品推荐
相关产品推荐

