如何用Python防止selenium-webdriver被网站识别?
在我使用 chrome 的 webdriver 去打开一些网页的时候,会被识别出来不是在用 chrome 浏览器正常的去访问,对于这种情况,怎么样抹掉我的 webdriver 指纹呢,或者有什么好的思路和方法来解决呢,非常希望得到帮助,谢谢大家!
如何用Python防止selenium-webdriver被网站识别?
10 回复
只知道 View-port 方面可能需要预先设置一下,据说有些网站会做鼠标轨迹,所以你可能还要考虑模拟鼠标
要防止Selenium被网站识别,核心是隐藏自动化特征。最有效的方法是使用undetected-chromedriver库,它专门为绕过检测而设计。
import undetected_chromedriver as uc
import time
# 基本使用 - 自动处理大部分检测
driver = uc.Chrome()
driver.get('https://example.com')
time.sleep(5)
driver.quit()
# 高级配置 - 添加更多反检测选项
options = uc.ChromeOptions()
options.add_argument('--disable-blink-features=AutomationControlled')
options.add_argument('--disable-dev-shm-usage')
options.add_argument('--no-sandbox')
driver = uc.Chrome(options=options, version_main=114) # 指定Chrome版本
driver.get('https://example.com')
如果必须用原生Selenium,可以尝试修改WebDriver属性:
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.chrome.options import Options
options = Options()
options.add_experimental_option("excludeSwitches", ["enable-automation"])
options.add_experimental_option('useAutomationExtension', False)
# 隐藏navigator.webdriver属性
driver = webdriver.Chrome(options=options)
driver.execute_script("Object.defineProperty(navigator, 'webdriver', {get: () => undefined})")
# 修改其他可能被检测的属性
driver.execute_cdp_cmd('Page.addScriptToEvaluateOnNewDocument', {
'source': '''
Object.defineProperty(navigator, 'plugins', {
get: () => [1, 2, 3, 4, 5]
});
Object.defineProperty(navigator, 'languages', {
get: () => ['zh-CN', 'zh', 'en']
});
'''
})
总结:直接用undetected-chromedriver最省事。
没有遇到过,关注新问题。。
好的 三克油
我也想问,我用 selenium chrome webdriver 去网易云音乐登陆被说登陆异常。就算我开启 webdriver 手动登陆也会有同样的问题。
加载用户文件应该就不会
不是的,有的还是可以识别出来,正常登录不出验证码,使用 webdriver 会出验证码
给个思路也行啊 啊啊啊啊啊啊
一般是通过 window.navigator.webdriver 检测的…
但是变种的方法很多…
且实测, 目前版本的 chromedrive 没有办法绕过去.

