针对网站反selenium爬虫的应对方法

226 阅读2分钟

1. 应对网站反 Selenium 爬虫的方法(基于自定义实现)

以下是通过自定义浏览器驱动配置绕过网站反自动化检测的核心方法,适用于 ChromeEdge 浏览器。该方法通过隐藏浏览器自动化特征(如 navigator.webdriver 属性)和优化配置实现反检测。


1.1. 1. 核心代码实现

1.1.1. Chrome 浏览器版本
from selenium import webdriver

def create_chrome_driver(*, headless=False):
    # 配置浏览器选项
    options = webdriver.ChromeOptions()
    
    # 启用无头模式(可选)
    if headless:
        options.add_argument('--headless')
    
    # 隐藏自动化特征
    options.add_experimental_option('excludeSwitches', ['enable-automation'])  # 移除自动化控制提示
    options.add_experimental_option('useAutomationExtension', False)          # 禁用自动化扩展
    
    # 初始化浏览器驱动
    browser = webdriver.Chrome(options=options)
    
    # 通过CDP命令修改navigator.webdriver属性
    browser.execute_cdp_cmd(
        'Page.addScriptToEvaluateOnNewDocument',
        {'source': 'Object.defineProperty(navigator, "webdriver", {get: () => undefined})'}
    )
    return browser
1.1.2. Edge 浏览器版本
from selenium import webdriver

def create_edge_driver(*, headless=False):
    # 配置浏览器选项
    options = webdriver.EdgeOptions()
    
    # 启用无头模式(可选)
    if headless:
        options.add_argument('--headless')
    
    # 隐藏自动化特征
    options.add_experimental_option('excludeSwitches', ['enable-automation'])  # 移除自动化控制提示
    options.add_experimental_option('useAutomationExtension', False)           # 禁用自动化扩展
    
    # 初始化浏览器驱动
    browser = webdriver.Edge(options=options)
    
    # 通过CDP命令修改navigator.webdriver属性
    browser.execute_cdp_cmd(
        'Page.addScriptToEvaluateOnNewDocument',
        {'source': 'Object.defineProperty(navigator, "webdriver", {get: () => undefined})'}
    )
    return browser

1.2. 2. 关键配置解析

配置项作用
--headless启用无头模式,减少资源占用(但可能增加被检测风险)。
excludeSwitches: enable-automation移除浏览器顶部的“自动化控制”提示,降低被识别概率。
useAutomationExtension: False禁用默认的自动化扩展插件(如ChromeDriver插件),避免暴露自动化特征。
CDP脚本注入通过修改navigator.webdriver属性为undefined,直接绕过网站对该属性的检测。

1.3. 3. 使用示例

# 初始化浏览器(Chrome示例)
browser = create_chrome_driver(headless=True)
browser.get("https://target-website.com")

# 执行页面操作(如登录、数据提取等)
# ...

# 关闭浏览器
browser.quit()

1.4. 4. 注意事项

  1. 依赖安装
    • 需安装对应浏览器的驱动(如 chromedrivermsedgedriver),并确保驱动版本与浏览器兼容。
    • 安装Selenium库:pip install selenium.
  1. 无头模式风险
    部分网站可能通过性能特征(如渲染时间)检测无头模式。若被拦截,可关闭无头模式或添加更多反检测策略。
  2. 动态检测绕过
    若网站结合行为分析(如鼠标轨迹、操作频率),需额外模拟人类行为(如随机等待、滚动页面)。
  3. 法律与道德约束
    确保爬虫行为符合目标网站的 robots.txt 规则及相关法律法规,避免滥用。

通过以上方法,可有效隐藏自动化工具特征,应对基础的反爬虫检测机制。若需应对更复杂的检测(如浏览器指纹、Canvas指纹),可结合第三方库(如 undetected-chromedriver)或扩展反检测策略。