Seit einigen Monaten treibt der Semalt Crawler auf fast allen meiner Webprojekte sein Unwesen – und wie es aussieht, ist er gekommen um zu bleiben. Für mich gibt es nur einen Grund, warum ein Crawler bei jedem Besuch einen Referrer hinterlässt: Referrer-Spam.

Die Jungs wollen offenbar, dass betroffene Webmaster sich fragen, was dahinter steckt  – und dann deren Seite besuchen. Dort wird einem dann angeboten, deren SEO-Tool testen. Ein netter Trick um relevanten Traffic auf die Website zu bekommen.

Warum ich skeptisch bin

Wer im Internet nach Semalt sucht, findet wenig schmeichelhaftes. Mittlerweile beschäftigen sich dutzende Blogposts mit dem nervigen Crawler-Spam, das Thema wird in Foren durchgekaut und auf der Facebookseite der Firma tobt seit Wochen ein Shitstorm, der von den Betreibern mit den immer gleichen Floskeln beantwortet wird.

Ich hab mal ein bisschen recherchiert und folgendes zu Tage gefördert:

  • Semalt bietet ein SEO-Tool an
  • Die Firma sitzt (möglicherweise) in der Ukraine
  • Die Domain nutzt einen Anonymisierungsdienst
  • Wer das Tool dauerhaft nutzen will, braucht eine Kreditkarte
  • Der Bot ignoriert die robots.txt

Fassen wir mal zusammen: SEO, Osteuropa, Identitätsverschleierung, KreditkarteIgnorieren von Regeln – sorry, ohne mich.

Semalt bietet zwar die Möglichkeit, seine Website angeblich vom Besuch durch den Crawler auszuschließen, aber ganz ehrlich, bei diesen Voraussetzungen fehlt mir jedes Vertrauen in die Firma. Da gebe ich sicher keine Daten zu meinen Domains ein. Bislang habe ich auch von niemandem gehört, dass die Besuche durch den Spambot dadurch weniger geworden wären.

Stattdessen habe ich nach einer Möglichkeit gesucht, den Semalt Crawler zu blockieren und bei Logorrhoea.net gefunden. Der Post von Logorrhea geht auch noch etwas tiefer ins Detail und auch die Kommentare sind interessant.

Hintergründe zu Semalt & Soundfrost

Es gibt mittlerweile Spekulationen, dass das eigentliche Ziel der aktuellen Refererspam-Welle der Aufbau von Backlinks ist. Offenbar gibt es eine ganze Menge öffentlich zugänglicher Serverlogs, die von Google auch ausgelesen werden. Manche Webseiten führen auch ihre Top-Refererlinks auf. Durch den breit gestreuten Einsatz dieser Methode werden demnach über diese Logs jede Menge Backlinks erstellt.

Ich kann mir zwar nicht wirklich vorstellen, dass in der Post-Pinguin Welt derartige Backlinks noch einen positiven Effekt haben – aber Pferd/Apotheke – ihr wisst schon…

Gleichzeitig gibt es Hinweise, dass Semalt dabei sein könnte, über die Verbreitung von Trojanern ein weltweites Botnetz aufzubauen. Erste Meldungen hierzu stammten von virustotal.com, die ermitteln konnten, dass Semalt möglicherweise eine Software namens Soundfrost verwendet um Computer zu infizieren. Im bereits verlinkten Nabble-Blog wird das genauer untersucht.

Die IT-Sicherheitsfirma Incapsula schreibt:

Our data shows that, using this malware-infested utility, Semalt has already infected hundreds of thousands of computers to create a large botnet. This botnet has been incorporated in Semalt’s referrer spam campaign and, quite possibly, several other malicious activities.

So blockt ihr den Semalt-Crawler

Hinweis

Der Code wurde durch Vorschläge und Tipps mehrfach erweitert. Die aktuelle Version findet ihr weiter unten im Update 3!

