Bot-Filterung bei der Log-Analyse

Hallo,
ich versuche seit einiger Zeit die Analyseergebnisse für eine Seite zu Optimieren, die ihre Daten aus dem log-analytics Plugin bezieht.

Hierbei dreht es sich im Endeffekt darum, dass ich der Auffassung bin, dass über die Log Analyse sehr viele Bots mitgetrackt werden.

In ersten Versuchen habe ich erst mal die Bots über -enable bots mit hochgeladen, wodurch ca. 250.000 Visits generiert wurden über einen Zeitraum von 6 Monaten. Durch das entfernen des Zusatzes hat sich die Zahl der Visits bereits auf ca. 200.000 reduziert. Im Anschluss habe ich die Bots wieder enabled und über das Plugin BotTracker mit einer selbst erstellten Liste über 250 Bots wieder herausgefiltert, was zu ca. 180.000 Visits geführt hat.

Nun vermutete ich allerdings, dass weitere Bots auf der Seite aktiv sind, da z.b. der am häufigsten getätigte Download die Datei robots.txt als Ziel hatte. nach einiger Recherche konnte ich keine Hinweise darauf finden, warum ein Mensch diese Datei aufrufen sollte oder wie er sie “versehentlich nebenbei” öffnen könnte, sodass ich gerne alle Visitor herausfiltern würde, die eben diese Datei herunterladen.

Eben hierbei bin ich leider auf ein Problem gestoßen.

Probiert habe ich es über einen Segment, bei dem ich folgende Einstellung getroffen habe:
Download URL does not cntain Seitenname/robots.txt
Dies führt jedoch dazu, dass sich die Ergebnisse drastisch reduzieren und ausschließlich Visitor angezeigt werden, die auch Downloads getätigt haben. Um dies aufzufangen habe ich folgendes als “oder” Bedingung eingeführt:
Action Type does not contain downloads.

Dies führt wiederum dazu, dass ca. 5.000 weitere Visits wegfallen, allem Anschein nach handelt es sich hierbei um Visits, bei denen ausschließlich die Robots.txt heruntergeladen wurde.

Im Downloadbericht ist die robots.txt nun auch als Download verschwunden, allerdings werden im Visitor Log weiterhin Visitors angezeigt, bei denen die robots.txt heruntergeladen wurde. Dies führt mich zur Annahme, dass die Datei zwar aus den Berichten entfernt wird, die entsprechenden Visitors, sofern sie weitere Aktionen durchgeführt haben jedoch weiterhin aufgenommen sind und ihre Aktionen betrachtet werden. Da ich die Bots jedoch weitestgehend vollständig herausrechnen möchte, wäre es mir am liebsten, wenn die kompletten Aktionen des Visitors nicht gezählt würden.

Ich habe noch viele weitere Einstellungen ausprobiert und verschiedene Regeln eingesetzt, konnte dieses Problem jedoch nicht umgehen und würde mich freuen, wenn jemand einen Lösungsansatz hat um ein besseres aussortieren zu ermöglichen.

Vielen Dank im vorraus.

Hallo,

Zu den Segment-Fragen kann ich nicht helfen, aber vielleicht hilft dir das trotzdem weiter:

Ohne -enable bots filtert Matomo weit mehr als die 250 Bots hinaus. Die komplette Liste siehst du im Device Detector Projekt:
device-detector/bots.yml at master · matomo-org/device-detector · GitHub

Falls dir ein User Agent unterkommt, der nicht gefiltert wird, kannst du ihn einfach dort als issue gepostet und die Erkennung wird so für alle verbessert.

Damit kommt man aber schon zu einem (ziemlich fundamentalen) Problem: Es ist nicht wirklich möglich Bots zu erkennen, die nicht erkannt werden wollen (also einen eindeutigen User Agent mitschicken).
Und dazu habe ich nicht wirklich eine Lösung.

1 Like

Ich bin mir aktuell sehr sehr sicher, dass da nen Fehler vorliegt, siehe auch:

Bei mir importiert er 2 Bots die er definitiv ignorieren sollte.

@M_H Ich empfehle dir mal einen Blick auf fail2bans apache-badbots zu werfen (Das default Jail funktioniert nicht richtig, aber im Internet gibts Hinweise dafür. Kann dir das aber gerne auch mal per PN schicken). Funktioniert auch mit nginx und seitdem ich das bei uns scharf geschaltet hab, importiert Matomo auch keine Bots mehr :smiley:

1 Like

Da ich jetzt wieder auf Arbeit bin, hier mal für alle. Sperrt zuverlässig Bots aus in dem es die IP-Adressen sperrt. Standardbandauer mit v0.9.3 ist 2 Tage.

# Fail2Ban configuration file
#
# Regexp to catch known spambots and software alike. Please verify
# that it is your intent to block IPs which were driven by
# above mentioned bots.


[Definition]

badbotscustom =                                                                                                                                                                                 
badbots = 360Spider|404checker|404enemy|80legs|Abonti|Aboundex|Acunetix|ADmantX|AfD-Verbotsverfahren|AhrefsBot|AIBOT|AiHitBot|Aipbot|Alexibot|Alligator|AllSubmitter|AlphaBot|Anarchie|Apexoo|ASPSeek|Asterias|Attach|autoemailspider|BackDoorBot|Backlink-Ceck|backlink-check|BacklinkCrawler|BackStreet|BackWeb|Badass|Bandit|Barkrowler|BatchFTP|Battleztar Bazinga|BBBike|BDCbot|BDFetch|BetaBot|Bigfoot|Bitacle|Blackboard|Black Hole|BlackWidow|BLEXBot|Blow|BlowFish|Boardreader|Bolt|BotALot|Brandprotect|Brandwatch|Bubing|Buddy|BuiltBotTough|BuiltWith|Bullseye|BunnySlippers|BuzzSumo|Calculon|CATExplorador|CazoodleBot|CCBot|Cegbfeieh|CheeseBot|CherryPicker|ChinaClaw|Chlooe|Claritybot|Cliqzbot|Cloud mapping|coccocbot-web|Cogentbot|cognitiveseo|Collector|com\.plumanalytics|Copier|CopyRightCheck|Copyscape|Cosmos|Craftbot|crawler4j|crawler\.feedback|CrazyWebCrawler|Crescent|CSHttp|Curious|Custo|DatabaseDriverMysqli|DataCha0s|DBLBot|demandbase-bot|Demon|Deusu|Devil|Digincore|DigitalPebble|DIIbot|Dirbuster|Disco|Discobot|Discoverybot|DittoSpyder|DnyzBot|DomainAppender|DomainCrawler|DomainSigmaCrawler|DomainStatsBot|Dotbot|Download Wonder|Dragonfly|Drip|DTS Agent|EasyDL|Ebingbong|eCatch|ECCP/1\.0|Ecxi|EirGrabber|EMail Siphon|EMail Wolf|EroCrawler|evc-batch|Evil|Exabot|Express WebPictures|ExtLinksBot|Extractor|ExtractorPro|Extreme Picture Finder|EyeNetIE|Ezooms|FDM|FemtosearchBot|FHscan|Fimap|Firefox/7\.0|FlashGet|Flunky|Foobot|Freeuploader|FrontPage|Fyrebot|GalaxyBot|Genieo|GermCrawler|Getintent|GetRight|GetWeb|Gigablast|Gigabot|G-i-g-a-b-o-t|Go-Ahead-Got-It|Gotit|GoZilla|Go!Zilla|Grabber|GrabNet|Grafula|GrapeFX|GrapeshotCrawler|GridBot|GT\:\:WWW|Haansoft|HaosouSpider|Harvest|Havij|HEADMasterSEO|Heritrix|Hloader|HMView|HTMLparser|HTTP\:\:Lite|HTTrack|Humanlinks|HybridBot|Iblog|IDBot|Id-search|IlseBot|Image Fetch|Image Sucker|IndeedBot|Indy Library|InfoNaviRobot|InfoTekies|instabid|Intelliseek|InterGET|Internet Ninja|InternetSeer|internetVista monitor|ips-agent|Iria|IRLbot|Iskanie|IstellaBot|JamesBOT|Jbrofuzz|JennyBot|JetCar|JikeSpider|JOC Web Spider|Joomla|Jorgee|JustView|Jyxobot|Kenjin Spider|Keyword Density|Kozmosbot|Lanshanbot|Larbin|LeechFTP|LeechGet|LexiBot|Lftp|LibWeb|Libwhisker|Lightspeedsystems|Likse|Linkdexbot|LinkextractorPro|LinkpadBot|LinkScan|LinksManager|LinkWalker|LinqiaMetadataDownloaderBot|LinqiaRSSBot|LinqiaScrapeBot|Lipperhey|Litemage_walker|Lmspider|LNSpiderguy|Ltx71|lwp-request|LWP\:\:Simple|lwp-trivial|Magnet|Mag-Net|magpie-crawler|Mail\.RU_Bot|Majestic12|MarkMonitor|MarkWatch|Masscan|Mass Downloader|Mata Hari|MauiBot|Meanpathbot|mediawords|MegaIndex\.ru|Metauri|MFC_Tear_Sample|Microsoft Data Access|Microsoft URL Control|MIDown tool|MIIxpc|Mister PiX|MJ12bot|Mojeek|Morfeus Fucking Scanner|Mr\.4x3|MSFrontPage|MSIECrawler|Msrabot|MS Web Services Client Protocol|muhstik-scan|Musobot|Name Intelligence|Nameprotect|Navroad|NearSite|Needle|Nessus|NetAnts|Netcraft|netEstate NE Crawler|NetLyzer|NetMechanic|NetSpider|Nettrack|Net Vampire|Netvibes|NetZIP|NextGenSearchBot|Nibbler|NICErsPRO|Niki-bot|Nikto|NimbleCrawler|Ninja|Nmap|NPbot|Nutch|Octopus|Offline Explorer|Offline Navigator|Openfind|OpenLinkProfiler|Openvas|OrangeBot|OrangeSpider|OutclicksBot|OutfoxBot|PageAnalyzer|Page Analyzer|PageGrabber|page scorer|PageScorer|Panscient|Papa Foto|Pavuk|pcBrowser|PECL\:\:HTTP|PeoplePal|PHPCrawl|Picscout|Picsearch|PictureFinder|Pimonster|Pi-Monster|Pixray|PleaseCrawl|plumanalytics|Pockey|POE-Component-Client-HTTP|Probethenet|ProPowerBot|ProWebWalker|Psbot|Pump|PxBroker|PyCurl|QueryN Metasearch|Quick-Crawler|RankActive|RankActiveLinkBot|RankFlex|RankingBot|RankingBot2|Rankivabot|RankurBot|RealDownload|Reaper|RebelMouse|Recorder|RedesScrapy|ReGet|RepoMonkey|Ripper|RocketCrawler|Rogerbot|SalesIntelligent|SBIder|ScanAlert|Scanbot|scan\.lol|Scrapy|Screaming|ScreenerBot|Searchestate|SearchmetricsBot|Semrush|SemrushBot|SEOkicks|SEOlyticsCrawler|Seomoz|SEOprofiler|seoscanners|SEOstats|sexsearcher|Seznam|SeznamBot|Shodan|Siphon|SISTRIX|Sitebeam|SiteExplorer|Siteimprove|SiteLockSpider|SiteSnagger|SiteSucker|Site Sucker|Sitevigil|Slackbot-LinkExpanding|SlySearch|SmartDownload|SMTBot|Snake|Snapbot|Snoopy|SocialRankIOBot|Sogou web spider|Sosospider|Sottopop|SpaceBison|Spammen|SpankBot|Spanner|Spbot|Spinn3r|SputnikBot|Sqlmap|Sqlworm|Sqworm|Steeler|Stripper|Sucker|Sucuri|SuperBot|SuperHTTP|Surfbot|SurveyBot|Suzuran|Swiftbot|sysscan|Szukacz|T0PHackTeam|T8Abot|tAkeOut|Teleport|TeleportPro|Telesoft|Telesphoreo|Telesphorep|The Intraformant|TheNomad|TightTwatBot|Titan|Toata|Toweyabot|Trendiction|Trendictionbot|trendiction\.com|trendiction\.de|True_Robot|Turingos|Turnitin|TurnitinBot|TwengaBot|Twice|Typhoeus|UnisterBot|URLy\.Warning|URLy Warning|Vacuum|Vagabondo|VB Project|VCI|VeriCiteCrawler|VidibleScraper|Virusdie|VoidEYE|Voil|Voltron|Wallpapers/3\.0|WallpapersHD|WASALive-Bot|WBSearchBot|Webalta|WebAuto|Web Auto|WebBandit|WebCollage|Web Collage|WebCopier|WEBDAV|WebEnhancer|Web Enhancer|WebFetch|Web Fetch|WebFuck|Web Fuck|WebGo IS|WebImageCollector|WebLeacher|WebmasterWorldForumBot|webmeup-crawler|WebPix|Web Pix|WebReaper|WebSauger|Web Sauger|Webshag|WebsiteExtractor|WebsiteQuester|Website Quester|Webster|WebStripper|WebSucker|Web Sucker|WebWhacker|WebZIP|WeSEE|Whack|Whacker|Whatweb|Who\.is Bot|Widow|WinHTTrack|WiseGuys Robot|WISENutbot|Wonderbot|Woobot|Wotbox|Wprecon|WPScan|WWW-Collector-E|WWW-Mechanize|WWW\:\:Mechanize|WWWOFFLE|x09Mozilla|x22Mozilla|Xaldon_WebSpider|Xaldon WebSpider|Xenu|xpymep1\.exe|YoudaoBot|Zade|Zauba|zauba\.io|Zermelo|Zeus|zgrab|Zitebot|ZmEu|ZumBot|ZyBorg                                                                                                                                               

