Selenium C# 登录Google遇浏览器不安全及ChromeDriver启动报错求助
Selenium C# 登录Google账号解决方案
问题背景
手动导航至Google登录页时弹出报错:Couldn't sign you in, This browser or app may not be secure, Try using a different browser.
初始代码:
var driver = new ChromeDriver(); driver.Navigate().GoToUrl("https://google.com/");
优先采用C#方案解决,暂不考虑第三方undetected selenium仓库。
尝试过的代码及报错
执行以下代码时,Chrome标签页无法打开,第4行报错终止:
System.ComponentModel.Win32Exception: 'An error occurred trying to start process 'C:\Users\name\source\repos\event_submitter\event_submitter\bin\Debug\net6.0\chromedriver.exe' with working directory 'C:\Users\name\source\repos\event_submitter\event_submitter\bin\Debug\net6.0'. The system cannot find the file specified.'
代码片段:
1) var options = new ChromeOptions(); 2) options.AddArguments(@"user-data-dir=c:\Users\{username}\AppData\Local\Google\Chrome\User Data\"); 3) IWebDriver driver = new ChromeDriver(); 4) driver = new ChromeDriver(Directory.GetCurrentDirectory(), options); 5) driver.Navigate().GoToUrl("https://google.com/");
无效尝试
添加自定义User-Agent头后无效果:
options.AddArgument("--user-agent=Mozilla/5.0 (iPad; CPU OS 6_0 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10A5355d Safari/8536.25");
解决方案
1. 修复Chromedriver找不到的问题
- 确保已通过NuGet安装
Selenium.WebDriver和Selenium.WebDriver.ChromeDriver包,后者会自动匹配Chrome版本并将chromedriver部署到输出目录。 - 移除重复的ChromeDriver初始化代码,合并实例化逻辑:
var options = new ChromeOptions(); // 替换{你的用户名}为系统实际用户名,或用Environment.GetFolderPath动态获取路径 options.AddArguments(@"user-data-dir=c:\Users\{你的用户名}\AppData\Local\Google\Chrome\User Data\"); // 无需手动指定目录,NuGet包已处理路径映射 IWebDriver driver = new ChromeDriver(options); driver.Navigate().GoToUrl("https://google.com/");
2. 规避Google浏览器检测
Google会识别Selenium的自动化特征,需添加以下参数模拟真实浏览器环境:
var options = new ChromeOptions(); // 复用已登录的Chrome用户数据目录(需提前在Chrome中登录Google账号) options.AddArguments(@"user-data-dir=c:\Users\{你的用户名}\AppData\Local\Google\Chrome\User Data\"); // 关闭自动化相关提示与扩展 options.AddArguments("--disable-extensions"); options.AddArguments("--disable-infobars"); options.AddArguments("--disable-blink-features=AutomationControlled"); // 移除Selenium标识 options.AddExcludedArgument("enable-automation"); options.AddAdditionalChromeOption("useAutomationExtension", false); // 使用当前Chrome真实UA(可在chrome://version/中查看) options.AddArgument("--user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36"); IWebDriver driver = new ChromeDriver(options); // 进一步移除navigator.webdriver属性 driver.ExecuteScript(@"Object.defineProperty(navigator, 'webdriver', {get: () => undefined})"); driver.Navigate().GoToUrl("https://google.com/");
补充提示
- 使用用户数据目录时,需确保Chrome未在后台运行,否则会出现进程冲突。
- 若仍无法登录,可创建新的Chrome用户配置文件,登录Google账号后,指定该配置文件路径:
user-data-dir=c:\Users\{你的用户名}\AppData\Local\Google\Chrome\User Data\Profile 1(替换为实际新配置文件名)。
内容的提问来源于stack exchange,提问作者MegaPaul
相关产品推荐
相关产品推荐

