首页 > 解决方案 > 硒网络驱动程序。网站检测到 WebDriver。如何解决这个问题?

问题描述

我需要为某些网站隐藏有关硒的信息。

我用谷歌搜索了这个问题并找到了很多答案,但所有这些答案都不起作用。

Selenium Java 4.0.0-beta-4/3.141.59。Java 11. Chrome 驱动程序 92.0.4515.107。

我的代码:

ChromeOptions options = new ChromeOptions();

options.addArguments("--disable-extensions");
options.addArguments("--noerrordialogs", "--disable-features=InfiniteSessionRestore", "--disable-blink-features", "--disable-blink-features=AutomationControlled");
options.addArguments("--user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.159 Safari/537.36");

Map<String, Object> prefs = new HashMap<>();
prefs.put("exit_type", "none");
prefs.put("exited_cleanly", "false");

options.setExperimentalOption("prefs", prefs);

options.setExperimentalOption("excludeSwitches", List.of("enable-automation"));
options.setExperimentalOption("useAutomationExtension", false);

System.setProperty("webdriver.chrome.verboseLogging", "true");
System.setProperty("webdriver.chrome.logfile", String.format("%s\\chromedriver.log", appBasePath));

options.setCapability(CapabilityType.LOGGING_PREFS, buildLoggingPreferences());

options.addArguments("start-maximized", String.format("user-data-dir=%s\\chrome\\", appBasePath));

ChromeDriverService chromeDriverService = new ChromeDriverService.Builder()
        .usingAnyFreePort()
        .usingDriverExecutable(googleChromeManager.getGoogleChromeDriverFile())
        .build();

我试过这个:

driver.executeScript("Object.defineProperty(navigator, 'webdriver', {get: () => undefined})");

但它也不起作用。

如何解决这个问题?

标签: javaseleniumselenium-chromedriver

解决方案


推荐阅读