1

我需要抓取此页面(广告):https ://www.sahbinden.com/en/cars/used?date=1day&a5_min=2005&a5_max=2020

当我打开它太多次时,我会被阻止,更改 IP 也无济于事。问题是当我从我的电脑上的浏览器打开这个页面时,它工作得很好。但它似乎被 webkit 阻止了。

await page.route("**/*", (route) => {
    if (!firstReq) route.continue();
    else {
      firstReq = false;
      route.continue({
        method: method,
        postData: data,
        headers: headers,
      });
    }
  });
  let pageRes = await page.goto(url);
  await page.waitForNavigation()
  await page.unroute("**/*");
  return pageRes;

我意识到这是试图阻止机器人的网站,但有哪些做法可以避免这种情况。我尝试过等待、ip 轮换以及 useragent 轮换 - 似乎没有任何效果

4

1 回答 1

1

在他们的使用条款§4.11 中,他们声明不允许抓取他们的内容:

将“门户”的全部或任何部分用于 [...] 网站上的自动程序、机器人、蜘蛛、网络爬虫、蜘蛛、数据挖掘、数据爬虫等“屏幕抓取”软件或系统,使用自动化工具或手动流程,[...] 所有者将自行决定阻止此类使用。[...]

因此,您可以确定他们正在尽最大努力防止刮擦。

有一些方法可以解决这些块,我建议您阅读Thomas Dondorf关于无头浏览器和 reCaptcha 阻止主题的精彩回答。我也强烈建议在当前情况下考虑他的第一个选择:

选项 1:停止抓取或尝试使用官方 API。由于该页面的所有者不希望您抓取该页面,您可以简单地尊重该决定并停止抓取。也许有一个您可以使用的文档化 API。


一般来说,在无头模式和有头模式下访问网站之间,刮板识别可能存在巨大差异,使用或不使用slowMo选项。launch()

于 2020-06-27T16:40:08.463 回答