Chrome设定webdriver以避免Selenium检测

一、WebDriver规范

根据WebDriver规范(https://w3c.github.io/webdriver/#x4-interface)的描述,WebDriver定义了一个标准方法,以便于文档(document)判断当前浏览器处于自动化控制之中。

这个方法就是检测window.navigator.webdriver的值,正常情况下其值为undefined,自动化控制下为true。注意,正常情况下不是false,在JavaScript中undefined为未定义,即该值不存在,而false表示一布尔值。

 

版本79.0.3945.16之前,可用如下方法:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#!/usr/bin/env python3
# -*- coding: UTF-8 -*-
 
from selenium import webdriver
 
options = webdriver.ChromeOptions()
options.add_argument("start-maximized")
options.add_experimental_option("excludeSwitches", ["enable-automation"])
options.add_experimental_option("useAutomationExtension", False)
 
driver = webdriver.Chrome(options=options)
driver.get("YOUR_URL")
# 在控制台中验证window.navigator.webdriver的值为undefined。
driver.quit()

  

新版本

版本79.0.3945.16之后,ChromeDriver修正了这一“问题”。

execute_cdp_cmd函数来帮忙!cdp即Chrome DevTools Protocal,Chrome开发者工具协议。

通过该函数在文档加载前注入一段js代码以消去webdriver值。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#!/usr/bin/env python3
# -*- coding: UTF-8 -*-
 
from selenium import webdriver
 
driver = webdriver.Chrome()
script = '''
Object.defineProperty(navigator, 'webdriver', {
    get: () => undefined
})
'''
driver.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", {"source": script})
driver.get("YOUR_URL")
# 在控制台中验证window.navigator.webdriver的值为undefined。
driver.quit()

  附上火狐浏览器解决方案(80版本测试有效)

1
2
3
4
5
6
7
8
9
10
from selenium import webdriver
import time
 
profile = webdriver.FirefoxProfile()
profile.set_preference("dom.webdriver.enabled", False)
profile.set_preference('useAutomationExtension', False)
profile.update_preferences()
driver = webdriver.Firefox(firefox_profile=profile)
driver.get('https://login.aol.com')
driver.maximize_window()

 浏览器控制台检测

Object.defineProperties(navigator,{webdriver:{get:()=>undefined}})
Object.defineProperties(navigator,{webdriver:{get:()=>false}})
window.navigator.webdriver

posted @   究极不吃香菜  阅读(740)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示