最新文章:
- Google Map api国内正常使用该如何配置(2021最新)
- wordpress国内网速慢加速及防DDOS攻击快速CF切换教程
- 2.18-3.31,共战疫情,阿里云免费送.网址域名
- Ubuntu安装时出现“failed to load ldlinux.c32”
- iconv函数报错 Detected an illegal character in input string
首页 Web技术
IIS、Nginx、Apache通过user-agent拦截异常蜘蛛爬虫
发布时间:2019年11月08日 评论数:2 阅读数:7172
有一些爬虫非常占用服务器资源,例如网上吐槽最多的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蜘蛛
本文作者:Mr.linus
文章标题: IIS、Nginx、Apache通过user-agent拦截异常蜘蛛爬虫
本文地址:http://www.90qj.com/550.html 本文已经被百度收录,点击查看详情
版权声明:若无注明,本文皆为“挨踢 Blog”原创,转载请保留文章出处。
本文地址:http://www.90qj.com/550.html 本文已经被百度收录,点击查看详情
版权声明:若无注明,本文皆为“挨踢 Blog”原创,转载请保留文章出处。
相关文章
夏日博客2019-11-08 11:41回复
#1
神马搜索爬虫,天天爬得要命。
Mr.linus2019-11-09 14:14回复
@夏日博客:神马的ua是yisou,也可以屏蔽