c# - 第一次请求后检测到 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>() );
推荐阅读
- ajax - 关于wordpress主题的JQuery Ajax错误请求
- python - 想要将字典列表转换为python中的列表列
- python - 无法在 Python 中发布 zip 文件。Unicode 解码错误
- php - Laravel excel验证两列的组合不重复
- spring - 使用 Redis 的 SSE 端点的奇怪行为
- java - 为什么这个方法第一次出现后不继续查找索引?
- c# - 创建一个使用 Azure Functions(HTTP 触发器)将图像发布到 Azure Blob 容器并使用 SAS 返回同一图像的 URI 的 Web 服务
- wordpress - Wordpress 分页功能不起作用(什么都不显示)
- c++ - 使用 OpenMP 在 C、C++ 中并行化嵌套 for 循环的几种方法之间的区别
- javascript - 从异步函数获取数据的正确方法是什么?