vondragonlair 30.08.2018

dragonlair

Technologie ohne Weichzeichner und Softlayer wie grafische Oberflächen.

Mehr über diesen Blog

Jedem ist bekannt, dass es automatisierte Systeme im Internet gibt. Klar, ergibt ja auch Sinn ständig wiederkehrende Aufgaben soweit es geht durch Maschinen und Computer erledigen zu lassen (bis diese eine Revolution anzetteln ; ). Die einfachsten Beispiele sind Webseiten wie IfThisThenThat auf denen in einer anklickbaren Oberfläche neue Bots erstellt werden, die definierte Aufgaben wahrnehmen können. Aufgaben wie z.B. „Wenn es auf taz.de einen neuen Artikel gibt, schick mir eine Mail“. Und überraschender Weise passiert dann auch genau das, ein Bot versendet Mails.

Solche Bots könnte man fast als „freundlich“ oder zumindest als „hilfsbereit“ einstufen, da sie ja genau das tun, was sie sollen. Aber was passiert da eigentlich im Hintergrund? Der Mensch merkt, dass ein neuer Artikel auf taz.de angekommen ist, wenn die Webseite im Browser geöffnet wird und sie ganz profan „anders als beim letztem mal“ aussieht. Der neue Artikel springt direkt ins Auge, weil Webmaster und Onlineabteilung Hand in Hand arbeiten. Beim Bot funktioniert das in etwa genau so. Er verbindet sich zu taz.de und lädt die HTML-Repräsentation der Startseite, denn das ist es was seine Programmiererin ihm befohlen hat. Dann wird die Webseite gespeichert und ein paar Minuten später der Vorgang wiederholt. Die beiden HTML-Dateien werden mit einander verglichen und sollte es einen Unterschied geben, eine Mail gesendet. Case closed.

Fast. Unser gedanklicher Beispielbot ist leider wie die meisten Bots im Internet einfach nur dumm, denn er kennt die Interna von taz.de nicht. Er nimmt keine Rücksicht auf die Besonderheiten von taz.de. Wird zum Beispiel die Platzierung der einzelnen Artikel auf taz.de geändert, versendet unser Bot ebenfalls eine Mail, denn es hat sich was geändert. Ein Teasertext wird überarbeitet? Es folgt eine Mail. Das Bild wird ausgetauscht? Richtig geraten, es folgt eine Mail. Die Webmaster setzen ein neues Feature um und wieder kommt eine Mail an. Der Verlag spielt eine neue Werbung für ein Produkt im taz-shop auf der Webseite aus? Keine Mail, da das Mailaufkommen zu hoch war, und der Mailprovider wie Posteo die Mails als Spam einstuft. Also alles zurück auf Anfang.

Informationsbeschaffung durch Logfiles und Datenauswertung

Versuchen wir mal einen anderen Ansatz und informieren uns. Welche Bots gibt es denn auf taz.de? Was kommt den vollständig automatisiert täglich auf taz.de vorbei und greift irgendwelche Webseiten ab? Um diese Frage beantworten zu können müssen wir uns die Logfiles des Webservers genauer ansehen.

In den Logfiles wird jeder Zugriff auf taz.de protokolliert. Dort findet man für jeden Aufruf die Information welche Seite von welcher IP mit welchen UserAgents resp. Browsern abgefragt wurde. Der Fokus liegt für unsere Fragestellung auf dem UserAgent, der einen Hinweis darauf gibt welche Software die Ressource abgefragt hat. Dieser UserAgent wird von der Software mitgesendet um sich zu identifizieren und kann vom Bot, dem Browser oder der App auf dem Handy frei gewählt werden. Einige Bots maskieren sich als normaler Browser. Andere versuchen mit dem UserAgent Schwachstellen in Webseite zu finden und benutzen ihn als Angriffsvektor. Und manche Apps, wie zum Beispiel die von Facebook, sind so gesprächig, dass sie gleich noch Informationen über den Internetprovider und das verwendete Handy mitsenden. Für eine Surferin von eins&eins auf einem iPhone10 mit der IOS Version 11.4.1 sieht das dann so aus:

