爬网时如何成为好公民?


83

我将要开发一些功能,这些功能将爬网各种公共网站并处理/聚合它们上的数据。没有什么比寻找电子邮件地址更危险的了-实际上,这实际上可能会为他们的网站带来更多流量。但是我离题了。

除了兑现外robots.txt,我是否应该遵循任何书面或不成文的规则或准则,以便(a)避免表现为恶意并可能被禁止,以及(b)对网站所有者/网站管理员没有任何问题?

我可以想到的一些示例可能无关紧要:

  • 并行请求数
  • 两次请求之间的时间
  • 两次爬网之间的时间
  • 避免潜在的破坏性联系(不想成为“ 末日蜘蛛” -但谁知道这是否实际)

但是,那实际上只是吐痰。有没有经过实践检验的智慧,可以广泛地适用于打算编写或利用蜘蛛的任何人?


1
尽管下面的回答为如何尊重内容提供了一个很好的答案,但是请记住,一旦您对内容进行了爬取,就可以接受使用。全部或部分重新发布它可能会侵犯所有者的版权。
加文·科茨

Answers:


85

除了遵守robots.txt之外,还应遵守nofollow以及noindex<meta>元素和链接中:

  • 许多人认为robots.txt 并不是阻止索引编制的正确方法,因此,由于这种观点,他们指示许多网站所有者依靠该<meta name="robots" content="noindex">标签告诉网络抓取工具不要对网页进行索引编制。

  • 如果您试图绘制网站之间的连接图(类似于PageRank),则(和<meta name="robots" content="nofollow">)表示源站点对目标站点的信任不足,无法给予适当的认可。因此,尽管您可以为目标站点建立索引,但不应存储两个站点之间的关系。

SEO不仅仅是一门艺术,还不是一门真正的科学,它是由很多知道自己在做什么的人和很多阅读了自己正在做的人的执行摘要的人所实践的。您将遇到一些问题,由于某些人偷听或在SEOmoz上的博客文章中阅读了一些规则,而这些规则可能被正确解释,因此您可能会因其他规则完全可以接受的事情而被站点阻止。

由于这种人为因素,除非您是Google,Microsoft或Yahoo !,否则除非另有证明,否则您被认为是恶意的。您需要格外小心,以使其对网站所有者没有威胁,并按照希望潜在的恶意(但希望是良性)爬网程序采取的行动:

  • 一旦检测到您被阻止,就停止抓取网站:您知道工作,节流,超时等的页面上的403/401。
  • 避免在相对较短的时间内进行详尽的爬网:对网站的一部分进行爬网,然后稍后(几天后)返回以对另一部分进行爬网。不要发出并行请求。
  • 避免搜寻潜在的敏感区域:/admin/例如其中包含的URL 。

即使这样,除非您采取UA欺骗或故意掩盖抓取模式等黑帽子技术,否则这仍将是一场艰苦的战斗:出于上述相同原因,许多网站所有者会视线挡住未知的抓取工具,而不是采取行动有人不尝试“入侵其网站”的机会。为很多失败做准备。

要解决未知爬虫将要拥有的负面形象,您可以做的一件事是在用户代理字符串中明确说明您是谁:

Aarobot Crawler 0.9 created by John Doe. See http://example.com/aarobot.html for more information.

此处http://example.com/aarobot.html说明了您要完成的任务以及为什么您不是威胁。该页面应包含以下内容:

  • 有关如何直接与您联系的信息
  • 有关搜寻器收集的内容以及收集原因的信息
  • 有关如何退出和删除所有收集的数据的信息

最后一点很关键:良好的退出选择就像“退款保证”,并且获得不合理的商誉。它应该是人道的:一个简单的步骤(一个电子邮件地址,或者理想情况下是一个表单)并且全面(不应该有任何“陷阱”:退出意味着您毫无例外地停止爬网)。


18
巨大的+1,用于在用户代理中提供明确的信息。我曾经仔细研究过Web服务器的日志,以找出是谁在搜寻大型网站,而试图找出谁在运行所有晦涩的蜘蛛,这并不是一件有趣的事情。
Carson63000

