如何使用.htaccess调整阻止糟糕的网站机器人和蜘蛛

htaccess

机器人在网络上非常普遍。实际上,截至2012年,僵尸网络流量超过了网络上的人流量。那就对了; 平均而言,您网站上超过50%的点击量来自机器人而非人类。

机器人具有广泛的用途,并非所有这些都是坏的。有些机器人,比如Google和Bing使用的机器人,会对您的网页进行抓取和索引。如果您要阻止Googlebot,您的网站最终将从其索引中删除; 他们无法再访问它,因此您的内容不会显示。

其他机器人有更多的利基用途。有些机器人仅用于抓取电子商务网站,寻找交易。他们交叉引用他们可以找到的每个电子商店与给定的产品,因此家庭网站可以显示在各种商店的产品价格。一些网站将使用这些来确保它们位于列表的首位,这就是为什么许多亚马逊上市每天会逐渐下降几美分的原因; 竞争卖家通过一次调整一两便士的价格来互相推销。

其他机器人不那么温和。垃圾邮件机器人将搜索博客,寻找他们知道如何利用的各种评论系统。没有身份验证或验证码的评论可以由机器人填写,垃圾评论可以留给垃圾网站建立链接,捕获无知网络用户的点击,甚至炸毁负面搜索引擎优化的其他良性网站。

存在黑客机器人抓取网站查看网站基础设施。他们测试域以查找常见的/admin.htm样式URL,查找使用默认CMS且未更改用户名或密码等内容的网站。他们搜索可以访问和利用的易受攻击的网站,这些网站是低悬的水果。他们可能会收集管理员或用户信息,或只是将URL报告给黑客机器人的所有者。它们可能被编程为简单地删除一个站点并用它们自己的内容替换它。

坏与好机器人恶意机器人源于计算机病毒。他们接管用户的计算机,无论是公开还是在后台,都使用该计算机的互联网访问功能来执行病毒所有者想要做的任何事情。通常,这只是用于在DDoS攻击中锤击给定URL,旨在取消网站,或者强调服务器足以让黑客通过代码中的错误进入。

刮板机器人也是恶意的; 他们就像搜索引擎机器人一样,抓内容。但是,它们不是将其添加到搜索索引中,而是简单地复制内容批发。内容,脚本,媒体; 它全部下载并放置在垃圾邮件发送者的服务器上,因此他们可以使用它来旋转 – 或者只是粘贴批发 – 其垃圾邮件站点的内容。这对他们来说都是一次性的,只是他们收获的资源,当它不再有用时就会掉落。

显然,这些机器人有很多问题。然而,除了他们的目的,他们还有另一个副作用; 服务器压力。机器人可能能够以简化的轻量级方式访问您的网站 – 搜索引擎机器人经常这样做 – 但即使他们这样做,他们仍然访问您的网站。他们仍然下载内容,从您的服务器发出请求,并且通常会耗尽资源。

在许多情况下,这甚至可以打倒一个网站。我已经看到有关网站仅由谷歌单独敲打并被打倒的报道,尽管谷歌通常很聪明,可以避免这样做。然而,随着网络上的机器人流量的纯粹压力,有很多事情需要应对。

这就更不用说后来出现的数据分析问题了。消除来自Google Analytics的机器人流量是一个巨大的问题,因此您可以分析的信息实际上反映了人的使用情况,而不是软件使用情况。

阻止机器人
有两种方法可以阻止机器人试图访问您的网站。一个是通过robots.txt文件,另一个是通过.htaccess文件。

正如你可能从这篇文章的标题中猜到的那样,我将专注于第二篇文章。首先,让我们来谈谈robots.txt。什么是robots.txt文件?

robots.txt文件是放在服务器根目录中的文本文件。其目的是为想要访问您网站的机器人提供指导。您可以使用它来阻止对特定机器人或所有机器人的机器人访问。那么为什么不使用呢?

机器人Txt示例
robots.txt的问题在于它为机器人提供了指导。如果机器人选择不尊重它 – 我的意思是,如果机器人的创建者将其编程为忽略robots.txt – 你就无法做任何事情。这就像打开你的大门一样,但张贴的标语上写着“劫匪远离。”如果强盗选择忽略标志,没有什么能阻止他们走过大门。

.htaccess文件是Apache Web服务器软件使用的配置文件。它更像是前门的保安,积极阻止潜在的劫匪。除非在这种情况下,保安人员有能力看到试图进入的人是否来自RobberHome,穿着一件上面写着“我是强盗”的衬衫,或以其他方式表明身份。

这意味着.htaccess文件可以主动阻止大多数机器人,但不是所有机器人。特别是,僵尸网络机器人 – 来自普通用户的从属计算机 – 通常不会被默认阻止。这是因为那些是常规用户计算机,使用常规用户软件。如果你阻止他们,你就会阻止人类。但是对于大多数其他机器人来说,.htaccess文件是理想的。

Htaccess文件示例
请注意,只有在Web服务器运行Apache时才能使用.htaccess文件。如果您正在使用Nginx,Lighttpd或其他一些小众服务器架构,那么您必须找到该软件阻止机器人的方式。

识别要阻止的机器人
首先,一句警告。通过.htaccess文件阻止机器人时要非常小心。一个错字,你最终可以阻止整个互联网。显然你不希望这样。

您要做的第一件事是备份当前的.htaccess文件。如果出现阻止您不想阻止的流量的错误,您可以恢复旧文件以还原更改,直到您可以找出问题所在。

