Extension:ReCAPTCHA

reCAPTCHA places a strong CAPTCHA on your wiki. The CAPTCHA helps to read books that are scanned by projects such as archive.org. The CAPTCHA also includes an accessible audio version. Researchers at Carnegie Mellon University believe that this CAPTCHA is not readable by current OCR technology.

Requires MediaWiki 1.8 or above.

Usage
See https://www.google.com/recaptcha/admin/create?app=mediawiki for instructions on getting your own recaptcha keys.

Install the extension from http://code.google.com/p/recaptcha or install the ConfirmEdit extension, which includes it.

Configuration
The following set of rules strikes the right balance between keeping spam down and allowing unrestrictive access to users:
 * 1) Any user can edit the wiki, because registration puts people off.
 * 2) Unregistered users are always presented with a captcha.
 * 3) Registration requires a captcha.
 * 4) Registered users are never presented with a captcha.

In the MediaWiki config those rules looks like this:

(all other permissions having their default values)

Problem locating keys
If after defining in your LocalSettings.php your $recaptcha_public_key and $recaptcha_private_key you get the following error code,

You need to set $recaptcha_private_key and $recaptcha_public_key in LocalSettings.php to use the reCAPTCHA plugin.

then you must put your $recaptcha_public_key and $recaptcha_private_key definition after

Captcha box layout messed in RTL languages (e.g. Arabic, Hebrew)
ReCaptcha was designed for LTR. Until a version that supports RTL is officially released, the quick and dirty solution is to make the following change in recaptchalib.php:

(1) Go to function recaptcha_get_html (line 124 in version 1.7)

(2) Change return so that it is wrapped in a div dir="ltr" tag

Parameter 1 to ReCaptcha::confirmEdit expected to be a reference
Under PHP 5.3.2 and recaptcha-mediawiki-1.7 you may see the following error. Warning: Parameter 1 to ReCaptcha::confirmEdit expected to be a reference, value given in [...]/includes/Hooks.php on line 117 This can be fixed by applying the following patch (see Manual:Hooks/EditFilter).