当前位置: 首页 > Web技术 > 正文

IIS、Nginx、Apache通过user-agent拦截异常蜘蛛爬虫

Mr.linus 发表于2019年11月8日 9:56

有一些爬虫非常占用服务器资源,例如网上吐槽最多的Bytespider,成天没日没夜的爬,一天几万甚至几十万,对于一些小网站来说,负担还是很高的,robots禁用规则对他根本不生效,于是只能通过user-agent做了屏蔽,下面整理下iis及nginx及apache环境下如何屏蔽不知名的蜘蛛ua。

注意(请根据自己的情况调整删除或增加ua信息,我提供的规则中包含了非蜘蛛的ua,一些扫描器的头部信息等,几乎用不着,若您的网站比较特殊,需要不同的蜘蛛爬取,建议仔细分析规则,将指定ua删除即可)

1、nginx,下面是屏蔽规则,将规则添加到配置文件的server段里面,当这些蜘蛛来抓取时会返回444;

为什么要返回444呢? 444是nginx内置的错误代码。对我们来说 return 444 比 return 404还要好。因为 nginx 下即使return 404,也会有返回的header和一个包含错误信息的html body。但是return 444,服务器会立刻关闭连接,就好象服务不存在一样。

if ($http_user_agent ~ "Bytespider|Java|perl|Python|Wget|Xenu|^$" ){return 444;}

2、IIS7/IIS8/IIS10及以上web服务请在网站根目录下创建web.config文件,并写入如下代码即可,如果已有rewrite规则,只需要复制<rule>到</rule>之间的内容
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="Block spider">
<match url="(^robots.txt$)" ignoreCase="false" negate="true" /><conditions>
<add input="{HTTP_USER_AGENT}" pattern="Bytespider|Java|perl|Python|Wget|Xenu|ZmEu|^$"ignoreCase="true" />
</conditions>
<action type="AbortRequest" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>


3、apache请在.htaccess文件中添加如下规则即可: 

<IfModule mod_rewrite.c>
RewriteEngine On
#Block spider
RewriteCond %{HTTP_USER_AGENT}"Bytespider|Java|perl|Python|Wget|Xenu|ZmEu|^$" [NC]RewriteRule !(^robots.txt$) - [F]</IfModule>

屏蔽验证

查看日志搜索不到任何byte蜘蛛

QQ截图20191108101332.png


全文完
本文标签: user-agent拦截蜘蛛ua屏蔽爬虫
本文标题: IIS、Nginx、Apache通过user-agent拦截异常蜘蛛爬虫
本文链接: http://www.90qj.com/m/?post=550

〓 随机文章推荐

共有6671阅 / 2我要评论
  1. Mr.linus板凳
    @夏日博客:神马的ua是yisou,也可以屏蔽
  2. 神马搜索爬虫,天天爬得要命。

发表你的评论吧返回顶部

!评论内容需包含中文


请勾选本项再提交评论