使用 Java + Selenium 绕过 Chrome 自动化检测(window.navigator.webdrive)

2,145次阅读
没有评论

共计 2582 个字符,预计需要花费 7 分钟才能阅读完成。

使用 Java + Selenium 绕过 Chrome 自动化检测(window.navigator.webdrive)

在自动化测试或爬虫开发中,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.webdriverfalse
  • useAutomationExtension:禁用 Selenium 的自动化扩展,进一步隐藏自动化特征。
  • excludeSwitches:移除 Chrome 的自动化提示条,模拟真实用户行为。
  • webDriver.manage().window().maximize():最大化浏览器窗口,模拟用户操作习惯。
  • 等待 10 秒(Thread.sleep(10000))以确保页面加载完成,可根据需要调整。

3. 配置 ChromeDriver

确保 ChromeDriver 与 Chrome 浏览器版本匹配。下载 ChromeDriver 并放置在项目或指定路径(如 src/main/resources/chromedriver.exeC:\Users\Administrator\Desktop\chromedriver.exe)。在代码中通过 System.setProperty 指定驱动路径。

4. 注意事项

  • 版本兼容性:检查 Chrome 浏览器和 ChromeDriver 版本是否一致。不匹配可能导致启动失败。
  • 路径正确性 :确保chromedriver.exe 路径正确。如果放在项目资源目录,建议使用相对路径(如src/main/resources/)。
  • 动态等待 :当前代码使用硬编码的 10 秒等待,建议在生产环境中使用 Selenium 的WebDriverWait 实现动态等待,提升稳定性。
  • 反爬限制:某些网站可能有更复杂的检测机制(如行为分析),需结合代理、随机用户代理等进一步优化。

5. 总结

通过配置ChromeOptions,Selenium 可以有效绕过 Google 的机器人检测,模拟真实用户行为。本教程展示了从 Maven 依赖到代码实现的完整流程,适用于自动化测试、数据爬取等场景。立即尝试,优化你的 Selenium 项目!

正文完
255
admin
版权声明:本站原创文章,由 admin 于2025-04-19发表,共计2582字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(没有评论)
验证码