Skip to main content

Hiding an email address with JavaScript

This works, is relatively simple and is pretty much immune to being scraped even by amazingly advanced ’bots – even a massivly underpaid human “’bot” would take a little while to sort it out:

<script language="JavaScript">
function href(spamtrap,username) {
return 'mail' +
('to' +
':' + username +
'@' + spamtrap).replace(/ /g,'.');
}

...and wherever you have an email link, you put something like this:

Email: <a href="mailto:username domain com au"
onmouseover="this.href=href('domain com au','username')"
title="Click to send to real email address">username at
domain com au</a>.

If you want to armour it even further, omit the “at”, use an image (not a nice, clean readily OCRable one, either) or don’t even put the shadow of an email address there.

Using the JavaScript function throws off the vast majority of bots, because there’s no “@” sign for them to key on. The really persistent ones will still key on “looks-like-username looks-like-domain-name” even if the delimiters are totally wild. Reversing the order of the domain and username should nail even the really persistent ones without having to do work-intensive stuff like hex- or MIME64-encoding strings.

Think of your own name for the function and obfuscate stuff in different ways (e.g. use “=” or “%” or capital letters as domain element separators or pass the domain as a variable-length list of arguments) lest the one name and technique suggested here become popular enough to be worth writing into a ’bot.

For the non-technical reader, what this does is supplies a web page with no easily discoverable trace of any email address in it. When the user waves their mouse over the email link, a little piece of JavaScript reconstructs the address and writes it into the link so that the web browser can now “see” it. Since ’bots generally don’t run the JavaScript, they have no hope of ever seeing the real address.

May the flaws be with you.

Comments

Popular posts from this blog

new life for an old (FTX) PSU, improved life for one human

the LEDs on this 5m strip happen to emit light centred on a red that does unexpectedly helpful things to (and surprisingly deeply within) a human routinely exposed to it. it has been soldered to a Molex connector, plugged into a TFX power supply from a (retired: the MoBo is cactus) Small Form Factor PC, the assorted PSU connectors (and loose end from the strip) have been taped over. the LED strip cost $10.24 including postage, the rest cost $0, the PSU is running at 12½% of capacity, consumes less power than a laptop plug-pack despite running a fan. trial runs begin today.

every-application-is-part-of-a-toolkit at work

I have a LibreOffice Impress slideshow that I wish to turn into a narrated video. 1. export the slideshow as PNG images (if that is partially broken — as at now — at higher resolutions, Export Directly as PDF then use ‘pdftoppm’ (from the poppler-utils package) to do the same). 2. write a small C program (63 lines including comments) to display those images one at a time, writing a config file entry for Imagination (default transition: ‘cross fade’) based on when the image-viewer application (‘display,’ from the GraphicsMagick suite) is closed on each one; run that, read each image aloud, then close each image in turn. 3. run ‘Imagination’ over the config file to produce a silent MP4 video with the correct timings. 4. run ‘Audacity’ to record speech while using ‘SMPlayer’ to display the silent video, then export that recording as a WAV file. 4a. optionally, use ‘TiMIDIty’ to convert a non-copyright-encumbered MIDI tune to WAV, then import that and blend it with the speech (as a quiet b...

boundaries

pushing the actual boundaries of the physical (not extremes, the boundaries themselves) can often remove barriers not otherwise perceived. one can then often resolve an issue itself, rather than merely stonewalling at the physical consequences of the issue.