Es war mal wieder soweit der Server hat seine Macken gezeigt bis hin zu einer Load von 90+. Die Ursache war am Anfang nicht ganz klar nachdem ich aber die nginx Logs begutachtet habe war es klar. Die Bots sind los nicht die guten die mit einem Chatten auf Tinder hoffnungsvolle Nachrichten senden oder die Instagram Bilder aus dem Urlaub liken. Nein diese Art von Bots die einfach nur DATEN sammeln. Viele davon nur um ihren zahlenden Kunden etwaige Marken Nennungen zu reporten.
awk -F\" '{print $6}' /var/log/nginx/access.log | sort | uniq -c | sort -n
Ok dachte ich dafür gibts ja die robots.txt diese habe ich mühsam eingestellt. Jedoch musste ich Tage später feststellen das diese Bots so gar nicht zu liken sind, weil sie das robots.txt zwar nachweislich regelmässig abfragen jedoch den Inhalt gekonnt ignorieren.
Access Sperren über Nginx
Für alle die sich nicht an die robots.txt halten (erstaunlich viele) gibts via nginx einen eigenen Türsteher und auch da musste ich erkennen das das Abweisen mit 403 „alla du kommst da ned rein“ wohl zu höfflich ist besser gefahren bin ich dann mit der Stille alias HTTP Response 444. Weiters verbraucht das schreiben der Log zugriffe unglaublich viele Zugriffe auf das Filesystem (daher auch das access_log off;)
# Blocking Crawler
if ($http_user_agent ~* (360Spider|AhrefsBot|ecoresearchCrawler|AwarioRssBot|adscanner|SemrushBot|trendkite|Blexboti|babar|seekport|Barkrowler|80legs.com|Abonti|AcoonBot|Acunetix|adbeat_bot|AddThis.com|adidxbot|ADmantX|AhrefsBot|AngloINFO|Antelope|BaiduSpider|BeetleBot|binlar|bitlybot|BlackWidow|BLP_bbot|BoardReader|Bolt\ 0|BOT\ for\ JCE|Bot\ mailto\:craftbot@yahoo\.com|casper|CazoodleBot|CCBot|checkprivacy|ChinaClaw|chromeframe|Clerkbot|Cliqzbot|clshttp|CommonCrawler|comodo|CPython|crawler4j|Crawlera|CRAZYWEBCRAWLER|Curious|Curl|Custo|CWS_proxy|Default\ Browser\ 0|diavol|DigExt|Digincore|DIIbot|discobot|DISCo|DoCoMo|DotBot|Download\ Demon|DTS.Agent|EasouSpider|eCatch|ecxi|EirGrabber|Elmer|EmailCollector|EmailSiphon|EmailWolf|Exabot|ExaleadCloudView|ExpertSearchSpider|ExpertSearch|Express\ WebPictures|ExtractorPro|extract|EyeNetIE|Ezooms|F2S|FastSeek|feedfinder|FeedlyBot|FHscan|finbot|Flamingo_SearchEngine|FlappyBot|FlashGet|flicky|Flipboard|g00g1e|Genieo|genieo|GetRight|GetWeb\!|GigablastOpenSource|GozaikBot|Go\!Zilla|Go\-Ahead\-Got\-It|GrabNet|grab|Grafula|GrapeshotCrawler|GTB5|GT\:\:WWW|Guzzle|harvest|heritrix|HMView|HomePageBot|HTTP\:\:Lite|HTTrack|HubSpot|ia_archiver|icarus6|IDBot|id\-search|IlseBot|Image\ Stripper|Image\ Sucker|Indigonet|Indy\ Library|integromedb|InterGET|InternetSeer\.com|Internet\ Ninja|IRLbot|ISC\ Systems\ iRc\ Search\ 2\.1|jakarta|Java|JetCar|JobdiggerSpider|JOC\ Web\ Spider|Jooblebot|kanagawa|KINGSpider|kmccrew|larbin|LeechFTP|libwww|Lingewoud|LinkChecker|linkdexbot|LinksCrawler|LinksManager\.com_bot|linkwalker|LinqiaRSSBot|LivelapBot|ltx71|LubbersBot|lwp\-trivial|Mail.RU_Bot|masscan|Mass\ Downloader|maverick|Maxthon$|Mediatoolkitbot|MegaIndex|MegaIndex|megaindex|MFC_Tear_Sample|Microsoft\ URL\ Control|microsoft\.url|MIDown\ tool|miner|Missigua\ Locator|Mister\ PiX|mj12bot|Mozilla.*Indy|Mozilla.*NEWT|MSFrontPage|msnbot|Navroad|NearSite|NetAnts|netEstate|NetSpider|NetZIP|Net\ Vampire|NextGenSearchBot|nutch|Octopus|Offline\ Explorer|Offline\ Navigator|OpenindexSpider|OpenWebSpider|OrangeBot|Owlin|PageGrabber|PagesInventory|panopta|panscient\.com|Papa\ Foto|pavuk|pcBrowser|PECL\:\:HTTP|PeoplePal|Photon|PHPCrawl|planetwork|PleaseCrawl|PNAMAIN.EXE|PodcastPartyBot|prijsbest|proximic|psbot|purebot|pycurl|QuerySeekerSpider|R6_CommentReader|R6_FeedFetcher|RealDownload|ReGet|Riddler|Rippers\ 0|rogerbot|RSSingBot|rv\:1.9.1|RyzeCrawler|SafeSearch|SBIder|Scrapy|Scrapy|Screaming|SeaMonkey$|search.goo.ne.jp|SearchmetricsBot|search_robot|SemrushBot|Semrush|SentiBot|SEOkicks|SeznamBot|ShowyouBot|SightupBot|SISTRIX|sitecheck\.internetseer\.com|siteexplorer.info|SiteSnagger|skygrid|Slackbot|Slurp|SmartDownload|Snoopy|Sogou|Sosospider|spaumbot|Steeler|sucker|SuperBot|Superfeedr|SuperHTTP|SurdotlyBot|Surfbot|tAkeOut|Teleport\ Pro|TinEye-bot|TinEye|Toata\ dragostea\ mea\ pentru\ diavola|Toplistbot|trendictionbot|TurnitinBot|turnit|URI\:\:Fetch|urllib|Vagabondo|Vagabondo|vikspider|VoidEYE|VoilaBot|WBSearchBot|webalta|WebAuto|WebBandit|WebCollage|WebCopier|WebFetch|WebGo\ IS|WebLeacher|WebReaper|WebSauger|Website\ eXtractor|Website\ Quester|WebStripper|WebWhacker|WebZIP|Web\ Image\ Collector|Web\ Sucker|Wells\ Search\ II|WEP\ Search|WeSEE|Wget|Widow|WinInet|woobot|woopingbot|worldwebheritage.org|Wotbox|WPScan|WWWOFFLE|WWW\-Mechanize|Xaldon\ WebSpider|XoviBot|yacybot|YisouSpider|zermelo|Zeus|zh-CN|ZmEu|ZumBot|ZyBorg|neofonie) ) {
access_log off;
return 444;
}
Warum nicht alles sperren
Die Antwort ist weil die Leute nur noch suchen um auf Inhalte zu kommen eine Analyse der Suchkriterien für meine Domains zeigt das sogar der Domainname lieber gesucht als eingegeben wird. Mobile Geräte sind da vielleicht nicht ganz hilfreich da dort Adress und Suchzeile verschwimmt. Die rate der Wiederkehrenden User sinkt.
Nginx logfiles Buffern
Eines habe ich am Rande gelernt wenn der Server viele Zugriffe erlebt ist ein Buffern der Logfiles gar nicht so dumm.
log_format main '$remote_addr - $remote_user [$time_local] "$request" $status $body_bytes_sent "$http_referer" "$http_user_agent" "$gzip_ratio"';
access_log /var/log/nginx/access.log main buffer=8k flush=5m;
Schreibe einen Kommentar