最新文章:

首页 Web技术

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

发布时间:2019年11月08日 评论数:2 阅读数:329

    有一些爬虫非常占用服务器资源,例如网上吐槽最多的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


二维码加载中...
本文作者:Mr.linus      文章标题: IIS、Nginx、Apache通过user-agent拦截异常蜘蛛爬虫
本文地址:http://www.90qj.com/550.html  本文已经被百度收录,点击查看详情
版权声明:若无注明,本文皆为“挨踢 Blog”原创,转载请保留文章出处。
挤眼 亲亲 咆哮 开心 想想 可怜 糗大了 委屈 哈哈 小声点 右哼哼 左哼哼 疑问 坏笑 赚钱啦 悲伤 耍酷 勾引 厉害 握手 耶 嘻嘻 害羞 鼓掌 馋嘴 抓狂 抱抱 围观 威武 给力
提交评论

清空信息
关闭评论
夏日博客
夏日博客2019-11-08 11:41回复
#1
神马搜索爬虫,天天爬得要命。
Mr.linus
Mr.linus2019-11-09 14:14回复
@夏日博客:神马的ua是yisou,也可以屏蔽