A simple Django app providing template tags that attempt to obfuscate raw e-mail addresses to make them ever so slightly more difficult to scrape.
To be less-obtrusive, JavaScript is used to translate mangled source into a normal e-mail address. If JavaScript is not present, the reCAPTCHA mailhide service is offered to deobfuscate the addresses.
Using images, LTR-RTL hacks, or forcing reCAPTCHA access might be better at keeping your address safe from bots, but it's annoying for legitimate users. By using JavaScript, hopefully we can thwart some of the dumbest bots into farming someone else's email address without much of a usability hit.
In your Django's settings:
Add
'mailmangler'toINSTALLED_APPS.Define
MAILMANGLE_PUBLICandMAILMANGLE_SECRETwith keys from the reCAPTCHA Mailhide API, e.g.MAILMANGLE_PUBLIC = 'your-key...==' MAILMANGLE_SECRET = '123789...abcd'
Load the tags and filters in your template with
{% load mailmangler %}In the
<head>of your template, add{% mailmangle_js %}. (The JS deobfuscator uses inlinedocument.write's, so by loading the code early, hopefully this will avoid any rendering delays.)Pipe (filter) email addresses through
mailmangleormailmangle_linked, e.g.{{ my_email_var|mailmangle }} {{ "alice@example.com"|mailmangle }} {{ "bob@example.net"|mailmangle_linked }}will produce:
- A JS obfuscated, unlinked string of whatever
my_email_varwas. - A JS obfuscated, unlinked string of "alice@example.com"
- A JS obfuscated, string with mailto link of "bob@example.com"
If JS is not present, a reCAPTCHA mailhide link is available in
<noscript>tags.- A JS obfuscated, unlinked string of whatever