我使用的是带有Selenium 4.1的ASP.NET Core 6。当我定期运行代码时,它运行良好,但当我将其设置为无头时,我认为任何选项都不起作用,包括Guest、inPrivate或隐姓埋名模式,因为我不断收到2FA提示,就好像它是用我缓存的凭据登录一样。
以下是我使用EdgeDriver:的选项
var options = new EdgeOptions();
options.AddArgument("-guest");
options.AddArgument("disable-gpu");
options.AddArgument("headless");
using (var driver = new EdgeDriver(DRIVERS_PATH, options))
{
driver.Manage().Window.Maximize();
driver.Manage().Cookies.DeleteAllCookies();
var wait = new WebDriverWait(driver, TimeSpan.FromSeconds(45));
driver.Navigate().GoToUrl(recordUrl);
// get a 2FA prompt here
}
或者在使用ChromeOptions 时
var options = new ChromeOptions();
options.AddArguments("--headless");
options.AddArguments("--window-size=1920,1080");
options.AddArguments("--disable-gpu");
options.AddArguments("--disable-extensions");
options.AddArguments("--proxy-server='direct://'");
options.AddArguments("--proxy-bypass-list=*");
options.AddArguments("--start-maximized");
options.AddArguments("--no-first-run");
options.AddArguments("--no-default-browser-check");
options.AddArguments("--ignore-certificate-errors");
options.AddArguments("--test-type");
options.AddArguments("--user-agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36"");
//options.AddArguments("--guest");
options.AddArguments("--incognito");
再说一次,如果我删除了无头选项,那么它会很好地工作,但对于无头,我认为没有任何选项。当我截图页面时:
var screenshot = driver.GetScreenshot();
screenshot.SaveAsFile($"{filePath}.jpg", ScreenshotImageFormat.Jpeg);
它显示了一条消息,说它给我发了一个2FA通知,然后我在手机上收到了通知。如果我处于隐姓埋名模式,它为什么会这样做?
感谢您的帮助。谢谢
我在无头镀铬和地理设置方面也遇到了类似的问题。
我发现在headless中,不支持自动接受地理位置(headless会删除一些东西(
Headless是Chrome 的精简版
参见参考资料:https://github.com/SeleniumHQ/selenium/issues/11542#issuecomment-1380947933