Htaccess备份
您要做的第二件事是弄清楚如何找到自己的访问日志。使用Apache,您需要使用Linux / Unix命令来访问日志文件。您可以在本指南中阅读有关如何执行此操作的信息。

使用该指南,您将生成一个日志文件,其中显示了服务器访问的详细信息。它将显示用于访问服务器的IP地址,客户端计算机的标识(如果可用),机器的用户ID(如果使用身份验证),请求的时间,是否由HTTP访问,状态代码为返回的服务器,以及请求的对象的大小。这可能是一个巨大的文件。

日志文件将包含所有常规用户的数据以及所有机器人访问权限。一些机器人,如Google机器人,将通过其用户代理信息识别自己。坏机器人有时会识别自己,但通常只有某些特征将它们标记为非人类。他们可能正在使用通常已被利用的浏览器的过时版本。它们可能来自已知的垃圾邮件地址或域。

本指南非常适合帮助您确定哪些日志条目是坏机器人,哪些是好机器人或好用户。

通常,如果机器人每月只访问您的网站一次,您不一定需要担心它。如果你愿意,你可以阻止它,但它不一定能节省你的时间或精力。您的主要目标应该是阻止持续访问的机器人,并对服务器的性能产生负面影响。

在按IP地址或IP范围阻止时要非常小心。很容易看到很多机器人来自168. *。*。*,星星中有各种不同的数字,并认为“我可以阻止所有这些!阻止整个/ 8范围!“问题是,IPv4中的/ 8范围是16,777,216个不同的IP地址,其中许多可能被合法用户使用。您可以使用一个过于宽泛的规则阻止大量合法流量。

.htaccess文件中的大多数条目都不会通过IP地址阻止,只是因为IP地址太容易通过代理进行更改。大多数将使用用户代理名称,来自无需更改的机器人的特定重复IP地址,或通常用于托管spambots或黑客工具的域。

使用.htaccess文件
我们将通过.htaccess文件使用三种方法来阻止僵尸程序。第一种是最常见的,使用机器人的用户代理来阻止它。这通常是可靠的,因为普通用户不会意外地拥有僵尸用户代理。

在.htaccess文件中,首先需要一行“RewriteEngine on”。这一行确保任何后续的重写行都可以工作,而不是被解析为注释。

接下来,您可以添加“RewriteCond%{HTTP_USER_AGENT} \”作为自己的行。这使得基于用户代理的重写条件成为可能。你有两个选择; 您可以在这一行之后添加大量不同的用户代理,也可以添加一个用户代理,然后再次添加该行。例如:

RewriteCond%{HTTP_USER_AGENT} \

12soso | \

192 \ .comagent | \

1noonbot | \

1on1searchbot | \

3de \ _search2 | \ [NC,OR]

要么:

RewriteCond%{HTTP_USER_AGENT} ^ [Ww] eb [Bb] andit [NC,OR]

RewriteCond%{HTTP_USER_AGENT} ^ $ [NC,OR]

RewriteCond%{HTTP_USER_AGENT} ^ Acunetix [NC,OR]

RewriteCond%{HTTP_USER_AGENT} ^ binlar [NC,OR]

RewriteCond%{HTTP_USER_AGENT} ^ BlackWidow [NC,OR]

两者都很好。在第一个示例中,您需要每500个左右的条目添加一个额外的RewriteCond行。这是因为使用一个命令的行越长,Apache就越难解析。将其分解为单个条目会使其更加混乱,但可能更容易阅读。无论如何,您可以使用任何一种方法。

最后的NC和OR位是重写标志。NC表示“nocase”,表示该条目不区分大小写。这意味着“12soso”和“12Soso”的处理方式相同。或者意味着“这个或那个”,因为只要它与列表中的一个或另一个条目相匹配,就会阻止机器人,而不是“AND”,它们就是全部。

在这里的机器人列表之后,您需要指定重写规则。所有这些只是两部分子句的第一部分:如果URL与此匹配,则……第二部分是发生的事情。在自己的行上添加“RewriteRule。* – [F,L]”。

这样做是将来自bot用户代理的任何传入流量重定向到阻止的页面。具体来说,它发送403 Forbidden代码。[F]是Forbidden,[L]是一个代码,表示应该立即应用重写规则,而不是在解析.htaccess文件的其余部分之后。

另外两种方法是基于HTTP referrer的阻塞,以及基于IP地址的阻塞。

要通过HTTP引用来阻止,使用“RewriteCond%{HTTP_REFERRER}”作为起始行,使用剥离性引用者的域,如www1.free-social-buttons \ .com,并使用[NC,OR]块。之后添加相同的RewriteRule行。你最终会得到这样的东西:

RewriteCond%{HTTP_REFERER} www4.free-social-buttons \ .com

RewriteRule ^。* – [F,L]

最后,您可以简单地基于IP地址进行阻止。如果您发现一个特定的IP地址特别有害,每小时向您的网站发送一百次或其他任何内容,您可以阻止它。只需写下“拒绝来自*。*。*。*”,其中星号是IP地址。它看起来像“从173.192.34.95拒绝”,最后可能用/ 28或其他东西阻挡一个范围。

快捷键
如果所有这些都有点过于复杂,您可以使用快捷方式并使用其他人放在一起的列表。我找到了两个推荐。首先是来自HackRepair.com的这个pastebin条目。第二个是Tab Studio的列表。

每次使用.htaccess文件添加块时,请务必先使用几种不同的方法测试对站点的访问。如果你以一种你不应该被阻止的方式被阻止,那么就会出现问题,你需要修复这个条目。