【问题标题】:price comparison website - crawler比价网站——爬虫
【发布时间】:2012-08-24 14:39:25
【问题描述】:

我有一个价格比较网站。 您可以点击优惠链接,我会从商店获得 1 美元。

问题是:爬虫爬取整个网站。所以他们“点击链接”。 我怎样才能防止他们点击? Javascript 是一个糟糕的解决方案。

谢谢!

【问题讨论】:

  • 如何创建一些模式并使用正则表达式检查以避免“点击”它们
  • 理论上……但并不是所有的爬虫都知道这个“规则”。
  • 你的意思是你自己的爬虫来爬取你的目标网站还是搜索引擎机器人?
  • 您可以检查请求来自的用户代理,如果用户代理是已知浏览器,则仅处理后端。
  • @VitoNordloh 如果爬虫忽略了一些事情,你无能为力。你提出了正确的规则,他们打破了它们。解决这个问题的唯一方法是让您[可能手动]检测它们并阻止它们。

标签: php javascript web-crawler


【解决方案1】:

我一直在想这个错误的方式。

我同意@yttriuszzerbus 上面所说的一切 - 将 robots.txt 添加到文件中,将“rel=nofollow”添加到链接,并阻止您知道的用户代理。

因此,如果您现在有人试图点击链接,那么它要么是活人,要么是您不想点击的行为不端的机器人。

那么,做一些奇怪的事情来创建商店网站的链接怎么样?通常,您永远不会这样做,因为它会使您的网站无法被索引。但这不是问题——所有表现良好的机器人都不会索引这些链接,因为它们会遵守 robots.txt 文件。

我正在考虑类似没有 <a href= 标记的东西 - 相反,生成链接的文本,使用样式表为字体添加下划线,因此它看起来像普通用户的链接,然后有一个 javascript onClick 函数,当用户点击它时重定向用户。机器人不会将其视为链接,用户也不会注意到任何事情。

【讨论】:

  • 一些机器人可能会在文本中搜索未链接的 URL 以获取参考/提及
【解决方案2】:

你可以:

  1. 使用“rel=nofollow”指示抓取工具不要跟踪您的链接。

  2. 阻止某些用户代理字符串

  3. 使用 robots.txt 排除您网站的传播。

很遗憾,以上都不能排除行为不端的爬虫。真正阻止爬虫的唯一解决方案是某种 JavaScript 链接或验证码。

【讨论】:

    【解决方案3】:

    我也有类似的项目。 我的问题只能通过阻止某些用户代理字符串来解决。

    另一个问题是我不知道每个“坏”用户代理的,所以当一个新的爬虫进入该站点时,我将它添加到黑名单并追溯从统计中删除它的访问。

    "rel=nofollow" 和 robots.txt 对我根本不起作用。

    【讨论】: