1.25 reCAPTCHA interface in Emacs Lisp
======================================
2013-01-12
Following some ideas thrown around in ‘#emacs’ (and which can also be
seen in Nic Ferrier's blog post regarding his plans for the year) I took
a quick look at reCAPTCHA. Google acquired reCAPTCHA some time ago and
most people are familiar with the mechanism: it stops spam by providing
a simple way for webmasters to add a CAPTCHA
(
https://en.wikipedia.org/wiki/CAPTCHA) that stops automated harvesting
and submissions, in this case with the side-effect of helping in the
transcription effort of old books.
-=******************************************************************+-
:%@@@@@@#*@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@%:
:%@@@@*.-**.=+@@@@@@@@%%-.*@@@@@@@@@@@@@@@@@@@##@%#%@@@@@@@@@@@@@@@@%:
:%@@@@*:+=#=+:++%++%+++*--*@@@@@@@@@@@@@@@##@@%+@*++@+*%@@@@@@@@@@@@%:
:%@@@@%@@@@@@@#+#==*#*%@@@@@@@@@@@@@@@@@@@+**##+##**@=#=@@@@@@@@@@@@%.
:%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@##@@@@@@@@@+#@@@@@@@@@@@@@%.
:+#########################################%#####%#####%############*.
:=+************************************=..:--:.....:-:................
#%%@%***##*#*##**%*****%****###**%%%%@#.:=++=:.:**+=*#=..............
*#%%%%%%%%%%%%%%%%%%###%#%###%%##%%%%%*.:-++=:.##.---===---==::......
*#*#%@#%#%%%%%%%%%#@@@@@@@@@@@@@@@@@@%*.:-++=:.+%----+-::----:::.:...
*@%%%@%%%%%%%%@%%%#@@@@@@@@@@@@@@@@@@@*.:-*#=:..-++++=..::::.--::-:..
--++++=+++++++++++++==================+-..:::::...........:::.:..:.:.:
The code itself is still sort of rough - although it now uses the
customisation infrastructure and is package-ready - but I've uploaded it
to github: take a look at the reCAPTCHA Emacs Lisp interface repository
(
https://github.com/fsmunoz/recaptcha).
There are two main functionalities provided by reCAPTCHA
1. reCAPTCHA “proper”, as described above.
2. reCAPTCHA mailhide, that uses a similar mechanism but aimed at
reducing automated email harvesting: it encrypts email addresses
and requires a CAPTCHA to show the plain-text version.
This (or at least a subset of it) could be of interest to aidalgol's
elwiki, an ambitious project that aims to create a Wiki engine on top of
elnode (which is absolutely brilliant stuff IMO, I am generally averse
to web development but elnode is quite fun to work with) - even if only
as a general reference.
For the mailhide validation it uses Markus Sauermann's aes.el
(
https://github.com/Sauermann/emacs-aes), without which it wouldn't work
at all without external dependencies. I would like to thank Markus for
his help in debugging part of the code and even changing ‘aes.el’ to add
support for the padding mechanism that I needed!