【问题标题】:Is there a solution to get puppeteer (or an alternative) running on Azure Web App Service? (403 issue )是否有让 puppeteer(或替代方案)在 Azure Web App Service 上运行的解决方案? (403期)
【发布时间】:2021-08-07 00:55:14
【问题描述】:

当我们在本地运行良好时,将我们的应用发布到 Azure Web 应用服务时,尝试使用 puppeteer js 导出 pdf 时遇到问题。

一旦 puppeteer 在访问将要导出 pdf 的页面时启动了无头浏览器,我们会得到一个文件,该文件显示一个带有 403 禁止访问消息的蓝页。

它正在导出的网站是来自我们应用托管的同一域的公共视图。此站点没有身份验证,我们认为问题与试图阻止无头浏览器访问服务器的 Azure 防火墙机制有关?

我们的环境在 Docker 容器下使用 Ubuntu 20.04。由于 Azure 基础架构中的 Docker 容器,我们无法让 puppeteer 运行,但是一旦正确安装了所有依赖项,我们就无法从同一域成功导出 pdf(我们尝试从 google.com 等外部域导出 pdf 并且工作正常)。

Azure 是否有可能阻止对无头浏览器的访问,或者这是我们从 azure 门户跳过的配置?

我们尝试以多种不同的方式启动 puppeteer 浏览器,例如无头或没有安全沙箱,或使用外部 chrome 二进制文件,如 await puppeteer.connect({ browserWSEndpoint: 'wss://chrome.browserless.io/' }),我们也尝试使用 puppeteer-extra-plugin-stealth 进行无头检测,并尝试使用 puppeteer-extra-plugin-anonymize-ua 匿名化用户代理。到目前为止,这些都没有奏效。这是我们的结果:

【问题讨论】:

  • 如果我的回复有帮助,请告诉我,谢谢。
  • 非常感谢,Doris,我在您的回答中留下了评论。

标签: azure azure-web-app-service puppeteer


【解决方案1】:

请导航到您网络应用的网络页面,查看访问限制

参考Azure App Service access restrictions链接:

当向您的应用发出请求时,会评估 FROM 地址 违反您的访问限制列表中的规则。如果 FROM 地址 位于配置有服务端点的子网中 Microsoft.Web,将源子网与虚拟子网进行比较 访问限制列表中的网络规则。如果地址不是 根据列表中的规则允许访问,服务回复 带有 HTTP 403 状态码。

【讨论】:

  • 此外,您还应该检查您的应用程序日志。
  • 嗨,@doris-lv 感谢您的回答。我们尝试将我们的网站 IP 放在访问限制部分,出于某种原因,我可以使用无头浏览器从本地服务器向我们的 azure 网站发出请求,它工作得很好,但是当我从同一台服务器上做同样的事情时它一直以 403 响应。我猜它一定是我们缺少的 Azure 配置或管理员限制。奇怪的是,它可以从外部服务器而不是同一个服务器执行此操作。
  • 顺便说一下,我们是 Azure 平台的新手,我们在日志部分看到的不是我们需要的正确信息,而是来自我们节点应用程序的错误和日志。
猜你喜欢
  • 2022-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-22
  • 1970-01-01
  • 2020-08-29
  • 2020-07-26
  • 2016-06-04
  • 1970-01-01
相关资源
最近更新 更多