#QFD, gab.ai und ähnliche Accounts auf Twitter blocken leicht gemacht

Wie man automatisiert rechte und rechtsradikale Accounts auf Twitter blocken kann, war ja schon einmal Thema eines Beitrags hier im Blog. In der Zwischenzeit kam von einigen Usern die Frage, warum man das nicht einfach mit Blocklisten macht, so wie bestimmte „Kreise“ das derzeit anscheinend auch machen. Das kann man natürlich tun, wenn man sicher ist, dass in den Blocklisten Accounts stehen, die man so auch blocken würde; nachteilig ist, dass diese Blocklisten pro Datei nur 5000 Einträge umfassen können (OK, das kann ein Luxusproblem sein). Leider kann man diese Listen nicht unmittelbar nachbearbeiten, weil sie nur numerische IDs enthalten, aber keine Twitter-Namen.

Alternativ kann man sich an einem Projekt wie blocktogether.org beteiligen.

Hier geht es aber um etwas anderes. Seit einigen Tagen versehen User mit bestimmten Ansichten ihre Accountnamen mit einem roten Kreuz (❌), dem Tag #QFD (QualitätsFilterDiskriminierung), verweisen auf die „Böhmermann-Liste“ oder sind gleich offen rechts (gab.ai). All jene (oder eine Teilmenge davon) kann man mit Hilfe von twidge wunderbar automatisiert blocken. Dazu bauen wir uns ähnlich wie im ersten Teil einen crontab-Eintrag wie folgt:

3 * * * * /usr/bin/twidge lsrecent -asu -e $HOME/bin/twidge-QFD.sh

und erzeugen ein Skript namens twidge-QFD.sh ungefähr folgenden Inhalts:

#!/bin/sh

# 1. update ID 
# 2. username 
# 3. suggested message-ID for mails
# 4. update text itself (complete?)

LOG="$HOME/tmp/twitblock.log"
USER="$2"

wget -q -O - https://twitter.com/${USER} | 
egrep -qi '<title>.*(❌|QFD|gab.ai|Böhmer.*list).*</title>' || exit 0 # nix zum tun. 
# else: 
echo twidge block "@$USER" >> $LOG
twidge block "@$USER" >> $LOG 2>&1 
# repeat if unsuccessful
if [ $? -gt 0 ] ; then
  sleep 2
  twidge block "@$USER" >> $LOG 2>&1
fi
# repeat if unsuccessful
if [ $? -gt 0 ] ; then
  sleep 2
  twidge block "@$USER" >> $LOG 2>&1
fi
exit 0

Möchte man spezifisch auch Replies auf eigene Tweets erfassen, kann man o.g. cron-Eintrag ergänzen durch einen zweiten, der twidge lsreplies aufruft.

Was macht nun dieses Skript? twidge liefert leider nicht direkt den Twitter-Namen eines Users („User Name“), nur den Handle („@username“). Daher holt sich das Skript einfach das Profil mittels wget und fischt mit egrep die Zeile <title>...</title> heraus. Wenn der Suchstring nicht in der Zeile vorkommt, tut das Skript weiter nichts; andernfalls blockt es den User mit dem entsprechenden Handle. Die Fehlerbehandlung erfolgt wie im vorigen Teil.

Erweitern oder einschränken kann man die Suchfunktion, indem man bei dem egrep-Aufruf Teile des regulären Ausdrucks weglässt oder ihn ergänzt (man egrep, siehe „Alternation“). Das rote Kreuz „❌“ ist ein Unicode-Character mit dem Zeichencode U+274C. Man kann es mit copy&paste aus Twitter holen oder von hier.

Happy blocking!

[Update] Das Ganze geht übrigens auch, wenn man sonst nur mit Windows unterwegs ist, mit einem Raspberry Pi und einem normalen Raspbian Linux drauf. Möglicherweise lässt sich das sogar mit einer FritzBox oder einem Linux-basierten NAS machen – Hinweise sind willkommen!

Gleich eine Anmerkung zur Kommentierung: allfällige Beleidigungen werde ich gepflegt ignorieren und nicht veröffentlichen. Das hat nichts mit Zensur zu tun, wie opferseitig gerne gejammert wird, aber eine Menge mit meiner Seite der Meinungsfreiheit — siehe auch hier:

 

