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到下一页时,在第一个请求之后,我会被拦截。

当我处理和重建时,到底发生了什么?我能在不做这件事的情况下恶搞一下吗?

清除cookie似乎有所帮助:

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

最新更新