4
将URL放在表单中是很常见的(+http://example.com/aarobot.html)。我不知道此+标志的目的是什么,但我经常看到它。Web嗅探器可以做到这一点,其他许多人也可以做到。
TRiG 2011年

这是非常有用的信息,但我对一件事感到困惑:您提到的rel="noindex"好像它是一个<a>属性,但是链接到的页面将其描述为<meta>标记content属性的一部分。两者都是,还是答案中的错字?
亚伦诺特,2011年

1
“ SEO比真正的科学更像是一门艺术”-并非如此。如果您是统计程序员,那么SEO并不是一种艺术,而是一种数学识别技能。Web数据分析行业对编程熟练的数学专业毕业生或数学熟练的程序员有很高的要求。
שינתיאאבישגנת


32

尽管这不能解决您的所有问题,但我相信这将对您和您爬网的站点有所帮助。

与用于在不引起注意的情况下强行使用网站的技术类似,如果您有足够大的站点池需要爬网,请先爬网所有其他站点的下一页,然后再爬网该页面的下一页。好的,现代服务器将允许HTTP连接重用,因此您可能想做更多的事情来最大程度地减少开销,但是这个想法仍然存在。在移至下一个站点之前,请勿使一个站点疲惫不堪。分享爱。

对于一天结束时的您而言,您仍然可以抓取同样多的页面,但是单个站点上的平均带宽使用量将低得多。

如果您想避免成为厄运的蛛丝马迹,则没有确定有效的方法。如果有人想坚持豆了自己的鼻子,他们会并可能在你能方式做到这一点从来没有预测。话虽如此,如果您不介意偶尔丢失有效页面,请为链接添加一个黑名单,以防止您关注该页面。例如:

  • 删除
  • 去掉
  • 更新资料
  • 编辑
  • 修改

并非万无一失,但有时您无法阻止人们学习困难的方法;)


3
关于“分享爱”的好建议-完全没有考虑,尽管从回顾来看似乎很明显。
亚伦诺特,2011年

如果您提到robots.txt,您的答案将是几乎完美的;)
deadalnix

7
@deadalnix,但robots.txt已在问题中提及,可以认为是假定的。
TRiG 2011年

20

我的一点建议是,听听正在抓取的网站告诉您的内容,并根据情况动态更改抓取。

  • 网站速度慢吗?爬行速度较慢,因此您无需DDOS。快吗 那么,再爬一点!

  • 网站出错了吗?少爬网,这样您就不必强调已经受到威胁的网站。使用成倍增加的重试时间,以便在站点出现错误的时间越长,重试次数就越少。但请记住,请稍后再试,这样您就可以看到由于特定URL路径长达一周的错误而导致丢失的任何内容。

  • 得到很多404?(请记住,我们花哨的404页也要花费服务器时间!)请避免现在再爬网该路径的URL,因为可能缺少所有内容;如果file001.html- file005.html不在那里,我敢打赌您file999.html也不会向甜甜圈投钱!或者,降低您在该路径中检索任何内容的时间百分比。

我认为这是许多幼稚的爬虫犯了严重错误的地方,因为他们采取了一种机械手策略,无论从目标站点返回的信号如何,它们都会执行相同的操作。

智能搜寻器会对它所接触的目标站点做出反应


19

其他人提到了一些口头禅,但让我补充一些。

注意文件类型和大小。不要拉这些巨大的二进制文件。

针对某些典型的Web服务器“目录列表”页面进行优化。特别是,它们允许对大小,日期,名称,权限等进行排序。不要将每种排序方法都视为进行爬网的单独根。

要求gzip(即时压缩)。

限制深度或检测递归(或同时检测两者)。

限制页面大小。某些页面实施了tarpits来阻止电子邮件拦截机器人。这是一个以蜗牛速度加载的页面,大小为TB。

不要索引404页。拥有最大索引的引擎会这样做,并得到当之无愧的仇恨作为交换。

这可能很棘手,但是请尝试检测负载平衡场。如果v329.host.com/pages/article.php?99999返回的内容与v132.host.com/pages/article.php?99999相同,请不要从v001.host.com直到v999刮取服务器的完整列表。 host.com


重要的角落案例!
M. Dudley

如今,您通常可以通过检查规范标签来检测故意重复的内容(例如,负载均衡场)。
布赖恩

4

我只添加一件事。

版权及其他法律问题:我知道您将其写为公共网站,因此可能没有任何版权,但是存储数据可能还有其他法律问题。

当然,这取决于您要存储哪个国家的数据(以及它们存储的位置)。例如,《美国爱国者法案》与欧盟《数据保护指令》之间的问题。问题的执行摘要是,美国公司必须将其数据提供给例如。如果被问到FBI,而没有将其告知用户,则Data Protection Directive指出必须将此信息告知用户。Se http://www.itworld.com/government/179977/eu-upset-microsoft-warning-about-us-access-eu-cloud


2
“我知道您写的是公共网站,因此可能没有任何版权”。互联网上的每个网站都是公开的,每个网站都是版权的,除非另有明确说明。
加文·科茨

3

用您的名字称呼您的网络爬虫或蜘蛛网。这个很重要。分析引擎之类的东西正在寻找那些可以将您当作蜘蛛的人。;)

我看到的完成方式是通过请求标头User-Agent


我以为通常是“机器人”或“机器人”-我知道Google就是Googlebot。
2011年

好点子。只要可以区分。因此,可能会有关于这些布局的文章。
jcolebrand

2
  • 必要时保留cookie,以防止网站创建不必要的会话。
  • 实现链接解析行为,最接近浏览器之一。由于漫游器要求缺少文件,因此我们的实时网站报告了很多“ 404”。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.