Tragt in die .htaccess folgende Zeilen ein:

# block visitors referred from semalt.com
 RewriteEngine on
 RewriteCond %{HTTP_REFERER} semalt.com [NC]
 RewriteRule .* - [F]

Eine nette Variante ist auch, den Crawler direkt zu Semalt zurückzuschicken:

# block visitors referred from semalt.com
RewriteEngine on
RewriteCond %{HTTP_REFERER} semalt.com [NC]
RewriteRule (.*) http://www.semalt.com [R=403,L]

Das sollte es dann auch schon gewesen sein.

Hier noch ein paar weiterführende Links:

Erweiterung des Codes

Im Lauf der Zeit haben sich in den Kommentaren viele hilfreiche Tipps und Anregungen gesammelt. Zwei davon möchte ich hier nochmal gesondert erwähnen – mit dem Hinweis, dass sie ungetestet sind.

Von Cash kam folgende Erweiterung, der mit etwas Glück gleich alle drei aktuell lästigen Referrer-Spammer von Eurer Website fernhält:

RewriteEngine on
RewriteCond %{HTTP_REFERER} ^http://.*savetubevideo.com/ [NC,OR]
RewriteCond %{HTTP_REFERER} ^http://.*kambasoft.com/ [NC,OR]
RewriteCond %{HTTP_REFERER} ^http://.*semalt.com/ [NC]
RewriteRule ^(.*)$ – [F,L]

Diesen Code könnt ihr statt dem Ursprungscode verwenden – also komplett austauschen. Das schöne daran: Er ist beliebig erweiterbar indem ihr weitere Spambots nach gleichem Muster anfügt. (In der letzten Zeile kein OR mehr anfügen). Am besten schreibt ihr den Code möglichst weit oben in die .htaccess, damit er frühzeitig greift.

Von Maximusweb kam der Tipp, wie man zusätzlich noch Besuche über Proxies blockieren kann. Achtung: Er blockiert nicht Semalt, Kambasoft & Co! Der Code ist ebenfalls ungetestet und sollte mit Bedacht angewendet werden – immerhin gibt es auch einige gute Gründe, Proxies einzusetzen.

RewriteEngine on
RewriteCond %{HTTP:VIA} !^$ [OR]
RewriteCond %{HTTP:FORWARDED} !^$ [OR]
RewriteCond %{HTTP:USERAGENT_VIA} !^$ [OR]
RewriteCond %{HTTP:X_FORWARDED_FOR} !^$ [OR]
RewriteCond %{HTTP:PROXY_CONNECTION} !^$ [OR]
RewriteCond %{HTTP:XPROXY_CONNECTION} !^$ [OR]
RewriteCond %{HTTP:HTTP_PC_REMOTE_ADDR} !^$ [OR]
RewriteCond %{HTTP:HTTP_CLIENT_IP} !^$
RewriteRule ^(.*)$ – [F]

Diesen Code würde ich ebenfalls recht früh in der .htaccess verwenden.

Ganz herzlichen Dank allen, die sich so rege mit Ratschlägen, Fragen und Hinweisen per Diskussion oder E-Mail beteiligt haben.

Der ultimative .htaccess-Eintrag

Semalt, Kambasoft und kein Ende. Heute habe ich noch zwei spannende Entdeckungen gemacht: Zum einen hat Joram van den Boezem im Nabble Blog sich mit den unschönen Methoden von Semalt genauer auseinandergesetzt, zum anderen habe ich das Script von Cash noch mal um etliche andere unangenehme Domains erweitert. Bereit? Festhalten! Hier kommt es.

.htaccess code:

