Wordpress Performance Wordpress SEO Wordpress Security Wordpress Themes Wordpress Hosting Mein Setup Das Buch

reCAPTCHA für WordPress Kommentare

reCAPTCHA für WordPress-Kommentare

Nervige Captchas

Eigentlich sind sogenannte Captchas eine wunderbare Idee. Sie bestehen aus kleinen Bildern oder kurzen Wörter, die eingegeben werden müssen, um zu beweisen, dass es sich bei der Eingabe nicht um einen automatisierten Zugriff handelt. So etwas ist praktisch, um beispielsweise Spam in den Kommentaren oder dem Kontaktformular zu vermeiden. Als Captchas damals noch neu waren, war das alles auch sehr zuverlässig möglich und kein großer Aufwand für den Nutzer. Doch dann entwickelten sich Bots immer weiter und Captchas waren auch für die Maschinen lösbar, weshalb sie im Laufe der Zeit immer und immer komplexer wurden. Das führte wiederum dazu, dass echte Nutzer nicht mehr einfach ein Wort eingeben, sondern das verschnörkelte Wort erst einmal erkennen mussten. Inzwischen sind Captchas manchmal so kompliziert zu lösen, dass es entweder in mehreren Falscheingaben endet, oder der Nutzer einfach extrem genervt und frustriert von ihnen ist. Sinnvoll einsetzbar sind Captchas demnach heute eigentlich nicht mehr, erst recht in unserer schnelllebigen Generation Internet, wo sich für so etwas niemand mehr die Zeit nehmen möchte.

reCAPTCHA für WordPress

Auch Google kennt das Problem und forschte daher seit geraumer Zeit an neuen Captchas. Nicht verwunderlich, denn zu Google gehört schließlich auch der Dienst reCAPTCHA, der genau solche Captchas über eine API anbietet, damit Webmaster sie schnell und einfach in ihre Projekte einbinden können. Doch Weil die Technik eben zu komplex und nervig wurde, nutze das kaum noch jemand. Jetzt präsentierte Google allerdings das sogenannte No-Captcha reCAPTCHA. Das macht Schluss mit unlesbaren Codes und Wörtern, liefert keine komplexen Rätsel oder Aufgaben mehr. No-Captcha generiert ganz einfach ein Kontrollfeld, welches vom Nutzer einen Haken bekommen muss und welches mit “Ich bin kein Roboter” beschrieben ist. Der Klick soll genügen, schon dürfen Nutzer den Inhalt hinter dem Captcha sehen. Sehr einfach, so einfach, dass No-Captcha dafür sorgen könnte, die Technik wieder großflächig zu nutzen, zum Beispiel auch bei WordPress. WordPress.com nutzt die neuen Captchas sogar schon, doch auch bei selbstgehosteten Blogs ist das problemlos möglich. Ein ein paar Zeilen Code und ein kleines Snippet reichen aus, um das Kommentarformular mit dem neuen No-Captcha reCaptcha zu schützen. Ist das geschehen, braucht es dann auch kein nerviges und Performance-fressendes Antispam Plugin. Zumindest theoretisch.

WordPress Kommentare mit reCAPTCHA

1. Zunächst einmal müsst ihr euch bei Google die entsprechenden API-Keys für reCaptcha generieren. Einfach mit dem Google-Account anmelden und eine Seite erstellen, dann werden euch die Codes angezeigt. Diese Codes fügt ihr dann dort ein, wo in den folgenden Snippets ein Platzhalter markiert ist. Löscht beispielsweise das “*****WEBSITESCHLÜSSEL*****” und fügt dort den Key von Google ein.

2. Damit reCaptcha korrekt funktioniert, müssen die Scripte erst einmal in den Head eurer Seite integriert werden. Fügt also folgenden Code vor dem </head> ein. Habt ihr eine Website mit schwarzem bzw. dunklem Hintergrund, ersetzt ihr das “light” außerdem mit einem “dark”. Das war es dann auch eigentlich fast schon.

<script type=\"text/javascript\">
var onloadCallback = function() {
	grecaptcha.render('html_element', {
	  'sitekey' : '*****WEBSITESCHLÜSSEL*****',
	  'theme' : 'light'
	});
};
</script>
<script src='https://www.google.com/recaptcha/api.js'></script>

3. Die Scripte sind korrekt integriert, jetzt muss nur noch dafür gesorgt werden, dass das reCaptcha auch mit den Kommentaren zusammenarbeitet. Dafür sind die folgenden Snippets notwendig, die ihr in die Functions.php eures Themes integriert.

function add_recaptcha_below_form($args)
{
	$args['comment_notes_after'] = '';
	$args['comment_notes_after'].= '<div class="g-recaptcha" data-sitekey="*****WEBSITESCHLÜSSEL*****"></div>';
	return $args;
}
add_filter('comment_form_defaults', 'add_recaptcha_below_form');
function verify_comment_recaptcha($commentdata)
{
	if (empty($_POST['g-recaptcha-response'])) {
		wp_die(__('Um einen Kommentar zu hinterlassen, müssen das Sie das Captcha unter dem Kommentarformular bestätigen.'));
	}
	else {
		$captcha_url = 'https://www.google.com/recaptcha/api/siteverify?secret=*****GEHEIMER SCHLÜSSEL*****&response=' . $_POST['g-recaptcha-response'] . '&remoteip=' . $_SERVER['REMOTE_ADDR'];
		if ($data = wp_remote_get($captcha_url)) {
			$obj = json_decode($data['body']);
			if ($obj->success) {
				return $commentdata;
			}
			else {
				wp_die(__('Falscheingabe!'));
			}
		}
		else {
			wp_die(__('Falscheingabe!'));
		}
	}
}
add_filter('preprocess_comment', 'verify_comment_recaptcha');

4. Solltet ihr ein WordPress Caching Plugin installiert haben, vergesst nicht den Cache erst einmal vollständig zu löschen. Auch kann es sein, dass der Code geringfügig geändert/angepasst werden muss, solltet ihr ein besonderes Template für die Kommentare verwenden. Davon abgesehen sollte unter dem Kommentarfeld jetzt das reCaptcha angezeigt werden und ohne die korrekte Eingabe, dürfte das Kommentieren nicht mehr möglich sein.

WordPress und reCAPTCHA

Einen Haken gibt es aber natürlich dennoch. So lässt sich das No-Captcha noch nicht in allen Fällen verwenden, weil die Erkennung nur bei 60 bis 80 Prozent der Besucher gelingt. Funktioniert der Algorithmus also nicht, muss immer noch ein normales Captcha entschlüsselt und eingegeben werden. Auch Smartphones und Tablets machen noch Probleme, denn Mobile Plattformen haben keine Maus, deren Bewegungen analysiert werden könnte, was die Erkennung aktuell schwierig macht. Für die mobilen Nutzer soll es daher eine einfache Art von Memory mit Tierbildern geben. Trotzdem ist No-Captcha reCaptcha ein interessanter Schritt und eine sehr sinnvolle Weiterentwicklung bestehender Möglichkeiten. Denn wo alle anderen Antispam-Maßnahmen viel Code benötigen, eine menge Performance verschlingen und speziell angepasst erden müssen, ist ein Captcha am Ende eben nur ein Captcha, welches relativ einfach integriert werden kann. Wobei reCaptcha natürlich auch mit Javascript etc. läuft, also längst nicht mehr so schlank ist wie einst, als der ganze Spam-Wahnsinn noch nicht so gigantisch war. Ein Versuch es jedenfalls wert, auch innerhalb der WordPress Kommentare.



Wordpress Performance eBook