Bad Bots blocken oder nicht?

Janush schrieb:
Wie hast du deinen Botschutz konzipiert?
Kurz gesagt: individuell. Ich habe die Requests getrackt und in den Daten nach Mustern gesucht. Anfangs alle Daten von getallheaders() und Daten von $_SERVER sowie Date/Time, später dann nur noch ausgewählte Daten. Mit den Mustern habe ich dann Filter programmiert. Die bei mir bereits vorhandenen Filter fürs Tracking habe ich auf die Requests angewandt. Dazu gehören die IP-Listen der Big 5 Cloud-Anbieter, die diese selbst anbieten und die ich zu MMDB Files konvertiert habe, sowie ASN MMDB Files.

Zuletzt (bis Vorgestern) konnten somit viele Bad Bots vorm Crawlen/Scrapen gehindert werden, aber bei den schlimmeren der erste Request nicht, sondern nur die darauf folgenden, und das bisher ohne Verwendung einer Tracking-Database, mittels der Muster bei wiederkehrenden Requests erkannt werden können. Ein effektiver Erfolg ist also auch mit einfachen Mitteln, ohne Captcha und ohne POW und ohne Cookies möglich.

Mein Bad Bot Blocker basiert auf PHP. Die Requests bereits am Server-Eingang blocken ist bei Webhost nicht drin. Mittels .htaccess wäre ein Blocken auch möglich, aber ist zu umständlich. PHP taugt ganz gut dafür. Die Request an sich können so zwar nicht geblockt werden, aber der Zugriff auf den Content.

Janush schrieb:
Hatten wir schon über Cloudflare und so Zeug gesprochen?
Ja. Es gibt wohl derzeit zwei Anbieter: Cloudflare (Pay) und Anubis (Free). Meine Ansage zu Anubis ist in #58 verlinkt.

Mit Formulardaten ... Das betrifft welches Angriffsszenario genau? Die Requests kommen auch mit Blocken per PHP am Server an und sind im HTTP Log und Access Log gespeichert. Wenn du wie bei mir den Content blockst, kommen sie an das Formular nicht ran.

Vorhersagen für die Zukunft, oder ein Bad Bot Blocker für alle Zeiten gibt es nicht. Siehe den ChangeLog bei Anubis. Da wurde der Core schon mehrmals angepasst. Also Bad Bot Blocker programmieren und Füße hoch ist nicht drin. Man muss stetig die Requests checken und nachbessern.

Zuviel an Details meines Bad Bot Blockers will ich nicht verraten, was aber auch den Umstand betrifft, dass er sehr individuell ist und exakt auf meine Websites angepasst wurde. Das kann nicht 1:1 auf alle Websites angewandt werden.

Wie schon gesagt: Tracke die Requests. Suche darin nach Mustern. Blocke per Muster.

Aber ... habe aktuell mit starkem Besucherrückgang zu tun und weiß noch nicht woran das liegt. Es könnte eventuell daran liegen - was nicht unwahrscheinlich ist - dass die Bad Bots komplett abgesprungen sind, weil sie in den letzten Tagen weiterhin massiv aktiv waren, aber 0 kb Content gesrapt haben. Es könnte sein, dass die verbliebene Besucherzahl alles Humans sind. Bei Experimenten vor über einem Jahr beim Thema "Tracking filtern" war die Besucherzahl auch massiv gesunken, aber diese waren zu fast 100 % alles Humans.

Das würde eventuell auch eine Vermutung matchen, die wiederum auch die Formular-Angriffe betreffen. Es gab die Vermutung, dass die Bad Bots das Matomo-Tracking bedienen, indem diese die fetch() Requests an Matomo senden. Ob das direkt oder über die Webpages gemacht wird, war nicht herauszufinden. Aber im Matomo Tracking gabs Visits, die nur aus einem getrackten Event bestanden, ohne das der Pageview getrackt wurde. Bei dir könnte es also sein, dass die Webpages mit den Formularen gar nicht aufgerufen werden, sondern die GET/POST direkt gesendet werden. Wie das zu vermeiden wäre weiß ich auch nicht. Eventuell alles auf JS DOM umprogrammieren, dass die Formulare nicht hardcoded, sondern mit JS generiert werden.
Ergänzung ()

Ein guter Einstieg ist, die Block-Regeln vom Matomo Plugin TrackingSpamPrevention im eigenen Blocking zu verwenden. Das verwendet auch die Cloud-IP Listen der Big 5 Clouds. Zudem verwendet es die ASN MMDB und blockt per ASN Organisation Name.
https://github.com/matomo-org/plugin-TrackingSpamPrevention/
→ Configuration.php (Liste der Namen).
Die wird stetig up to date gehalten.
 
Zuletzt bearbeitet:
Wie gesagt, mein Ziel ist ein anderes und lässt sich leichter erreichen als dein Ziel. Mein Content hängt hinter einer PayWall und die gilt es abzusichern.

Die Formulare werden natürlich mit Post-Requests direkt zugespammt. Aber die kommen nicht durch ... das sind die leichtesten Angriffe, die man abwehren kann. Captcha nicht geladen? Post Request abgelehnt. Und wenn sie sich am Captcha versuchen, steigt der Aufwand mit jedem mal an. Für echte Besucher ist das nicht spürbar.

