截至2012年,僵尸网络流量超过了网络上的人流量,平均而言,您网站上超过50%的点击量来自机器人而非人类。

机器人具有广泛的用途,并非所有这些都是坏的。有些机器人,比如Google和百度使用的机器人,会对您的网页进行抓取和索引。

如果您要阻止Googlebot或百度蜘蛛,您的网站最终将从其索引中删除; 他们无法再访问它,因此您的内容不会显示。

有些机器人仅用于抓取电子商务网站,寻找交易。他们交叉引用他们可以找到的每个电子商店与给定的产品,因此家庭网站可以显示在各种商店的产品价格。

一些网站将使用这些来确保它们位于列表的首位,竞争卖家通过调整价格来互相推销。

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

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

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

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

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

在许多情况下,这甚至可以打倒一个网站。

如何阻止机器人?

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

什么是robots.txt文件?

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

为什么不使用robots.txt?

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

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

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

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

识别要阻止的机器人

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

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

您要做的第二件事是弄清楚如何找到自己的访问日志。使用Apache,您需要使用Linux / Unix命令来访问日志文件。

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

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

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

在按IP地址或IP范围阻止时要非常小心。很容易看到很多机器人来自168. *.*.*,星星中有各种不同的数字,并认为“我可以阻止所有这些!阻止整个/ 8范围!“问题是,IPv4中的 a / 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”的处理方式相同。OR表示“this或that”,因为只要它与列表中的一个或另一个条目匹配,就会阻止机器人,而不是“AND”,这将是所有这些条目。

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

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

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

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

RewriteCond%{HTTP_REFERER} www4.free-social-buttons \ .comRewriteRule ^.*  -  [F,L]

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

快捷键

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

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