# Block Semalt related referrer spam
RewriteEngine on
RewriteCond %{HTTP_REFERER} ^http://.*youtubedownload.org/ [NC,OR]
RewriteCond %{HTTP_REFERER} ^http://.*softomix.ru/ [NC,OR]
RewriteCond %{HTTP_REFERER} ^http://.*zazagames.org/ [NC,OR]
RewriteCond %{HTTP_REFERER} ^http://.*youtubedownload.org/ [NC,OR]
RewriteCond %{HTTP_REFERER} ^http://.*vapmedia.org/ [NC,OR]
RewriteCond %{HTTP_REFERER} ^http://.*soundfrost.org/ [NC,OR]
RewriteCond %{HTTP_REFERER} ^http://.*joingames.org/ [NC,OR]
RewriteCond %{HTTP_REFERER} ^http://.*videofrost.net/ [NC,OR]
RewriteCond %{HTTP_REFERER} ^http://.*softomix.net/ [NC,OR]
RewriteCond %{HTTP_REFERER} ^http://.*feedouble.net/ [NC,OR]
RewriteCond %{HTTP_REFERER} ^http://.*backgroundpictures.net/ [NC,OR]
RewriteCond %{HTTP_REFERER} ^http://.*joinandplay.me/ [NC,OR]
RewriteCond %{HTTP_REFERER} ^http://.*videofrost.com/ [NC,OR]
RewriteCond %{HTTP_REFERER} ^http://.*srecorder.com/ [NC,OR]
RewriteCond %{HTTP_REFERER} ^http://.*softomix.com/ [NC,OR]
RewriteCond %{HTTP_REFERER} ^http://.*openmediasoft.com/ [NC,OR]
RewriteCond %{HTTP_REFERER} ^http://.*openfrost.com/ [NC,OR]
RewriteCond %{HTTP_REFERER} ^http://.*myprintscreen.com/ [NC,OR]
RewriteCond %{HTTP_REFERER} ^http://.*musicprojectfoundation.com/ [NC,OR]
RewriteCond %{HTTP_REFERER} ^http://.*feedouble.com/ [NC,OR]
RewriteCond %{HTTP_REFERER} ^http://.*fbfreegifts.com/ [NC,OR]
RewriteCond %{HTTP_REFERER} ^http://.*extener.com/ [NC,OR]
RewriteCond %{HTTP_REFERER} ^http://.*embedle.com/ [NC,OR]
RewriteCond %{HTTP_REFERER} ^http://.*savetubevideo.com/ [NC,OR]
RewriteCond %{HTTP_REFERER} ^http://.*kambasoft.com/ [NC,OR]
RewriteCond %{HTTP_REFERER} ^http://.*o-o-6-o-o.com/ [NC,OR]
RewriteCond %{HTTP_REFERER} ^http://.*bestwebsitesawards.com/ [NC,OR]
RewriteCond %{HTTP_REFERER} ^http://.*buttons-for-website.com/ [NC,OR]
RewriteCond %{HTTP_REFERER} ^http://.*best-seo-offer.com/ [NC,OR]
RewriteCond %{HTTP_REFERER} ^http://.*best-seo-solution.com/ [NC,OR]
RewriteCond %{HTTP_REFERER} ^http://.*buttons-for-your-website.com/ [NC,OR]
RewriteCond %{HTTP_REFERER} ^http://.*7makemoneyonline.com/ [NC,OR]
RewriteCond %{HTTP_REFERER} ^http://.*semalt.com/ [NC]
RewriteRule ^(.*)$ – [F,L]

Analytics bietet Filterfunktion an

Gute Neuigkeiten: Google Analytics bietet seit neuestem die Möglichkeit, bekannte Bots und Spiders automatisiert zu filtern. Das ganze lässt sich einfach per Checkbox an- und abschalten.

Und das geht so:

In Google Analytics findet ihr die Funktion unter Verwalten - data-lazy-srcset=

Einstellungen der Datenansicht.“ width=“658″ height=“212″ /> In Google Analytics findet ihr die Funktion unter Verwalten -> Einstellungen der Datenansicht.

Hier müsst ihr folgendes Häckchen setzen:

Alle Treffer von bekannten Bots und Spidern ausschließen.

