Spam bots get smarter these days in harvesting email addresses. They usualy use a regex which searches for ‘.. dot .. ltd’, which isn’t that resource intensive. When that is done a more advanced regex is put in there to get the email adress somehow removing stuff like ‘spam’.
Using normal javascript encoding doesn’t work anymore, for it isn’t that hard for a spider to regognize encoded strings and decode them, whether this is in javascript code or normal html escapes.
Therefore we need to get more inventive:
function JSBotProtect($text){
$xorred = "0";
$layer = "0";
for($i = 0; $i < strlen($text); $i++){
$layerbit = mt_rand(0, 255);
$xorred .= "," . (string)(ord($text[$i]) ^ $layerbit);
$layer .= "," . (string)$layerbit;
}
return <<<EOF
<script type="text/javascript">
var xorred = String.fromCharCode({$xorred});
var layer = String.fromCharCode({$layer});
var unxorred = "";
for(i = 1; i < xorred.length; i++){
unxorred += String.fromCharCode(
xorred.charCodeAt(i)^layer.charCodeAt(i));
}
document.write(unxorred);
</script>
EOF;
}
This PHP function returns a javascript block of code which stores the sensitive string like an email address in 2 parts, which when xorred with eachother result in the original email address.
One thought on “Protecting your email address against spam bots”