如何用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 没有办法绕过去.

回到顶部