云服务器Apache利用USER_AGENT屏蔽恶意蜘蛛

[复制链接] |主动推送
查看32 | 回复0 | 2024-9-11 15:06:19 | 显示全部楼层 |阅读模式
最近发现日志里有很多没见过的蜘蛛UA,基本上都是国外的一些搜索引擎,或者很本不是搜索引擎,有的抓取频率很高,刚开始设置了下robots.txt,因为他们首先都抓取了robots.txt,应该是遵守规则的,没想到人家只是走个过场,并没有把robot.txt放在眼里。


Apache可以用.htaccess文件来通过useragent来屏蔽一些访问,搜了一下,大概可以这么做:







.htaccess
SetEnvIfNoCase User-Agent ^.*Scrapy.* bad_bot
SetEnvIfNoCase User-Agent ^.*SemrushBot.* bad_bot
SetEnvIfNoCase User-Agent ^.*ExtLinksBot.* bad_bot
SetEnvIfNoCase User-Agent ^.*YandexBot.* bad_bot
SetEnvIfNoCase User-Agent ^.*MauiBot.* bad_bot
SetEnvIfNoCase User-Agent ^.*Python.* bad_bot
SetEnvIfNoCase User-Agent ^.*NetcraftSurveyAgent.* bad_bot
Deny from env=bad_bot
这样当这些匹配的useragent就会被返回403禁止访问。


可是第二天发现有几个useragent疯狂的访问robot.txt,反正都不遵守规则,那么执着的访问robots.txt干什么。。。。。


于是我换了一种方法,打算用302(301也一样啦,对这些恶意蜘蛛没那么讲究)把他们转走。


.htaccess
111840ohhe2oa9nzz9onns.png
这样,就都被302到www.xuemiyun.com了,现在再看那些未知的蜘蛛基本不会在主站乱爬了。


另:.htaccess的正则:”^”代表字符串的开始,”.*”代表任意字符。


NC代表不区分大小写,OR代表或者,L的意思是一旦有符合条件的规则就不再执行下面的规则,所以这些语句要放在WordPress等程序默认伪静态规则的前面。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则