Selenium 是一个开源的自动化测试工具库主要用于Web应用程序的自动化测试但也可广泛用于网页爬虫、自动化表单提交、UI交互模拟等场景。它通过驱动真实浏览器如 Chrome、Firefox、Edge来执行操作支持多种编程语言Python、Java、C#、JavaScript 等其中 Python 的selenium库最为常用。核心组件包括WebDriver与浏览器通信的核心接口需配合对应浏览器的驱动程序如 chromedriver元素定位支持 ID、name、class name、CSS selector、XPath、tag name、link text 等多种方式查找元素交互操作点击、输入、下拉选择、拖拽、滚动、等待显式/隐式、截图、切换窗口/iframe 等等待机制避免因页面加载延迟导致的NoSuchElementException推荐使用WebDriverWait配合expected_conditions无头模式可通过选项如options.add_argument(--headless)启用无界面运行适合服务器部署。示例Pythonfromseleniumimportwebdriverfromselenium.webdriver.common.byimportByfromselenium.webdriver.support.uiimportWebDriverWaitfromselenium.webdriver.supportimportexpected_conditionsasECfromselenium.webdriver.chrome.optionsimportOptions optionsOptions()options.add_argument(--headless)# 无头模式driverwebdriver.Chrome(optionsoptions)try:driver.get(https://www.baidu.com)waitWebDriverWait(driver,10)search_boxwait.until(EC.presence_of_element_located((By.ID,kw)))search_box.send_keys(Selenium)search_box.submit()titlewait.until(EC.title_contains(Selenium))print(页面标题包含 Selenium,driver.title)finally:driver.quit()⚠️ 注意事项需确保 chromedriver 版本与 Chrome 浏览器版本兼容反爬网站可能检测 Selenium 特征如navigator.webdriver需通过配置规避如禁用enable-automation、设置useAutomationExtensionFalse、修改user-agent等替代方案轻量/隐蔽性更强Playwright、PuppeteerNode.js、PyppeteerPython、Requests BeautifulSoup静态页面优先。在 Selenium 中绕过常见反爬机制尤其是检测navigator.webdriver、window.chrome、user-agent等指纹特征关键在于隐藏自动化工具痕迹使其行为更接近真实用户。以下是经过验证的主流规避方法以 Chrome Python Selenium 4.x 为例✅1. 禁用navigator.webdriver检测最核心该属性默认为true是反爬最常检测的标志。通过执行 JS 覆盖并删除该属性driverwebdriver.Chrome(optionsoptions)# 在页面加载前注入脚本推荐在 get() 前执行driver.execute_cdp_cmd(Page.addScriptToEvaluateOnNewDocument,{source: Object.defineProperty(navigator, webdriver, { get: () undefined }); // 同时可覆盖其他易检测属性 window.chrome { runtime: {} }; Object.defineProperty(navigator, plugins, { get: () [1, 2, 3, 4, 5], }); Object.defineProperty(navigator, languages, { get: () [zh-CN, zh, en-US, en], }); })✅2. 配置 Chrome 选项规避自动化特征optionsOptions()options.add_argument(--disable-blink-featuresAutomationControlled)options.add_argument(--disable-infobars)options.add_argument(--disable-extensions)options.add_argument(--disable-gpu)options.add_argument(--no-sandbox)options.add_argument(--disable-dev-shm-usage)# 随机 User-Agent建议使用 fake_useragent 库options.add_argument(f--user-agentMozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36)# 关键禁用自动化扩展支持options.add_experimental_option(useAutomationExtension,False)options.add_experimental_option(excludeSwitches,[enable-automation])✅3. 模拟人工行为降低行为特征使用ActionChains模拟鼠标移动、悬停、随机延迟点击避免find_element_by_*已弃用统一用find_element(By.XXX, ...)添加显式等待 随机化等待时间如time.sleep(random.uniform(0.5, 2.0))滚动页面时使用execute_script(window.scrollTo(...) 小步渐进滚动。✅4. 其他增强隐蔽性技巧启动时设置window-size和start-maximized保持窗口一致性清除默认 Chrome 配置避免--test-type等调试参数残留使用undetected-chromedriver v2/v3自动集成上述所有绕过逻辑但需注意其维护状态与兼容性对于高防站点如极验、Cloudflare需结合打码平台或手动滑块识别Selenium 本身不处理验证码。⚠️ 注意绕过反爬不等于绕过法律或网站 robots.txt 协议请遵守《网络安全法》及目标网站的Terms of Service过度伪装可能触发更高级风控如 Canvas/FingerprintJS 检测此时需考虑 Playwright 的bypassCSP或专用反反爬方案如 mitmproxy 自定义 JS 注入。