java - 硒网络驱动程序。网站检测到 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})");
但它也不起作用。
如何解决这个问题?
解决方案
推荐阅读
- python - 分层访问字典
- textures - 如何计算网格的厚度
- python - 损失字典中的未知条目:仅预期以下键 ['conv1d_4', 'conv1d_4']
- javascript - 如何导出 NPM 模块以在没有包名的情况下使用它?
- c# - 努力使用我的语音识别应用程序 c# 添加后续功能
- typescript - 使用 AWS CDK 将现有角色附加到 AWS Lambda
- android - 操作系统(iOS、Android、macOS、Windows)可以读取应用程序上传的数据类型(即使加密)
- reactjs - 当没有空间显示弹出框时如何平移 google-map-react
- python - Python 的 nonlocal 关键字 - 这是一个好习惯吗?
- android - 如何设置 ImageButton 的可见性