failregex = (?i)<HOST> -.*"(GET|POST|HEAD).*HTTP.*(?:%(badbotscustom)s|%(badbots)s).*"$

ignoreregex =

# Jun 2018

Soweit ich das gerade überblickt habe dient Fail2bans lediglich Serverseitig dafür die entsprechenden Bots auszuschließen oder?

Bei meinem aktuellen Projekt dreht es sich eher darum vergangenheitsbezogene Daten zu analysieren, weist du zufällig, ob eine entsprechende Einbindung in Matomo möglich ist, sodass die entsprechenden Bots bei einer Apache-Log-Analyse von Daten des vergangenen Jahres herausgefiltert werden?

Ich kann dir leider scheinbar keine PN schreiben (?)

Geht auch mit fail2ban, ist aber nicht unbedingt das Hauptanwendungsgebiet, du kannst dir mit dem Befehl fail2ban-regex --print-all-missed /var/log/acces.log /etc/fail2ban/filder.d/apache-badbots.conf alle Zeilen ausgeben lassen die nicht dem Muster entsprechen. Damit könntest du dann (mit etwas Mehraufwand) eine Datei erstellen die die wieder in Matomo importieren kannst.

1 Like

Hallo Lukas,

kann man unter $MATOMO_HOME/vendor/piwik/device-detector/regexes eine eigene Datei hinterlegen, mit Regexes die zusätzlich zu bots.yml als Bot interpretiert werden sollen?

Kann ich meine bereits eingelesenen Logs mit einer lokal veränderten bots.yml retrospektiv neu einlesen?