Mozilla/5.0 (iPhone; CPU iPhone OS 11_4_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15G77 [FBAN/FBIOS;FBDV/iPhone10,6;FBMD/iPhone;FBSN/iOS;FBSV/11.4.1;FBSS/3;FBCR/1&1;FBID/phone;FBLC/de_DE;FBOP/5;FBRV/121845328]

Es muss also darauf geachtet werden, was behalten werden darf und was gelöscht werden muss. Das kann von jeder Webseite ausgewertet werden und für die Nutzerin personalisierte Werbung bereit stellen. Ein anderes Beispiel für den UserAgent eines Bots sieht so aus:

Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; Googlebot/2.1; +http://www.google.com/bot.html) Safari/537.36

Von wie vielen Zugriffen reden wir eigentlich? Und wieviele sind Bots? Beim Durchzählen ergeben sich für taz.de etwa 17.510.008 Log-Einträge pro Tag. Das erscheint astronomisch viel. Aber für jeden Seitenaufruf werden neben der eigentlichen Webseite noch weitere Dateien wie Bilder, Javascript und Layoutinformationen heruntergeladen.  Auf taz.de sind es in Abhängigkeit vom Bereich irgendwas zwischen 60 und 120 Einzelkomponenten.

Aber wieviel der Zugriffe kommen von Bots? Eine vollständige Liste aller bekannten Botnamen zu bekommen und sie mit dem UserAgent zu vergleichen, ist allerdings nicht trivial. Mit Software wie ua-core kann man zumindest die bekannteren Bots identifizieren. Ein paar werden wir sicherlich nicht erkennen.

Visualisierung

Bots machen etwa 50% aller Zugriffe aus
erkannte Bots (blau) machen etwa 50% aller Zugriffe aus. Davon Artikel (rot) etwa 50%, Seiten(dunkellila) 25%. Die 25% Anderes ist wesentlich höher im Vergleich zu den nicht als Bots erkannten Zugriffen.

Drittens stellt sich die Frage nach der Verteilung. Wieviele sind Bots? Durch Software wie Elasticsearch, Logstash und Kibana lassen sich die Logfiles in Grafiken verwandeln. Bei der taz werden die Logfiles konstant ausgewertet und bis zu 42 Tagen vorgehalten. Dabei werden unwichtige Daten wie IP-Adresse raus gefiltert. Was allerdings erhalten bleibt ist die Länderinformation und der UserAgent. Zusammengehörige Webseitenkomponenten werden akkumuliert, damit Aufrufe von Artikel- resp. Rubriken gezählt werden. An diesen Softwarestack lassen sich dann Fragen stellen. Für einen Zeitraum von einer Woche ergibt sich ganz grob, dass etwa 50% der Zugriffe von Bots statt finden.

Tabelle: Liste und Verhalten der 38 häufigsten Bots; Stand: Juli 2018

Es gibt nicht „den einen Bot“ auch, wenn in den Fluren der taz immer mal wieder vom Googlebot die Rede ist. Auf taz.de können wir etwa 300 von einander unterscheiden. Diese kommen von verschiedenen IP-Adressen, Netzen und Unternehmen. Verhalten sich unterschiedlich und verfolgen unterschiedliche Ziele. Eines haben sie jedoch gemein. Sie extrahieren Informationen aus den Seiten von taz.de. Dies sind andere Informationen als sie von den Leserinnen wahr genommen werden. Semantische Feinheiten wie Ironie oder Alliterationen sind dem Bot egal und werden genauso wie alles ohne Verständnis zeichengenau digital transportiert. In Einzelfällen werden die Seiten einer tieferen Analyse unterzogen um Textfeinheiten zu erkennen. Unternehmen wie Google, yandex, Microsoft und Co haben die Ressourcen dafür, aber der Normalfall ist die minimale Anzahl von Feature aus der HTML-Seite zu extrahieren um weiter machen zu können. Auch sind die Bots nicht einzig und alleine für die taz geschrieben. Es handelt sich um Allzweckwerkzeuge die auf diversen Webseiten unterwegs sind. Und genau das ist häufig ein Problem.

Die taz bietet ihre Artikel und Seiten nicht nur als HTML-Version an, sondern in diversen, maschinell einfacher zu verarbeiteten Formaten. Diese braucht die taz hauptsächlich um die eigenen Dienste mit Informationen zu versorgen, sie sind aber frei im Netz erreichbar. So lässt sich jeder Artikel einfach durch das Anhängen von „/c.xml“ an die URL des Artikels als strukturierte XML-Daten beziehen. Durch anhängen von „;rss“ bekommt man die rss-Repräsentation von Seiten. Die Maschinenformate enthalten nur noch relevante Daten und keine Werbe- oder Layoutinformationen, was die Mailflut vom IfThisThenThat-Bot eingrenzen könnte.

Ein anderes beobachtetes Phänomen ist, dass sich Bots an Teilbereichen einfach fest fressen und immer wieder das gleiche Produkt im Shop abfragen oder die Terminsuche der bewegung.taz.de abfragen. Der Grund? Die Bots bekommen nicht mit, dass unter zwei für sie unterschiedlich erscheinende URLs der gleiche Inhalt bereit gestellt wird. Sie bewerten die Adresse wesentlich stärker, als es ein Mensch tun würde. Für die taz messbar wirkt es sich so aus, dass mehr Rechenleistung und Bandbreite benötigt wird um eben mehrfach identische Artikel auszuliefern. In einigen Fällen greifen Bots mehrere tausendmal in einer Wochen auf genau ein Produkt im taz-shop zu. Wie sich das auf der Seite der Betreiber der Bots auswirkt lässt sich nur spekulieren.

// Nerdtalk

Auf taz-Seiten fangen wir langsam an die Fresswut der Bots zu limitieren. Nicht bei den Artikeln, aber bei Subsystemen wie dem Shop oder der Bewegungs-Seite. Wir haben initial versucht die entsprechenden IP-Adressen direkt einzusperren. Das ist zeitintensiv, da immer wieder Analysen der Logs gemacht werden und ein händischer Eintrag in der Konfiguration den Webservers statt finden muss. Was genauso frustrierend wie zeitaufwändig und langweilig ist.

Seit kurzem haben wir eine Konfiguration für das Zusatzmodul ModSecurity im Einsatz. Es ist so konfigurieren, dass alle Zugriffe auf gefährdete Ressourcen in Abhängigkeit von der IP mitgezählt werden. Alle 24 Stunden werden die Zählungen um 200 reduziert. Erreicht ein Zähler den wert 750, wird diese IP als Bot markiert und alle weiteren Anfragen mit dem HTTP-Statuscode 429 beantwortet. Übersetzt heißt der Statuscode, dass die Anzahl der erlaubten Zugriffe überschritten wurde. Ferner wird die Antwort mit der zusätzlichen Information versehen, dass eine neuerliche Anfrage in 24 Stunden stattfinden soll.

Spoileralert: Fast jeder Bot der sich festgefressen hat, und die Konfiguration von ModSecurity auslöst, ignoriert den RetryHeader in der Antwort. Die Konsequenz? Ein Bot der Scheiße baut und lehrnresistent ist, muss mindestens clever sein wenn er schon die robots.txt ignoriert. Details zur Konfiguration sind auf gitlab.com zu finden.

Und wie geht es jetzt mit unserem Bot von IfThisThenThat weiter? Die Autorin des Bots bezieht nun die RSS-Feeds der für sie relevanten Ressorts und frag sie alle 30min ab. Damit macht der Bot am Tag etwa 50 Anfragen pro Ressort. Sie weiß nun schon vor dem Lesen, ob es ein Artikel aus dem Berlinteil oder von den Öwis ist.

Anzeige

Wenn dir der Artikel gefallen hat, dann teile ihn über Facebook oder Twitter. Falls du was zu sagen hast, freuen wir uns über Kommentare

https://blogs.taz.de/dragonlair/bots/

aktuell auf taz.de

kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.