Sudelblog.de – Das Weblog zu Kurt Tucholsky » 2018 » Februar

2.2.2018

Mein gar nicht böser Tucholsky-Bot

Vor der Bundestagswahl im vergangenen Jahr machte sich in der deutschen Politik nahezu Panik breit. Nach den Erfahrungen der Brexit-Wahl in Großbritannien und der Wahl von US-Präsident Donald Trump wurde befürchtet, dass hierzulande die Bundestagswahlen von Meinungsrobotern in sozialen Netzwerken beeinflusst werden könnten. Zwar wurde inzwischen Entwarnung gegeben, doch neue Zahlen von Twitter zeigen den Umfang automatisierter Accounts.

So räumte der Kurznachrichtendienst in der vergangenen Woche gegenüber dem US-Kongress ein (PDF), bei Analysen mehr als 50.000 automatisierte Accounts entdeckt zu haben, die möglicherweise von Russland aus während der US-Präsidentschaftswahlen im Jahr 2016 eingesetzt worden seien. Diese sollen im Wahlkampf mehr als zwei Millionen Tweets mit Bezug zu Präsidentschaftswahlen abgesetzt haben, was einem Anteil von einem Prozent an allen Wahlkampftweets entspräche.

Fake Quotes im Internet

Zugegeben: Automatisierte Accounts haben einen schlechten Ruf. Doch der Missbrauch einer Technik durch andere sollte niemanden davon abhalten, sie selbst einmal auszuprobieren und sinnvolle Anwendungen dafür zu finden. Wir haben es getan und uns dabei des Problems der Fake Quotes angenommen.

Dieses Problem existiert nahezu unbeachtet von der Diskussion über sogenannte Fake News in sozialen Medien. Mehr oder wenige originelle oder unsinnige Zitate werden fälschlicherweise bekannten Autoren zugeschrieben. Das Prinzip ist dabei ähnlich wie bei Falschnachrichten: Die Zitate werden in die Welt gesetzt, ohne dass sich Nutzer Gedanken darüber machen, ob diese tatsächlich vom genannten Urheber stammen. Irgendwo schon mal im Internet gesehen oder gelesen reicht als Quelle aus. Hauptsache, die Zitate passen ins eigene Weltbild.

Der Vorteil der Digitalisierung

Auffällig ist dies beispielsweise bei dem Journalisten und Satiriker Kurt Tucholsky. Es gibt hier auf dem Sudelblog eine sicherlich unvollständige Liste von Zitaten, die Tucholsky immer wieder fälschlicherweise zugeschrieben werden. Leider wird diese offenbar als Vorlage genommen, um angebliche Tucholsky-Zitate im Internet zu verbreiten. Ganz oben auf der Liste steht dabei: „Toleranz ist der Verdacht, dass der andere recht hat.“ Klingt auf den ersten Blick originell, ist aber beim zweiten Hinsehen Unfug. So tolerieren Linux-Nutzer bisweilen durchaus Apple- und Windows-Rechner in der Familie, obwohl sie genau wissen, dass Steve Jobs und Bill Gates auf keinen Fall recht hatten. Von anderen Religionen ganz zu schweigen.

Und soll man falsche Zitate auf Twitter tolerieren, weil der Verdacht bestehen könnte, dass sie sich doch im Werk des vermeintlichen Autors finden könnten? Sicherlich nicht. Denn das hieße, die Beweislast beim Verbreiten von Zitaten oder Nachrichten umzukehren. „Der Vorteil der Klugheit besteht darin, dass man sich dumm stellen kann. Das Gegenteil ist schon schwieriger“, lautet das wohl häufigste falsche Tucholsky-Zitat. Der Vorteil der Digitalisierung besteht jedoch darin, dass sich elektronisch vorliegende Werke einfach darauf hin überprüfen lassen, ob ein bestimmtes Zitat darin enthalten ist. Das war in früheren Zeiten schon schwieriger.

Kostenlose Twitter-Bots sind unflexibel

Die schiere Masse an Fake Quotes lässt sich auf Twitter im Falle Tucholskys kaum manuell bekämpfen. Doch an dieser Stelle kann man versuchen, Twitter mit seinen eigenen Waffen zu schlagen. Ein automatisierter Account könnte die falschen Zitate auf Twitter heraussuchen und den Nutzer höflich darauf hinweisen, dass er einem Fake Quote aufgesessen ist. Vielleicht löscht er daraufhin das Zitat. Oder andere Nutzer werden zumindest davon abgehalten, es weiterzuverbreiten.