Was mit noch nicht ganz klar ist, ist warum Spammer Newsletter Signups ins Visier nehmen. Da kann man keine Daten mitschicken ... nur sinlose E-Mail-Adressen reinballern.

Ich habe deinen Text mal von ner KI analysieren lassen, einfach weil ich nicht bei allen Punkten in der Materie stecke. Die hat deinen Ansatz gelobt, aber den offensichtlichsten Punkt nochmal genannt.

###
„Effektiver Erfolg auch mit einfachen Mitteln" stimmt für die heutige Bot-Population, nicht als Prinzip. Gegen Residential-Proxy-Netze mit headless Chrome hat der Ansatz keine Antwort: richtige ASNs, richtige Header-Reihenfolge, richtige TLS-Signatur. Das ist inzwischen billig zu mieten. Das Verfahren erkennt die faulen Scraper zuverlässig — und genau die richten den geringsten Schaden an.
###

Ich denke gegen sowas kommt man nicht an. Da bleibt dann nur noch ne PayWall.

Was Cloudflare angeht, kannst du es auch kostenlos nutzen. Zwar mit Einschränkungen, aber den KI Botschutz gibt es trotzdem schon in der kostenlosen Variante.
 
... am besten:
  • programmieren eines eigenen PHP Trackings.
  • die Tracking-Daten in einer sortierbaren Table visualisieren.
  • manuelle Mustererkennung.
  • programmieren einer eigenen Firewall mit Verwendung der Muster.
  • stetiges prüfen des Trackings nach Mustern → Muster zur Firewall hinzufügen.

Das Tracking kann um ein JavaScript Event Tracking (API) erweitert werden.
Das Visualisieren der Tracking-Daten kann nach Belieben erweitert werden.

Von Cloudflare kommen tatsächlich Humans.

Ich muss mich derweil erst einmal daran gewöhnen, dass bei meinen Websites nur circa 50 % der Websitesbesucher tatsächlich Humans waren und nun sind. Also es waren wohl 50 % Bad Bots, die nun seit 2 Tagen weggefallen sind (... und der Traffic sinkt auch, nachdem er bereits um 80 % gesunken war). Wenn es die Möglichkeit gibt, dass die Bad Bots meine Websites in eine Blacklist aufgenommen haben, dann scheint dem so. Scheinbar, wie bei Anubis zu lesen ist, haben die Bad Bots Ressourcen-Probleme und müssen effizient sein. Sinnloses Crawlen und Scrapen können sie sich nicht leisten. Kostet scheinbar alles Geld.

Die 50 % weniger Websitesbesucher können 2 Ursachen haben, was die Sache uneindeutig macht.
1.) ein (neuer) Filter in der/meiner Firewall.
2.) Google Core Update.

1. trifft zu, da die Anzahl der Besucher der Anzahl entspricht, die es bei meinen Experimenten im Tracking filtern gab. Das war ähnlich aufgebaut, betraf aber nur das Tracking.

zu 2. hier: Google Core Update
 
Das Forum hier hat ein technisches Problem: Siehe Timestamp deines und meines letzten Beitrags (gleich). Ich habe ihn erst jetzt durch Zufall gesehen.
Janush schrieb:
Ich habe deinen Text mal von ner KI analysieren lassen
"und genau die richten den geringsten Schaden an". Die Beobachtungen sagen etwas anderes dazu aus. Mit den einfachen Mitteln, mit denen ich begonnen habe, konnte der Traffic um 80 % reduziert werden. Zudem konnten Bad Bot Angriffe mittels Mustererkennung abgewehrt werden.

Ansonsten stimmt die Aussage: "Das ist inzwischen billig zu mieten. Das Verfahren erkennt die faulen Scraper zuverlässig". Die billigen Bad Bots sind einfach zu blocken. Die teuren weniger bis gar nicht. Aber die billigen sind die in der Überzahl. Die teuren sind nur wenige. Da sowieso nie alle Bad Bots geblockt werden können, kommt es drauf an, ob es einem genügt diese "manuell" im Tracking zu erkennen und mittels Kopfrechnen auszuschließen. Ein 100 % sauberes Tracking und Traffic ist verschwendete Zeit. Paretoprinzip.

Wenn du den Traffic bei dir trackst, wirst du beim Analysieren so einiges seltsames entdecken.

Cloudflare oder Anubis will ich vermeiden, weil es externer Kram ist. Solange ich die Sache auch mit eigener Firewall lösen kann, zumal bei sowas sowieso individuelle Lösungen effektiver sein sollen.

Im Bad Bot War hats mich nun selbst erwischt: Schreibfehler im Code bei einem der Filter. Daher 50 % weniger Besucher. Also Entwarnung diesbezüglich.

Im nächsten Schritt will ich einiges ausprobieren, experimentieren.

Wie schon im Thema zu Anubis erwähnt, bei dem es darum geht die Kosten der Bad Bots zu erhöhen, habe ich versucht mittels KI einen POW zu erstellen, der CPU und RAM Last erzeugt. Aber das ist gar nicht so einfach. Bisher habe ich noch kein funktionierendes Skript. Der Ansatz von Anubis ist, die Bad Bots zu verlangsamen, wodurch sie weniger scrappen, aber teurer in der Unterhaltung werden.
 
Zurück
Oben