首页 > 解决方案 > 使用 Puppeteer 抓取 AWS 在本地运行,但在 Heroku 上失败

问题描述

我知道这听起来很像 Stackoverflow 中的其他问题,请耐心等待,不是(我不能说)

我有一个用于抓取亚马逊公共页面的抓取应用程序(使用 Puppeteer)。它工作得很好,我已经通过设置调试它headless: false并且我看到它工作,它给了我预期的结果。

同一个应用程序在 Heroku 上失败了,但问题不在于启动或使用 Puppeteer(我有几个迹象),而可能是因为我被识别为机器人。返回的错误是: waiting for selector `#link_continue input` failed: timeout 30000ms exceeded 重要的是要说该错误是一个通用的 Puppeteer 错误,表明我正在等待的选择器只是没有出现在页面上。我知道它应该是我导航到的第一页上的选择器,并且它在本地工作(如前所述) - 如果页面加载,选择器始终存在。

在设置 User-Agent 标头之前尝试在本地计算机上运行抓取时遇到了完全相同的错误。但是当时我可以使用,headless:false所以我在我的眼中看到由于他们页面上的非法操作(类似机器人的操作)而被拒绝,所以我被重定向到一个不包含此选择器的错误页面.

由于这个原因,我怀疑它认出我是一个机器人,但我不知道如何调试它,它让我发疯。

现在,如果您想重现问题:您需要在此站点上等待提到的选择器: https ://sellercentral.amazon.com/hz/fba/profitabilitycalculator/index 然后将其部署到 Heroku 并尝试运行它可能 2-3 次

** 两个问题:**

  1. 我该如何从这里开始,我 99.9% 确定这与我之前遇到的问题相同,但我无法验证......有什么建议吗?
  2. 鉴于这实际上是问题所在,任何人都可以建议一个易于使用/部署的主机,它还允许简单的 VPN 配置?我认为除非您拥有企业帐户,否则 Heroku 不会让您这样做

谢谢

标签: node.jsherokuweb-scrapingpuppeteervpn

解决方案


推荐阅读