Wie lässt sich ein solcher Bot am einfachsten programmieren? Gibt es Anbieter, die solche Dienste im Internet kostenlos für Nutzer bereitstellen? Durchaus. So bietet der Dienst IFTTT (If this than that) zahlreiche vorkonfigurierte Anwendungen für Twitter an. Beispielsweise, um Beiträge auf anderen Plattformen mit Twitter zu verknüpfen. Selbst Spiegel Online nutzt für bestimmte Twitter-Feeds diesen Dienst. Dazu ist es nicht einmal erforderlich, einen eigenen API-Zugang zu Twitter anzulegen. Von 100 Zitaten, die in der vergangenen Woche mit dem Begriff Tucholsky getwittert wurden, stammen immerhin sieben von IFTTT. Eine App mit der von uns gewünschten Funktion findet sich dort jedoch nicht.

API-Zugang problemlos anzulegen

Einen kostenlosen Autoreply-Twitter-Bot ohne Code in fünf Minuten verspricht der Programmierer Amit Agarwal auf der Seite Labnol.org. Voraussetzung ist in diesem Fall jedoch ein eigener API-Zugang. Einen solchen Zugang anzulegen, geht sehr einfach über die Adresse apps.twitter.com. Nach dem Anlegen der App erhalten Nutzer vier erforderliche Zugangsdaten zur Twitter-Schnittstelle: consumer key, consumer secret, access token und access token secret. Diese vier Daten speichern sie sich am besten gleich auf dem Rechner, da sie für jeden der weiter unten erläuterten Bots eingegeben werden müssen.

Für Agarwals Bot auf Basis eines Google App Scripts müssen wir der Anwendung zudem einen Zugang zu unserem eigenen Google-Account erlauben. Wer Sicherheitsbedenken hat, legt sich dazu einen neuen Account an, der für nichts anderes genutzt wird. Dann lässt sich beispielsweise ein Suchbegriff eingeben, auf den mit einem bestimmten Text geantwortet wird. Bei der Suche lassen sich Begriffe auch logisch miteinander verknüpfen.

Nur eine Abfrage kostenlos

Das klappt mit dem ersten Zitat einfach und problemlos. Da die Twitter-API auf Tweets der vergangenen sieben Tage zurückgreifen kann, erhalten gleich drei Nutzer einen Rüffel vom Tucholsky-Zitate-Check. Daraus entspinnt sich sogar eine Diskussion über die Zuverlässigkeit bestimmter Quellen und Fragen, ob eine Autorenangabe überhaupt wichtig ist, wenn einem das Zitat gefällt.

Doch als wir eine weitere Abfrage einrichten wollen, sollen wir dazu einen Premium-Account anlegen, der für fünf Bots 29 US-Dollar im Jahr kostet. Bei mehr Abfragen, was bei den vielen falschen Tucholsky-Zitaten erforderlich wäre, würden sogar 299 US-Dollar fällig. Also muss eine andere Lösung her, die gleichzeitig günstig und flexibel ist. Später stellen wir fest, dass sich der Bot nicht mehr nachträglich bearbeiten lässt und nur sicher gestoppt werden kann, indem wir uns Twitter-Zugangsdaten neu generieren. Aber wie sagte schon Tucholsky nicht: „Das Gegenteil von gut ist gut gemeint.“

Tweepy als umfangreiche Python-Bibliothek

Bei einer Eigenlösung stehen wir jedoch vor dem Problem: Solch ein Bot sollte rund um die Uhr laufen. Je schneller auf einen Tweet geantwortet werden kann, um so besser. Daher sollte das Programm auf einem Webserver oder einem Rechner installiert werden, der permanent online ist. Für beide Fälle gibt es im Netz eine Reihe von Lösungen, die sich beispielsweise auf einem Bastelrechner à la Raspberry Pi oder einer eigenen Webdomain installieren lassen, die die Ausführung von PHP-Skripten und Cronjobs ermöglicht.