Advertisements

Seehofer und sein „Masterplan“

Also liebe CSU, Ihr müsst das nochmal langsam erklären für einen Dummi wie mich. Auf der einen Seite hat Herr Seehofer einen Masterplan, den aber keiner kennt und der anscheinend im Giftschrank liegt, weil er Dinge enthält, die nicht im Koalitionsvertrag stehen und teilweise EU-rechtswidrig sein dürften. Ohnehin kann es in dem Plan aber auch nur um die Grenze zu Österreich gehen, denn nur dort gibt es abgestimmt mit der EU seit 2015 wieder Grenzkontrollen. Das bedeutet, es geht um weniger als ein Viertel der deutschen EU-Binnengrenzen, wo überhaupt kontrolliert werden _darf_.

Gleichzeitig trifft sich Markus Söder mit Sebastian Kurz und bespricht eben dieses Thema. Wenn es nun nur um die Grenze zu Österreich geht, sagt dann die CSU zu Österreich, wir machen das, weil wir denken, dass ihr eure Grenze nicht im Griff habt? Und obwohl die Bundespolizei meldet, dass es derzeit um ca. 5 Asylanten PRO TAG geht? Und das obwohl Österreich neben Ungarn und Italien eines der Länder ist, die am vehementesten ihre Grenzen schließen wollen und völlig auf der Linie der CSU sind?

Also ein Scheinproblem (5 Asylbewerber pro Tag) wird mit einer Scheinlösung (Dichtmachen der Grenze ausgerechnet und ausschließlich zu Österreich) bekämpft, und dafür riskiert man den Bruch der Union und der Regierung? Ist es ungefähr das? Vielleicht hat Herr Prantl ja recht mit dem Begriff „Theater“?

Frage an den Landesdatenschutzbeauftragten zum Thema freie Blogs

Viele kleine Blogger treibt die Frage um, wie sie die Vorgaben der DSGVO richtig umsetzen. Mancher fällt auf ie allgemeine Hysterie herein und schaltet sein Blog gleich ganz ab. Ich bin der Meinung, dass ich mit meiner in der Datenschutzerklärung (oben) beschriebenen Vorgehensweise nicht so falsch liegen kann, habe aber zu Sicherheit (und auf Anraten von Alvar Freude) den LDA des Landes Bayern folgendes gefragt:

Sehr geehrte Damen und Herren,