Alle Treffer von bekannten Bots und Spidern ausschließen.

Das ganze hat aber zwei Schwachstellen:

  1. Es werden nur Treffer von bekannten Bots und Spidern ausgeschlossen.
    (Google reagiert da etwas träge…)
  2. Das gilt nur für künftige Zugriffe. Die alten Statistiken bleiben also versaut.

Damit könnt ihr künftig auch Semalt und Kambasoft aus den Statistiken kicken. Ich stelle das mittlerweile bei jedem Kundensystem so ein.

Lösung für Piwik

Bis vor kurzem konnte man durch Anpassungen in der Datei „piwik/config/global.ini.php“ Referer Spam eigenständig blockieren. Nun hat Piwik Community entschlossen, Referer Spam massiv entgegenzutreten:

Seit Version 2.13.0 lädt Piwik eine eigene Blacklist, die auf GitHub von der Community gewartet wird.

Piwik verspricht vollmundig:

New spammers are continuously detected and added to Piwik’s blacklist on each update. […] If you use Piwik and keep it up to date, you do not need to do anything.

Sollte hier ein Spammer fehlen, könnt ihr die Liste sogar selbst erweitern oder eine neue Issue eröffnen und die Änderungen von den Admins einpflegen lassen. Eine nette Idee. Ob das aber wirklich so gut funktioniert wie geplant, werden die Zeit und eure getracken Daten zeigen…

Lösung für Analytics

Es gibt ja mittlerweile eine Menge Bots, die gar nicht auf der Seite selbst aufschlagen, sondern sich direkt bei Google Analytics eintragen. Die könnt ihr leider per .htaccess nicht ausschließen, weil sie eben euren Server überhaupt nicht mehr besuchen.

Auch dafür gibt es eine schicke Lösung. Ihr könnt die Segment-Funktion nutzen, um unliebige Referrer aus den Statistiken zu filtern. Die Daten sind zwar noch da, aber sie stören eure Analyse nicht mehr. Das ganze ist superschnell erweiterbar. Und das Beste: Das klappt auch toll mit euren bisherigen Statistiken!

Ein-Klick-Lösung

Großartig: Google Analytics ermöglicht es, Segmenteinstellungen einfach per Link weiterzugeben. Damit entfällt für Euch die Handarbeit. Ich habe hier schon mal was eingerichtet. Damit habt ihr eine tolle Basis, die ihr nach eigenen Wünschen erweitern oder reduzieren könnt!

Diesen Tipp habe ich übrigens im Blog von Frank Laus gefunden.

Wenn ihr die Ein-Klick-Lösung nicht nutzen wollt, findet ihr im Folgenden die komplette Anleitung zum nachbauen.

Schritt 1 – Segment erstellen

Ihr geht in Google Analytics zu Verwalten -> Segmente.

Zuerst erstellt ihr ein neues Segment.

Zuerst erstellt ihr ein neues Segment.

Schritt 2 – Segment einrichten

  • Ihr erstellt ein neues Segment und benennt es sinnvoll.
  • Als Bedingung wählt ihr „Mediumstimmt genau übereinreferral
  • Schließlich wählt ihr „Quelleenthält – …“
  • Nun fügt ihr alle Störenfriede hinzu.
    Es genügen auch Teilbegriffe. Ihr müsst also nicht einmal die gesamte URL einfügen.
Als Bedingung wählt ihr Referral und richtet hier alle Spambots als Quellen ein.

Als Bedingung wählt ihr Referral und richtet hier alle Spambots als Quellen ein.

Schritt 3 – Segment anzeigen lassen

Künftig könnt ihr bei allen Ansichten einfach das neue Segment anwählen und hat saubere Analysedaten!

Saubere Analysedaten dank Segmentierung.

Saubere Analysedaten dank Segmentierung.

Viel Erfolg! Und lasst mich wissen, welche Erfahrungen ihr mit diesen Tipps gemacht habt.