解决Selenium被识别难题:selenium-stealth原理详解与实战案例

发布时间:2026/7/12 20:01:10
解决Selenium被识别难题:selenium-stealth原理详解与实战案例 解决Selenium被识别难题selenium-stealth原理详解与实战案例【免费下载链接】selenium-stealthTrying to make python selenium more stealthy.项目地址: https://gitcode.com/gh_mirrors/se/selenium-stealth你是否正在为Selenium自动化脚本频繁被网站检测而烦恼 作为Python开发者使用Selenium进行网页自动化测试或数据采集时最头疼的问题就是被目标网站识别为机器人程序。今天我将为你详细介绍一个强大的解决方案——selenium-stealth这个Python包能有效防止Selenium被检测让你的自动化脚本像真实用户一样浏览网页。为什么Selenium会被检测在深入了解selenium-stealth之前我们先要明白网站是如何检测Selenium的。网站通常通过检查浏览器的各种指纹特征来识别自动化工具检测项目正常浏览器Selenium浏览器navigator.webdriverundefinedtrueChrome运行时属性存在缺失插件信息完整不完整WebGL渲染器真实GPU信息默认值这些差异就像数字指纹一样暴露了Selenium的身份。而selenium-stealth正是通过修改这些指纹特征让Selenium浏览器看起来和普通浏览器一模一样。selenium-stealth的核心工作原理 ️selenium-stealth通过注入JavaScript代码来修改浏览器的各种属性消除自动化工具的痕迹。它主要从以下几个方面进行伪装1. 隐藏navigator.webdriver属性这是最关键的检测点之一。Selenium默认会在navigator对象上设置webdriver属性而普通浏览器没有这个属性。selenium-stealth通过修改这个属性来隐藏自动化痕迹。2. 完善Chrome运行时环境普通Chrome浏览器有完整的chrome.runtime和chrome.app对象而Selenium中这些对象可能不完整或缺失。selenium-stealth会补充这些缺失的属性。3. 模拟真实的插件信息通过修改navigator.plugins和navigator.mimeTypes对象让插件列表看起来更真实。4. 修正WebGL渲染信息设置真实的WebGL厂商和渲染器信息避免使用默认值。5. 处理用户代理字符串移除用户代理字符串中的自动化相关标记并支持自定义语言和平台信息。selenium-stealth实战安装指南 安装selenium-stealth非常简单只需一行命令pip install selenium-stealth这个包会自动安装Selenium作为依赖所以你不需要单独安装Selenium。快速上手基本使用示例 让我们看看如何使用selenium-stealth来保护你的自动化脚本from selenium import webdriver from selenium_stealth import stealth import time # 配置Chrome选项 options webdriver.ChromeOptions() options.add_argument(start-maximized) options.add_experimental_option(excludeSwitches, [enable-automation]) options.add_experimental_option(useAutomationExtension, False) # 创建驱动实例 driver webdriver.Chrome(optionsoptions) # 应用stealth伪装 stealth(driver, languages[en-US, en], vendorGoogle Inc., platformWin32, webgl_vendorIntel Inc., rendererIntel Iris OpenGL Engine, fix_hairlineTrue) # 访问测试网站 driver.get(https://bot.sannysoft.com/) time.sleep(5) driver.quit()参数详解定制你的伪装策略 ⚙️selenium-stealth提供了丰富的参数来定制伪装效果参数名称类型默认值作用user_agentstr自动生成自定义用户代理字符串languageslist[en-US, en]浏览器语言设置vendorstrGoogle Inc.浏览器厂商信息platformstr自动检测操作系统平台webgl_vendorstrIntel Inc.WebGL厂商信息rendererstrIntel Iris OpenGL EngineWebGL渲染器fix_hairlineboolFalse修复细线渲染问题效果对比有伪装 vs 无伪装 让我们通过实际测试来看看selenium-stealth的效果。以下是使用bot.sannysoft.com进行的检测结果对比无selenium-stealth伪装的情况图中红色标记表示被检测到的自动化特征从图片中可以看到没有使用selenium-stealth时多个检测点都显示为红色表示Selenium被成功识别。使用selenium-stealth伪装的情况所有检测点都显示为绿色表示伪装成功使用selenium-stealth后所有检测点都变成了绿色网站无法识别出这是自动化浏览器。高级技巧优化伪装效果 1. 结合headless模式使用options.add_argument(--headless) # 无头模式 stealth(driver, ...)2. 自定义用户代理stealth(driver, user_agentMozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36, ...)3. 处理iframe内容窗口selenium-stealth会自动处理iframe中的contentWindow属性确保在所有上下文中都能正确伪装。实际应用场景 场景1自动化登录Google账户许多网站使用Google账户登录而Google有严格的反机器人检测。使用selenium-stealth后你可以成功自动化Google登录流程。场景2保持正常的reCAPTCHA分数reCAPTCHA v3会根据用户行为给出风险评分。selenium-stealth可以帮助你维持正常的reCAPTCHA分数避免被标记为高风险。场景3电商数据采集电商平台如Amazon、淘宝等都有严格的反爬虫机制。selenium-stealth可以让你的数据采集脚本更稳定地运行。项目架构解析 ️selenium-stealth采用模块化设计每个功能都有独立的实现核心模块selenium_stealth/wrapper.py - 主要封装逻辑JavaScript注入selenium_stealth/js/ - 包含所有伪装脚本功能模块如navigator_webdriver.py、chrome_runtime.py等注意事项和最佳实践 ⚠️仅支持Chrome/Chromium目前selenium-stealth只支持Chrome浏览器合理使用遵守目标网站的robots.txt和服务条款性能考虑伪装会增加一些初始化时间但通常可以接受更新维护定期更新selenium-stealth以应对新的检测技术总结与展望 selenium-stealth是一个强大而实用的工具它解决了Selenium自动化中最头疼的检测问题。通过巧妙修改浏览器指纹它让自动化脚本能够像真实用户一样浏览网页。无论你是进行自动化测试、数据采集还是其他需要浏览器自动化的场景selenium-stealth都能提供有效的保护。记住技术本身是中立的关键在于如何使用它。合理使用自动化工具遵守法律法规和网站政策才能让技术发挥最大的价值。现在你已经掌握了selenium-stealth的核心原理和使用方法快去试试看吧 让你的Selenium脚本变得更加隐形享受更流畅的自动化体验。【免费下载链接】selenium-stealthTrying to make python selenium more stealthy.项目地址: https://gitcode.com/gh_mirrors/se/selenium-stealth创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考