Chrome在Azure功能中无法运行:尝试以其访问权限禁止的方式访问套接字

时间:2019-03-05 09:17:07

标签: azure selenium selenium-chromedriver azure-functions chromium

我写了一个使用Selenium框架进行爬网的网络机器人。安装了ChromeDriver 72.0.3626.69,还下载了Chromium 72.0.3626.121。该应用使用此包含的Chromium二进制文件(而不是本地安装的Chrome二进制文件)初始化ChromeDriver。所有这些都可以在我的本地计算机上完美运行。

我一直在尝试将应用程序移植到Azure Functions。我编写了一个函数,对其进行了测试,它在本地运行良好。但是,一旦我将其发布到Azure Functions,它就会由于大约182个类型的错误而失败:

  

试图以一种禁止其访问的方式访问套接字   访问权限

我知道发生这种情况是由于超出了Azure沙箱的TCP连接限制,但是这里唯一的尝试是创建一个ChromeDriver实例(甚至还没有导航!)

这是Azure Function调用日志的屏幕截图。

enter image description here

该错误连续出现182次,基本上只是尝试创建一个浏览器实例(确切地说是ChromeDriver实例-不确定是由Chromium还是ChromeDriver引起的)。

问题:有没有人在启动ChromeDriver / Chromium时创建太多(显然过多)的连接?还有什么可能有助于避免这种情况。

如果有帮助,基本上这是一段代码,最后一行崩溃了:

ChromeOptions options = new ChromeOptions();
options.BinaryLocation = this.chromePath;
options.AddArgument("no-sandbox");
options.AddArgument("disable-infobars");
options.AddArgument("--disable-extensions");
if (this.headlessMode)
{
    options.AddArgument("headless");
}
options.AddUserProfilePreference("profile.default_content_setting_values.images", 2);

Log.LogInformation("Chrome options compiled. Creating ChromeDriverService...");

var driverService = ChromeDriverService.CreateDefaultService(this.driverPath);
driver = new ChromeDriver(driverService, options, timeout);

0 个答案:

没有答案