【问题标题】:How to hide an aggressive crawler?如何隐藏攻击性爬虫?
【发布时间】:2012-12-25 12:45:22
【问题描述】:

我打算抓取特定网站。我有 3000 个特定页面,我想每隔几个月抓取一次。我创建了一个爬虫,但我不想被禁止访问该网站。

有没有办法降低爬虫的攻击性或以某种方式隐藏它,以免被“注意到”或给我正在爬取的提供商/网站造成问题?

延迟是可能的,但如果我将其设置为每页随机 10-30 秒延迟,那么它将永远持续下去。

有任何提示或指南来制作可接受的爬虫吗?

【问题讨论】:

  • 无论如何你都应该尊重robots.txt
  • 也许下一个问题是“我如何在我的网站上检测到不需要的攻击性爬虫?”
  • 3000 * 30 是 90000 秒,即 25 小时。除非您想比每隔一周更多地抓取该网站,否则几乎不会永远......
  • 在您的特殊情况下,您能与相关网站讨论这个问题吗?有些网站对此很好,有些则不然。还要检查他们是否有可以合法获取其内容的 API。此外,如果您可以在此处提供有关该网站的更具体的详细信息(如果不是实际的网站名称),那么这里的人们将提供一个关于它是否是可接受的爬虫行为的看法(通常只是为了显示广告而获取其他人的内容是不可接受的,例如)。
  • @EmilH:你说得对,我忘了计算小时数 - 因此我得到了大约 60 天 ;) 24 小时是可行的......现在我只需要制作一个 ajax 脚本或其他东西可以在接下来的几天或几周内运行的浏览器 - thx

标签: php web-crawler


【解决方案1】:

另一种解决方案是使用 PROXY 服务器提供商例如 this one)并在每个 X 个请求时轮换 IP 地址。这个特定的提供者有一个 API 来动态检索 IP。如果谈到 PHPcURL 可以很容易地用于此目的。

这种技术在大多数情况下都有效,但需要更多的计划和调整。无论如何,您将面临一些限制。它可以是时间问题,也可以是每个时期的请求数量,这与时间问题几乎相同。或者您将需要更多的代理服务器来满足您的时间要求。

并仔细阅读供应商的TOS。该特定提供商不允许您被 Google 和其他一些网站禁止。否则您的帐户也将被禁止。

【讨论】:

    【解决方案2】:

    “可接受”是一个相对术语。一些网站所有者拥有足够的处理能力和带宽,他们认为每小时扫描 3000 页并不是“激进的”。一些网站所有者为带宽或处理能力而苦苦挣扎,无法跟上每天 3000 次的页面阅读量。

    如果您想阅读页面并获取当前内容,那么您必须阅读这些页面。没有捷径可走。

    【讨论】:

      猜你喜欢
      • 2011-11-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-07
      • 1970-01-01
      • 2016-03-22
      • 2010-09-11
      • 2016-10-28
      相关资源
      最近更新 更多