XRumer knackt reCaptcha

07 03 2011

Scheiß SPAM-Arschgeigen, die ihr Geschäft vornehm Blackhat-SEO nennen. Ekelerregendes Pack. Seit einiger Zeit bekomme ich täglich ein bis zwei Spamkommentare hier im Blog, die es offenbar an meinem reCaptcha vorbei schaffen. Die bekommt ihr nicht zu sehen, weil sie allesamt in der Moderierungsfunktion hängen bleiben, wenigstens das funktioniert. Meine erste Befürchtung hat sich aber leider bewahrheitet: SPAM-Tools können reCaptcha knacken. Ein Spamkommentar brachte mich auf die richtige Fährte, ein Tool mit dem Namen XRumer wird in grauen Kanälen verkauft und wirbt ganz unverhohlen mit reCaptcha-Knack-Fähigkeiten:

With XRumer Elite will be possible to pass automatically such popular protections as ReCaptcha and DLE-captcha (ReCaptcha is used on more than 30% of resources; same as DLE-captcha become very popular). XRumer Elite can bypass 7 new most popular graphical protections.

Die Software kostet 570€ und es bedarf einer gewissen Planung, um damit erfolgreich Suchmaschinen-SPAM platzieren zu können. Was aber bedeutet das für mein Blog und seine Kommentarfunktion? reCaptcha als das einzig erfolgversprechende grafische Captcha fällt also aus, noch stärkere, mithin also auch noch schlechter lesbare Captchas kommen keinesfalls in die Tüte. Andererseits regnet es ganz ohne Captcha noch viel mehr Spamkommentare. Dass Kommentare moderiert werden, also nie öffentlich erscheinen, nimmt mich offenbar nicht aus der Opferliste und macht mir nicht ganz wenig Arbeit.

Nun bestünde die Möglichkeit, Kommentare in meinem Blog ganz abzuschalten, was gemessen am Verhältnis von Kommentaren zu Einträgen sogar verschmerzbar wäre (ich habe weniger Kommentare als Beiträge und lege auch keinen Wert auf Kommentare). Aber ein Blog ohne Kommentarfunktion ist irgendwie kein Blog und außerdem wäre das eine Kapitulation vor dem Spammer an sich, dafür bin ich noch zu stolz. Ich werde also vorerst weiter die Moderations-Benachrichtigungsmails ignorieren und abwarten, was sich an der Front tut.

Scheiß SPAM-Arschgeigen, die ihr Geschäft vornehm Blackhat-SEO nennen. Ekelerregendes Pack.


Kleines Google Kalender Backup Script in PHP

01 03 2011

Seit ich ein Android-Smartphone besitze, verwalte ich meine Termine aus Bequemlichkeit im Google Kalender. Das funktioniert prima und Google schützt auch gut vor versehentlich gelöschten Einträgen, aber um Backups möchte ich mich trotzdem zusätzlich noch mal selber kümmern. Das klappt auch recht einfach, weil Google von allen angelegten Kalendern .ics-Dateien unter einer geheimen privaten URL anbietet. Die muss man nur regelmäßig herunterladen und abspeichern. Eine kurze Suche fördert dieses Shell-Script ans Tageslicht, das ich flugs nach PHP portiert habe. PHP deswegen, weil Shellscripte unter Windows nicht funktionieren und ich Windows-Batch-Scripte unglaublich kompliziert finde. Ein PHP Interpreter ab Version 5.3 für Windows muss nur heruntergeladen und mit zwei kleinen Änderungen an der php.ini angepasst werden, fertig ist die Laufzeitumgebung. Keine Installation systemweiten Krams, portabel auf allen Plattformen, läuft sogar auf jedem normalen Webspace. Zugriff auf PHP hat also im Grunde so ziemlich jeder. Davon abgesehen kenne ich mich mit PHP am besten aus.

Nun zum Script selbst. Der spannende Teil sind folgende cURL-Anweisungen, alles drumherum kümmert sich um Konfiguration und die Schleife über alle Kalender.

$ch = curl_init($url);
$fh = fopen($filename, 'w');
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2); // only needed with https:// URLs
curl_setopt($ch, CURLOPT_SSLVERSION, 3); // only needed with https:// URLs
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // only needed with https:// URLs
curl_setopt($ch, CURLOPT_FILE, $fh);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_exec($ch);
curl_close($ch);
fclose($fh);

Howto: Google Calendar PrivatadresseWenn man die Standard-URLs benutzt, die Google einem als private Adresse gibt, braucht man nicht mal die drei SSL-Einstellungen. Für mich kommt ein Download ohne SSL aber nicht in Frage, dazu muss man nur das Protokoll der privaten Kalender URLs auf https:// umstellen. Diese URLs bekommt man in den Kalendereinstellungen des jeweiligen Kalenders, wie im Screenshot zu sehen ist.

Das vollständige Script inkl. Readme.txt gibt es hier, die Lizenz ist cc-by-sa. Unter Windows lässt sich das leicht als geplanter Task einrichten. Ich habe dazu einen Ordner in den Eigenen Dateien erstellt, das angepasste Script hinein und eine aktuelle PHP 5.3 Distribution in den Unterordner php gelegt. Im Taskplaner rufe ich nun sonntags die dortige php-win.exe auf und übergebe den vollen Pfad des Backup-Scripts als einzigen Parameter. Das Script erzeugt stets einen Unterordner mit Datum und Uhrzeit und legt alle konfigurierten Kalender dort ab. Dank PHP kann man das auch auf einem Webserver oder generell überall machen, wo PHP ab 5.3 mit cURL läuft.

Viel Spaß damit.

Ach ja, bevor Fragen aufkommen: Die Google Kontakte lassen sich auf diese Weise nicht herunterladen. Wenn man mit Cookies in cURL hantieren will, kann man sich bei Google einloggen und ein Backup der Kontakte saugen. Aber das ist nicht ganz trivial. Alternativ kann man die Google Data API anzapfen, das ist gut dokumentiert, aber liefert die Daten nur in einem ATOM-XML-Format.