我使用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>() );