首页 > 解决方案 > 第一次请求后检测到 ChromeDriver

问题描述

我正在使用 Selenium ChromeDriver 导航到页面,它工作正常,但是在第二次请求时,我被 Incapsula 拦截了。

如果我每次都处理驱动程序,它仍然有效。

这是当前代码:

var chromeOptions = new ChromeOptions();
chromeOptions.AddArguments(new List<string>() { "headless" });

var chromeDriverService = ChromeDriverService.CreateDefaultService();
ChromeDriver driver = new ChromeDriver(chromeDriverService, chromeOptions);
        

下面的代码在一个循环中,它遍历了许多记录

//extract json variable from page output
ResultModel resultModel = new ResultModel();
driver = new ChromeDriver(chromeDriverService, chromeOptions);
driver.Navigate().GoToUrl($"https://www.website.ca{resultUrl}");
                
var modelString = driver.ExecuteScript("return JSON.stringify(window.the_variable);", new object[] { });

if (modelString != null)
    resultModel = JsonConvert.DeserializeObject<ResultModel>(modelString.ToString());

driver.Dispose();

所以这是可行的,但是每次处理和重新创建驱动程序都会大大减慢这个过程。

当我尝试简单地Navigate转到下一页时,在第一个请求之后,我被拦截了。

当我处理和重新创建时到底发生了什么?我可以在不实际执行此操作的情况下进行欺骗吗?

标签: c#.netselenium-chromedriver

解决方案


清除 cookie 似乎有所帮助:

driver.ExecuteChromeCommand("Network.clearBrowserCookies", new Dictionary<string, object>() );

推荐阅读