Am einfachsten dürfte dabei eine Lösung mit Python auf einem Linux-System sein. Denn für Python gibt es die umfangreiche Bibliothek Tweepy (https://github.com/tweepy/tweepy oder http://www.tweepy.org/), die einen unkomplizierten Zugang zur Twitter-API ermöglicht. Es muss lediglich beachtet werden, dass das aktuelle Paket installiert wird, welches die derzeit gültige API-Version 1.1 anspricht. Zwar ist zu empfehlen, Python ab Version 3.3 zu nutzen, doch die Bibliothek läuft auch unter Python 2.7, wenn bestimmte Module wie Six oder Requests installiert wurden. Unter Umständen kann es erforderlich sein, Fehlermeldungen unter Requests zu deaktivieren.

Nur wenige Zeilen Code

Die Tweepy-Bibliothek übernimmt dabei die Authentifizierung mit Hilfe des OAuth-Protokolls. Zudem werden die Parameter der Twitter-API eingebunden. Davon gibt es wirklich sehr viele, wie aus dem API-Reference-Index hervorgeht. Das eigentliche Python-Script ist daher recht kurz und lässt sich schnell googeln. Zunächst werden die Suchergebnisse in eine Variable geladen. Die darin zu suchenden Zitate werden in eine Liste eingetragen. Eine Funktion überprüft dann, ob die Zitate aus der Liste in den Tweets enthalten sind.

Falls das zutrifft, sendet Tweepy in einer For-Schleife über die API die entsprechende Antwort an den Nutzer. Zusammenfassend ist die Funktion in einer Anleitung auf www.dototot.com erläutert, allerdings mit einer verschachtelten For-Schleife. Dort fehlt jedoch die Angabe der Tweet-ID, die erforderlich ist, um den Antwort-Tweet über den Parameter in_reply_to_status_id mit dem Originaltweet zu verknüpfen.

Duplikatsperre zeitlich begrenzt

Über einen Cronjob lässt sich das Skript beispielsweise alle 15 Minuten oder jede Stunde aufrufen, um möglichst schnell auf Tweets zu reagieren. Twitter verhindert dabei selbst, dass Antworten ein zweites Mal publiziert werden. Doch bei einem „Langzeittest“ des Twitter-Bots erlebten wir eine unangenehme Überraschung: Die Blockade von Duplikaten dauert nur zwölf Stunden. Dann wurden die Twitter-Nutzer ein zweites Mal über das falsche Zitat informiert.

Um das zu vermeiden, lässt sich mit dem Parameter created_at der genaue Publikationszeitpunkt eines Tweets abfragen und dessen Auswertung auf einen bestimmten Zeitraum von wenigen Stunden oder Minuten einschränken. Fertig ist der Twitter-Bot auf Python-Basis (Beispielcode).

Viele PHP-Vorlagen im Netz

Wer seinen Bot nicht auf einem eigenen Rechner, sondern einem Webserver installieren will, ist vermutlich mit PHP besser bedient. Auch für diese Sprache findet sich eine Reihe von Vorlagen auf Github, um Twitter-Bots zu installieren. Eine Standardvorlage wie Tweepy scheint es für PHP jedoch nicht zu geben. Zudem sind nicht alle auf dem aktuellen API-Stand. Wir haben uns für die Bibliothek Twitter for PHP entschieden, die PHP 5.0 und die Erweiterung Curl voraussetzt.

Der einzige Nachteil: Twitter for PHP hat keine Reply-Funktion integriert, so dass diese in der Vorlage twitter.php ergänzt werden muss.

Der Code des eigentlichen Bots ist ähnlich wie in Python. In zwei verschachtelten Foreach-Schleifen werden zwei Arrays mit den gefundenen Tweets und den Zitaten verglichen. Nach einer Zeitabfrage werden die Antworten verschickt. Fertig ist der Twitter-Bot auf PHP-Basis (Beispielcode).

Wie lassen sich Twitter-Bots aufspüren?

Die Verzeichnisse müssen noch auf den eigenen Webspace hochgeladen werden. Hierbei sollte man darauf achten, dass das Verzeichnis geschützt ist, damit die im Skript gespeicherten Zugangsdaten nicht öffentlich zugänglich sind. Gestartet wird das Skript mit einem Cronjob, der bei Providern wie Strato ab bestimmten Hostingpaketen zur Verfügung steht.

Da dies alles so einfach ist, stellt sich die berechtigte Frage, ob sich auf diese Weise nicht doch ein Twitter-Bot-Batallion programmieren lässt, mit dem sich Wahlen beeinflussen lassen. Mit Hilfe einer Datenbank wäre es recht einfach, automatisierte Accounts täglich neu zu programmieren und Suchbegriffe oder Hashtags einzugeben, auf die mit einem bestimmten Text geantwortet werden soll. Zudem lässt sich die Zahl der abgesetzten Tweets begrenzen, so dass es schwer wird, anhand der Twitter-Aktivität einen Bot aufzuspüren, wie es der Datenjournalist Matthias Kreil im vergangenen Jahr versucht hat. Das kommerzielle Programm Tweetattackspro verspricht Nutzern das Steuern von Tausenden Twitter-Accounts rund um die Uhr. Dabei könne die Software einen menschlichen Betrieb des Accounts perfekt simulieren.

Wenn Twitter-Bots etwas ändern könnten“

Eine einzelne Person könnte auf diese Weise zahlreiche Accounts orchestrieren und möglicherweise bestimmte Themen und Hashtags nach oben bringen. Setzten deutsche Parteien oder andere Organisationen beispielsweise im Bundestagswahlkampf Twitter-Bots ein, wären sie anhand der von Twitter im Fall Russland angegebenen Kriterien wie IP-Adressen, Provider, E-Mail-Adressen oder Schriftzeichen nicht aufspürbar. Hinweise könnten die Tweet-Quellen wie eigene Apps oder unübliche Clients geben. Daher würde es den Einsatz von Bots zumindest ein bisschen erschweren, wenn die Quelle eines Tweets gleich mit angegeben würde. Werden die Tweets aber über Clients wie Twitter Web Client oder Twitter for Android abgeschickt, würde die Analyse sehr schwierig werden.

Aber wäre das so schlimm? Hat Tucholsky nicht immer schon behauptet: „Wenn Wahlen etwas änderten, wären sie längst verboten?“ Dieser Spruch ist nach Ansicht der Tageszeitung (taz) „der größte Quatsch seit der Erfindung des politischen Witzes“ und findet sich selbstredend nicht im Werk Tucholskys. Brexit, Trump und rechtsextreme Abgeordnete im Bundestag sind Realität.

Twitter-Bots machen Spaß

Ob diese Entscheidungen wirklich durch automatisierte Accounts entscheidend beeinflusst wurden, lässt sich vermutlich selbst dann nicht wissenschaftlich beweisen, wenn wie im Falle der US-Wahlen feststeht, dass es Zigtausende automatisierte Accounts mit Russland-Bezug gegeben hat.

Trotz aller Kontroversen: Das Programmieren von Twitter-Bots ist einfach und macht Spaß. Es ist schon erstaunlich, auf wie viele Parameter sich zugreifen lässt und auf wie viele verschiedene Weisen damit interagiert werden kann. Natürlich sollte man jede neue Funktion zunächst nur lokal auf der Konsole testen. Wenn der Bot einmal unbeabsichtigt Dutzende Tweets in wenigen Sekunden rausgehauen hat, ist es sehr mühsam, diese wieder einzeln zu löschen. Außerdem sollen andere Nutzer mit ungeplanten Retweets nicht belästigt werden. Sinnvoll ist es daher, den Bot zunächst mit einem anderen eigenen Account interagieren zu lassen, um die Funktionen zu testen.

Vorgefertigte Lösungen gehen schnell, sind jedoch meist sehr unflexibel. Mit dem eigenen Skript lässt beispielsweise auf jedes gefundene Zitat mit einer anderen Antwort reagieren. Das klingt dann etwas individueller und nicht ganz so automatisiert wie der Bot, der jedes Mal „Prost“ twittert, wenn ein anderer Nutzer das Wort gepostet hat. Aber wie sagte Tucholsky bekanntlich: „Wenn Twitter-Bots etwas änderten, wären sie längst verboten.“ Von daher wäre es zu begrüßen, wenn Twitter seine API nicht so schnell abschalten würde.

Hinweis: Der Artikel erschien zuerst am 1. Februar 2018 auf dem Computerportal Golem.de.

Powered by WordPress