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”