最近發現日志里有很多沒見過的蜘蛛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
這樣,就都被302到www.xlyVPS.com了,現在再看那些未知的蜘蛛基本不會在主站亂爬了。
另:.htaccess的正則:”^”代表字符串的開始,”.*”代表任意字符。
NC代表不區分大小寫,OR代表或者,L的意思是一旦有符合條件的規則就不再執行下面的規則,所以這些語句要放在wordpress等程序默認偽靜態規則的前面。