共计 2582 个字符,预计需要花费 7 分钟才能阅读完成。
在自动化测试或爬虫开发中,Google 等网站可能会通过检测 window.navigator.webdriver
等特征识别 Selenium 驱动的浏览器。本文将展示如何通过 Selenium 和 ChromeOptions 配置启动 Chrome 浏览器,绕过这些反爬机制,实现更自然的浏览器行为。以下是完整的配置和代码实现。
1. 配置 Maven 依赖
在 Maven 项目中,添加 Selenium Java 依赖。编辑pom.xml
,加入以下内容:
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>3.141.59</version>
</dependency>
注意:确保 Selenium 版本与你的 Chrome 浏览器和 ChromeDriver 版本兼容。建议从 ChromeDriver 官网 下载匹配的驱动。
2. 配置 Selenium 代码
以下 Java 代码通过设置 ChromeOptions
绕过 Google 的机器人检测,并访问指定 URL(以拼多多登录页为例)。代码包括禁用自动化特征、移除控制提示等关键配置。
package com.itheima.test;
import org.openqa.selenium org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;
import java.util.Collections;
/**
* evan_ 2022
* 设置 Chrome.driver,Selenium 测试,绕过机器人检测
*/
public class SeleniumTest {public static void main(String[] args) throws Exception {
// 设置 ChromeDriver 路径
System.setProperty("webdriver.chrome.driver", "C:\\Users\\Administrator\\Desktop\\chromedriver.exe");
// 目标 URL
String webUrl = "https://mms.pinduoduo.com/login/";
// 启动浏览器并访问 URL
WebDriver webDriver = run(webUrl);
// 等待页面加载(10 秒)Thread.sleep(10000);
// 可选:关闭浏览器
// webDriver.quit();}
// 启动浏览器并配置反检测
private static WebDriver run(String webUrl) {
// 设置 ChromeDriver 路径(资源目录
System.setProperty("webdriver.chrome.driver", "src/main/resources/chromedriver.exe");
ChromeOptions options = new ChromeOptions();
// 禁用自动化检测
options.addArguments("--disable-blink-features=AutomationControlled");
// 移除自动化扩展
options.setExperimentalOption("useAutomationExtension", false);
// 移除“Chrome 正受到自动化测试软件控制”提示
options.setExperimentalOption("excludeSwitches", Collections.singletonList("enable-automation"));
// 初始化 WebDriver
WebDriver webDriver = new ChromeDriver(options);
// 访问 URL
webDriver.get(webUrl);
// 最大化窗口
webDriver.manage().window().maximize();
return webDriver;
}
}
代码说明:
--disable-blink-features=AutomationControlled
:禁用 Chrome v88+ 的自动化检测,设置window.navigator.webdriver
为false
。useAutomationExtension
:禁用 Selenium 的自动化扩展,进一步隐藏自动化特征。excludeSwitches
:移除 Chrome 的自动化提示条,模拟真实用户行为。webDriver.manage().window().maximize()
:最大化浏览器窗口,模拟用户操作习惯。- 等待 10 秒(
Thread.sleep(10000)
)以确保页面加载完成,可根据需要调整。
3. 配置 ChromeDriver
确保 ChromeDriver 与 Chrome 浏览器版本匹配。下载 ChromeDriver 并放置在项目或指定路径(如 src/main/resources/chromedriver.exe
或C:\Users\Administrator\Desktop\chromedriver.exe
)。在代码中通过 System.setProperty
指定驱动路径。
4. 注意事项
- 版本兼容性:检查 Chrome 浏览器和 ChromeDriver 版本是否一致。不匹配可能导致启动失败。
- 路径正确性 :确保
chromedriver.exe
路径正确。如果放在项目资源目录,建议使用相对路径(如src/main/resources/
)。 - 动态等待 :当前代码使用硬编码的 10 秒等待,建议在生产环境中使用 Selenium 的
WebDriverWait
实现动态等待,提升稳定性。 - 反爬限制:某些网站可能有更复杂的检测机制(如行为分析),需结合代理、随机用户代理等进一步优化。
5. 总结
通过配置ChromeOptions
,Selenium 可以有效绕过 Google 的机器人检测,模拟真实用户行为。本教程展示了从 Maven 依赖到代码实现的完整流程,适用于自动化测试、数据爬取等场景。立即尝试,优化你的 Selenium 项目!