als Datenschutzkoordinator der Deutschen Telekom für den Bereich TelekomCLOUD Business Marketplace (https://cloud.telekom.de) bin ich für die Applikationssicherheit und den Datenschutz des Marktplatzes und der
angebotenen Applikationen zuständig. Seit Monaten beschäftigt mich in enger Abstimmung mit dem Konzerndatenschutz fast nichts anderes als die Umsetzung der DSGVO im Bereich inklusive der Erstellung und Veröffentlichung der neuen AV-Verträge für Geschäftskunden, sowie die Automatisierung des AV-Prozesses für die Zukunft. So gesehen bin ich also ein wenig vom Fach.

Was mich aber mangels belastbarer Quellen und angesichts der allgemeinen DSGVO-Hysterie etwas ratlos zurück lässt, ist mein eigenes privates Blog, das auf wordpress.com gehostet ist (https://hmilz.wordpress.com/about/). Es handelt sich um einen kostenlosen Account, und das Blog hat rein persönliche Inhalte und keine kommerzielle Ausrichtung. Es gibt keine Werbung, und ich erhebe und verarbeite selbst keine personenbezogenen Daten. Als freier Account habe ich auch keinerlei Möglichkeiten, irgendwas an der Erhebung personenbezogener Daten seitens WordPress selbst zu ändern oder Plugins zu installieren, mit denen ich da irgendwas steuern könnte. Die Kommentierung ist prinzipiell anonym möglich, allerdings bekomme ich die IP-Adresse von Gästen immer zu sehen. Kann ich mir aber nicht aussuchen – es gibt keine Einstellmöglichkeiten dafür.

Wenn ich der FAQ von Jan Albrecht (https://www.janalbrecht.eu/2018/05/dsgvo-haeufig-gestellte-fragen-haeufig-verbreitete-mythen/) folge, unterliege ich damit nicht der DSGVO.

Eine AV gibt es seitens WordPress seit ein paar Tagen, allerdings nur für die kostenpflichtigen Premium-Accounts. In dem Fall würde ich entweder draufzahlen oder ich müsste Werbung schalten zur Finanzierung, was doppelt kontraproduktiv wäre, denn dann müsste ich Tracker u.ä. installieren, um gegenüber Werbekunden die Reichweite zu messen und nachzuweisen. Das kann kaum im Sinne des Erfinders sein.

Daher verzichte ich auf all das und habe meine Position dazu in der Datenschutzerklärung unter https://hmilz.wordpress.com/about/ beschrieben. Die Frage an Sie: Liege ich damit richtig oder bin ich auf dem Holzweg? Falls letzteres: Was muss ich tun, um DSGVO-konform zu sein?

Vielen Dank!

PS: Wenn Sie nichts dagegen haben, würde ich diese E-Mail sowie Ihre Antwort darauf in einem Blog-Beitrag anonymisiert veröffentlichen, denn dieselbe Fragestellung schleppen derzeit viele kleine Blogger mit sich herum.

Mit freundlichen Grüßen,

Jetzt schaun wir mal. Update folgt.

 

Wie zum Himmel wird man seinen Plastikmüll los?

Dass die Menschheit dabei ist, den Planeten mit Plastik zuzumüllen, dürfte sich inzwischen allgemein herumgesprochen haben. Ein Beispiel dazu hier. Die Bilder kennt Ihr alle, die braucht man nicht zu wiederholen.

Die Welt retten kann ich nicht, aber wenigstens versuchen, selbst den Kunststoffverbrauch zu reduzieren und den unvermeidlichen Kunststoff bestmöglich zu entsorgen bzw. zu recyceln. Auf der Webseite des lokalen Entsorgungsunternehmens findet sich keine brauchbare Information, nur eine Marketingbroschüre („Umweltbroschüre“).  Also habe ich mal beim Landratsamt meines Kreises nachgefragt wie das denn so ist. Was passiert mit den Kunststoffabfällen im Landkreis. Die (anonymisierte) Antwort:

Ihre Anfrage zur Entsorgung von Kunststoffen wurde uns von der Gemeindeverwaltung XXXXXXX mit der Bitte um Beantwortung zugeleitet. Wie Sie bereits selbst ausführen, gehören alle Kunststoffverpackungen, die mit dem Grünen Punkt gekennzeichnet sind, in den Gelben Sack. Darüber hinaus stehen seit 01.09.2014 in allen Wertstoffhöfen im Landkreis Container, in denen Hartkunststoffteile aus PP/PA entsorgt werden können. Im Jahr 2017 wurden insgesamt 117,5 to Kunststoffe gesammelt, die der Wiederverwertung zugeführt wurden. Aus diesen (Alt-)Kunststoffen werden industriell verschiedene Gebrauchsgegenstände wie z. B., Sitzbänke, Gartentische, Mülltonnen usw. hergestellt.

Für alle übrigen Kunststoffe gibt es derzeit leider noch keine Wiederverwertungsmöglichkeit. Diese Kunststoffe können nur in der Restmülltonne entsorgt werden, die im Müllheizkraftwerk München thermisch verwertet werden. Für größere Kunststoffteile, die nicht in die Mülltonne eingegeben werden können, stehen im Wertstoffhof Sperrmüllcontainer zur Verfügung.

Mnja OK. Diese Antwort lässt mich etwas ratlos zurück (was aber nicht die Schuld des betreffenden Mitarbeiters ist, der sich sichtlich Mühe gegeben hat, die Frage ordentlich und individuell zu beantworten). Schon vor Jahren sind viele Verpackungshersteller aus dem Dualen System ausgestiegen. Ich kann mich nicht erinnern, wann ich zuletzt im lokalen
Supermarkt (Rewe, Penny, und andere) Verpackungen mit dem grünen Punkt gesehen hätte. Bei den Billigdiscountern wie Lidl und Aldi ist es sicher nicht besser, weil es da teilweise um Centbeträge je Verpackungseinheit geht.

Für den Gelben Sack bleibt da effektiv nicht viel übrig. Ich sehe zwar die Nachbarn immer fleißig sammeln und Berge gelbe Säcke an den Straßenrand stellen, aber wenn die og Einschätzung stimmt, dann landet das allermeiste davon, da ohne grünen Punkt, doch wieder in der Müllverbrennung (was wenigstens besser ist, als den Kram nach Asien zu verschiffen und dann dort ins Meer zu verklappen). Ein Placebo. Aber die Leute können sich gut fühlen, weil sie die Kunststoffe ja getrennt entsorgt haben.

Am Ende bleibt mir als „Verbraucher“ also nur, beim Einkauf auf möglichst kunststoffarme Verpackungen zu achten, aber wer in letzter Zeit mal im Supermarkt war, weiß, wie illusorisch das ist. Ohne öffentlichen (politischen) Druck auf Verpackungshersteller und Einzelhandel wird sich daran auch nicht viel ändern – wenn man sieht, wie bedenkenlos verpackte Waren gekauft werden. Da gibt es z.B. eine Fleisch- und Wursttheke im offenen Verkauf, und die Leute kaufen fleißig plastikverschweißte Ware aus dem Kühlregal, weil grad an der Theke eine Schlange ist. Ich werde beim nächsten Einkauf dort mal nachfragen, ob ich meine eigenen Gefäße mitbringen kann, aber ich befürchte, das wird nicht gehen wegen einschlägiger Hygienevorschriften.

Und da fällt der EU nicht mehr ein, als öffentlich über Strohhalme und Plastikbesteck nachzudenken. Plastik-Einkaufstüten mit einer Abgabe zu belegen. Dabei sind das nur Bruchteile des eigentlichen Problems. Eine Abgabe auf Folienverpackungen würde zumindest einen Anreiz schaffen, über Alternativen nachzudenken. Plastik ist schlicht zu billig in der Herstellung und die Hersteller brauchen sich nicht um die Entsorgung zu kümmern. Das müsste sich ändern, wenn sich was ändern soll.

 

Die Kerosin-Lüge – oder warum die Streifen künstlich sein MÜSSEN!

Schon seit einer geraumen Weile kursiert in Kreisen der Chemtrailer die Behauptung, dass seit ca. 2010 alle Flugzeuge auf neuartige Mantelstromtriebwerke umgerüstet würden, die keine Kondensstreifen mehr machten. Alle Streifen, die man am Himmel sieht, MÜSSTEN daher künstlich sein. Eine belastbare Erörterung, warum solche Triebwerke im Gegensatz zu früheren Modellen keine Kondensstreifen produzieren sollten, erspart man sich allerdings. Aus konstruktiver Sicht gibt es keinen vernünftigen Grund, das zu vermuten, und aus chemischer Sicht ebenfalls nicht, denn wenn man eine bestimmte Menge Kerosin verbrennt, dann entsteht unabhängig von der Konstruktion des Triebwerks immer dieselbe Menge Wasserdampf (und CO2), und dieser wird je nach Temperatur und Luftfeuchte in Reiseflughöhe immer zu einer Nebelbildung führen. (Von Versuchen im militärischen Sektor, Flugbenzin mit Zusätzen zu versehen, die die Kondensstreifenbildung reduzieren sollten, sehe ich hier mal ab – die spielen im zivilen Sektor keine Rolle.)

Schematischer Schnitt durch ein Mantelstromtriebwerk.

Der Trick ist in beiden Fällen: Man stelle eine unbewiesene Prämisse auf (eine, die der Zuhörer zumindest nicht ad hoc als Unfug erkennt – siehe auch Schopenhauers Eristische Dialektik, Kunstgriff Nr. 28 „Argumentum ad auditores“) und ziehe daraus eine völlig absurde Schlussfolgerung. Da der Zuhörer die Prämisse nicht gleich als falsch erkennt, wird er möglicherweise auch die Schlussfolgerung zunächst für wahr halten. Ähnliche Spielchen gibt es in der Mathematik, mit denen man „beweisen“ kann, dass 1 gleich 0 ist. Womit gezeigt wäre, dass ein bißchen Allgemeinbildung nicht schadet, um zu erkennen, ob man hinter die Fichte geführt wird.

Zudem müsste sich der geschätzte Zuhörer fragen, warum die Flugzeughersteller angeblich erst Triebwerke entwickeln, die keine Streifen mehr produzieren, um dann im nächsten Schritt dazu beizutragen, dass Chemtrails versprüht werden, was dann doch wieder sichtbar wäre. Vermutlich machen die das nur, um die Chemtrailer zu ärgern. Erklärbar ist das nur durch eine grenzenlose Dummheit entweder bei den Herstellern oder bei den Chemtrailern.

Irgendwann muss aber auch den Chemtrailern aufgegangen sein, dass sich das Argument mit den Mantelstromtriebwerken nicht aufrecht erhalten lässt, weil das zu offensichtlicher Unfug ist. Nun ist es aber für Anhänger solcher Weltbilder nötig, ihre bereits von vornherein feststehenden Schlussfolgerungen („es wird gesprüht“) aufrecht zu erhalten. Dabei spielt es keine Rolle, ob man sich dabei in die wildesten Widersprüche verwickelt. Wird man dabei erwischt, kann man sich immer noch darauf zurück ziehen, Katzen- oder Wolkenbilder zu posten oder den Kritiker zu beleidigen oder als völlig inkompetent darzustellen. Sehr beliebt auch die Aufforderung „google doch mal selber!!!“ oder „ich habe keine Zeit, dir das alles hier zu erklären!!!“.

Der neueste kreative Trick der Chemtrailer ist daher die „Kerosin-Lüge“, also die Behauptung, dass Flugzeuge in Wirklichkeit schon lange mit Freier Energie [TM] fliegen und gar nicht mit Kerosin, und dass daher die Streifen am Himmel künstlich sein MÜSSEN! Als Beispiel sei hier ein mehrteiliges ziemlich verwirrtes Video von Philipp Gölitz  Teil 1 und Teil 2 genannt (Vorsicht: das ist anschnallpflichtig!). (Dass Philipp auch mit der Flachen Erde liebäugelt und die Mondlandung anzweifelt, lasse ich jetzt mal so stehen.)

Der Kollege macht das gar nicht ungeschickt, indem er gleich die Anhänger der Freie-Energie-Verschwörung mit einbindet.  Auch umgeht er damit das Problem, dass die Tonnen von Chemtrail-Zusätzen ja auch irgendwie mit dem Flugzeug transportiert werden müssten, wodurch weniger Platz für Treibstoff oder Nutzlast bliebe.

Allerdings müsste er mir auch mal erklären, warum dann jeden oder jeden zweiten Tag ein langer Güterzug mit Flugbenzin (also Kerosin, Jet-A1) von München aus zum Flughafen MUC fährt und in meinem Wohnort vorbei kommt. Was machen die am Flughafen mit all dem Sprit, wenn er doch gar nicht benötigt wird? Wozu die Riesen-Tanks an den Flughäfen?

Flugbenzin-Tanklager am Flughafen München (Quelle: Google Maps)

Jajaaaa, könnte dann die Antwort kommen (auf die warte ich noch), in Wirklichkeit transportieren die ja die Chemtrail-Flüssigkeit damit. Dann würde ich aber zurück fragen, warum die Gefahrguttafeln (30-1223) klar auf Kerosin hinweisen. Daran orientieren sich schließlich Feuerwehr und THW bei Unfällen mit dem Gefahrgut. Darauf würde ich dann den Einwand erwarten, dass die Gefahrguttafeln ja nur Tarnung sind und die Feuerwehren in Wirklichkeit genau wüssten, was da drin ist.

OK, Feuerwehren und THW sind also auch Teil der Verschwörung. Und zwar ALLE. Gut, dass das jetzt geklärt ist.

Damit wären wir wieder bei dem Thema, wie lange sich solche Verschwörungen geheim halten lassen.

(Warum hypothetische Chemtrail-Zusätze wie Aluminium, Barium, Strontium unmöglich dem Sprit beigemischt sein können, habe ich hier diskutiert.)

[Update 03.05.2018]:

Gestern früh gegen 6 Uhr habe ich beobachtet, wie so ein Tankzug bei uns vorbei fuhr. Die Gefahrgutkennzeichen waren aber 30-1863 (Düsenkraftstoff). Das ändert aber nichts am obigen Thema.

Söder und sein Problem mit der AfD

Jetzt wird es interessant. Söders Problem stellt sich mir so dar: Die CSU-Wählerschaft vertritt in großen Teilen ähnliche Ansichten wie die der AfD, was Konservativismus und Fremdenfeindlichkeit angeht. Um diese Wählergruppen am Abwandern zur AfD zu hindern, muss Söder passende „Inhalte“ (einfache Wahrheiten) anbieten. Das muss er jedoch tun, ohne in die politische Nähe der AfD zu geraten. Anscheinend läuft der erste Abgrenzungsversuch darauf hinaus, dass er sich von Rechtsradikalen in der AfD distanziert (was richtig ist), ohne die im wesentlich gleichen einfachen Wahrheiten aufzugeben (was ziemlich verlogen ist).
Mal gespannt, ob er dafür den richtigen Zeitpunkt erwischt hat, oder ob das den Wählern bei der Landtagswahl 2018 nicht doch schon egal ist. Wenn er Pech hat, landet die CSU gut unter 40 Prozent und die AfD wird in Bayern auf blöd zweitstärkste Kraft.

Rechtsradikale und Nazi-Accounts auf Twitter blocken leicht gemacht

Wer sich eine Weile auf Twitter umtut, wird irgendwann bemerken, dass es eine ganze Menge Accounts gibt, die dem einzigen Zweck zu dienen scheinen, rechtsradikale Hetzparolen und Sifftwitter-Shitstorms zu verbreiten. Die Frage ist, wie man mit denen umgeht. Eine Möglichkeit wäre (was auch oft vorgeschlagen wird), dagegen zu halten und zu schreiben, wie man selbst die Welt sieht. Ich halte das für einen sehr optimistischen Ansatz, denn diese Leute sind teilweise so tief in ihren rechtsradikalen Wahnwelten unterwegs, dass Kritik sie nicht erreicht und sie einen bestenfalls einfach kommentarlos blocken. Kann aber auch sein, dass man tagelang mit Shitstorms zu kämpfen hat.

Die weniger optimistische, wenn auch irgendwo resignierte Weise des Umgangs wäre, diese Accounts zu blocken – nicht damit man sie nicht mehr sieht im Sinne von wegschauen, sondern schlicht um deren Reichweite zu reduzieren. Man muss sich dabei nichts vormachen – in ihren Filterblasen werden diese Leute genau so weiter hetzen wie vorher. Aber man kann als Einzelner kaum die Welt retten.

Nun machen sich einige Twitterer bereits die Arbeit, nahezu Tag und Nacht durch den ganzen ekelhaften brauchen Sumpf zu waten und Accounts zu sperren, bzw diese öffentlich zu machen. Als Beispiel sei hier @Tigerelch genannt, der mehrmals am Tag mit dem Hashtag #wegdamit immer so 5-8 Accounts zum Blocken anbietet. Diese Tweets sehen beispielsweise so aus. [ Update: Man muss, um die unten gezeigten Mimiken benutzen zu können, natürlich @Tigerelch folgen. ]

Jetzt kann man das natürlich in Twitter direkt und manuell machen, aber a) verpasst man dann möglicherweise einen großen Teil und muss dann mühsam nachkarten, und b) habe ich irgendwas mit Computern zu tun und bin ein fauler Hund. Also automatisieren. Ich habe das nun auf drei Wegen gemacht, die ich wechselweise im Probebetrieb am Laufen habe. Wer nun rein aus dem Windows-Umfeld kommt, kann sich wieder hinlegen – das funktioniert so alles nur auf Linux oder Unix (wobei ein Raspberry Pi mit Raspbian dafür schon reichen würde). Alle drei Varianten setzen twidge als Twitter-Kommandozeilenclient voraus.

Weg Nr. 1: Per E-Mail

[ Update: Das war der erste Gehversuch einer Automatisierung. Tatsächlich ist es eher eine Halbautomatisierung, denn es ist eine manuelle Aktion nötig. Immerhin aber nur eine und nicht deren 6 oder 8. Die Lösung ist überholt zugunsten von Nr. 2. ]

Dieser Web setzt einen eigenen Unix-Mailserver voraus, auf dem es auch Procmail gibt. Procmail wird so konfiguriert, dass er an Hand einiger Regeln bestimmte ankommende Mails erkennt und automatisiert verarbeitet. Der Regelsatz könnte einfacher nicht sein:

# pipe all mail from myself concerning Twitter blocks into twitblock.sh

:0 : twitblock.lock
* ^From:.*meine@email-adresse.de
* ^Subject:.*Tweet.*von.*digitaler.*Gutmensch
| twitblock.sh

Die erste Regel (die mit einem Stern beginnt) prüft, dass die Mail von mir selbst kommt – hier muss man seine eigene Adresse einsetzen. Die zweite Regel untersucht das Subject der Mail – das wird vom Mailclient (in meinem Fall K-9) automatisch eingesetzt.

twitblock.sh ist nun ein Shellskript, dass die Mail auf der Standardeingabe entgegen nimmt und auswertet:

#!/bin/sh

TEMP=$(mktemp $HOME/tmp/XXXXXX)
LOG="$HOME/tmp/twitblock.log"

date >> $LOG

grep ^https://t=2Eco/ | \
sed 's/=2E/./' | \
while read URL ; do
  USER=$(wget -q -O - $URL | sed -n 's/.*content="Die neuesten Tweets von .* (\(@[^)]*\)).*/\1/p')
  echo twidge block "$USER" >> $LOG
  twidge block "$USER" >> $LOG 2>&1
  if [ $? -gt 0 ] ; then
    sleep 2
    twidge block "$USER" >> $LOG 2>&1
  fi
  if [ $? -gt 0 ] ; then
    sleep 2
    twidge block "$USER" >> $LOG 2>&1
  fi
done

Im Wesentlichen liest hier der grep direkt von der Standardeingabe und sucht die Zeilen mit dem Twitter-URL-Verkürzer https://t.co/blafasel. Die MIME-Sonderzeichen (=2E ist ein Punkt) wandelt der erste sed um, und dann wird ein Link nach dem anderen mittels wget geholt und der eigentliche Benutzername gesucht. Letzteres macht der zweite sed mit dem regulären Ausdruck. Dann noch etwas Logging und der eigentliche Block mittels twidge. Leider bietet der twidge keine Option fürs Melden — wer also melden will, muss das nach wie vor von Hand tun.

Die Fehlerbehandlung am Ende ist dem Umstand geschuldet, dass curl, das von twidge intern benutzt wird, gelegentlich auf die Nase fällt mit Fehlermeldungen wie:

twidge: user error (Failure performing the request. [reason=CurlRecvError])

Egal, einfach nochmal versuchen, das stört nicht.

So, und jetzt brauche ich im Androiden-Twitter nur noch einen Tweet mir selber per Mail schicken. Rechts neben dem Tweet den kleinen Pfeil antippen, „Tweet teilen via“, Mailprogramm auswählen, und fertig. Nach wenigen Sekunden sind die aufgelisteten Accounts blockiert.

Etwas Vorsicht ist geboten: Da die Mailschnittstelle prinzipiell öffentlich ist, ist sie gegen Missbrauch nicht besonders gut geschützt. Beispielsweise könnten gewisse Kreise darauf kommen, die Schnittstelle zu nutzen, um einem Blocks unterzuschieben.  Wenn einem dass suspekt ist, kann man ggf. eine völlig obskure Mailadresse benutzen, die nirgendwo öffentlich bekannt ist, beispielsweise cbf08addffd99938d84afa28cdf1931d@mailserver.de. Das ist auch nicht 100% dicht, aber schon viel besser.

Weg Nr. 2: Zeitgesteuert per Skript

Eleganter ist natürlich die vollständige Automatisierung per Skript, das zeitgesteuert (z.B. einmal die Stunde) aufgerufen wird und die Timeline durchforstet nach passenden Tweets. Gegenüber der Maillösung hat das den Vorteil, dass es ohne jeden Benutzereingriff funktioniert und vergleichen mit der Mailschnittstelle nicht ohne weiteres zu hacken ist.

Dazu habe ich in meiner crontab folgenden Eintrag:

3 * * * * /usr/bin/twidge lsrecent -asu -e $HOME/bin/twidge-exec.sh

Twidge ist nämlich in der Lage, mittels lsrecent immer nur die letzten 20 Einträge zu holen, mit dem Schalter -a beliebig viele und mit -su nur die seit dem letzten Aufruf. -e schließlich übergibt einem externen Programm vier Optionen auf der Kommandozeile, unter anderem die Tweet-ID und den Benutzernamen des Twitterers. Und die werten wir in dem Skript twidge-exec.sh aus:

#!/bin/sh

# twidge command line options
# 1. update ID -> fetch with wget 
# 2. username 
# 3. suggested message-ID for mails
# 4. update text itself (complete?)

LOG="$HOME/tmp/twitblock.log"
mkdir -p ~/tmp/twidge-exec
cd ~/tmp/twidge-exec

# prüfen ob von Tigerelch, wenn nicht: beenden. 
if [ "$2" = "Tigerelch" ] ; then
  echo >> $LOG
  date >> $LOG
  # holen mit wget 
  echo "getting https://twitter.com/Tigerelch/status/$1" >> $LOG
  wget -q "https://twitter.com/Tigerelch/status/$1"

  # prüfen ob #wegdamit, wenn nicht, beenden. 
  egrep -q " content=.*#wegdamit" "$1" || exit 0

  # ok, seems legit. pick user names. 
  # then, iterate and report / block them
  sed -n 's#.*data-expanded-url="https://twitter.com/\(.*\)" class=.*#\1#p'< "$1" | \
  sed 's/".*$//' | \
  while read USER ; do
    echo twidge block "@$USER" >> $LOG
    twidge block "@$USER" >> $LOG 2>&1
    # repeat if unsuccessful
    if [ $? -gt 0 ] ; then
      sleep 2
      twidge block "@$USER" >> $LOG 2>&1
    fi
    # repeat if unsuccessful
    if [ $? -gt 0 ] ; then
      sleep 2
      twidge block "@$USER" >> $LOG 2>&1
    fi
  done

  # clean up 
  rm -f "$1"

fi

exit 0

Das Skript prüft zunächst, ob ein Tweet überhaupt von dem bewussten User kommt und tut ansonsten nichts. Wenn ja, prüft es noch, ob es sich um einen #wegdamit-Tweet handelt. Wenn ja, extrahiert es direkt aus dem rohen HTML die Links auf die zu blockenden Benutzeraccounts und blockt diese dann mittels twidge wie oben.

Diese Erkennung funktioniert nicht zu 100%, da @Tigerelch manche nicht-Blocker-Tweets auch mit #wegdamit kennzeichnet, aber bislang habe ich keine false positives gesehen.

Ja und dann tropft das Ding Stunde um Stunde dahin und blockt fleißig, was herein kommt.

Weg Nr. 3: per direktem Kommandozeilenaufruf

Nur um der Chronistenpflicht zu genügen und weil es so einfach ist, wollte ich noch einen direkten Aufruf per Kommandozeile auf meinem Linux-Desktop (Skript twidge-block.sh). Das Skript macht es sich einfach und extrahiert aus dem Aufruf

~$ twidge-block.sh https://twitter.com/Tigerelch/status/951052219662692352

den Namen des Twitterers und die Tweet-ID, und ruft dann das in o.g. Nr. 2 gezeigte Skript auf.

#!/bin/sh

# https://twitter.com/Tigerelch/status/951052219662692352

UPDATEID=$(basename "$1")
USER=$(basename $(dirname $(dirname "$1")))

$HOME/bin/twidge-exec.sh $UPDATEID $USER 1 tata

Den Link zum Tweet bekommt man in der Weboberfläche durch Klick auf den kleinen Pfeil rechts, dann „Link zum Tweet kopieren“. Auf der Kommandozeile einfügen, fertig.

 

Abschließend noch die Überlegung, dass das schickste natürlich eine Art zentraler Datenbank mit allen zu sperrenden Accounts wäre. Im Prinzip täte es auch eine per Webserver abrufbare Textdatei (ja OK, ich bin da old-school). Alternativ könnte man die Export-Import-Schnittstelle von Twitter selbst nutzen, die wohl schon geahnt haben, dass das mal ganz nützlich sein könnte. Die muss man mit einer CSV-Datei füttern. Ideas welcome!