Проблема защиты от спама емейлов, выложенных на сайте, уже наболевшая и давно затертая до дыр. Но я случайно нашел еще один способ борьбы. Можно, конечно, использовать следующие способы защиты: — Графическое изображение — Замену символов. Типа spam[at]must[dot]die — Вывод через js вида
var login = `spammer`; var server = `must.die`; var email = login+`@`+server; var url = `mailto:`+email; document.write(`<a href="`+url+`">`+email+``);
— можно использовать простенький вывод &#ANSI_код_символа; на php:
Когда для моего последнего проекта print-com.biz нужно было сделать защиту выкладываемого мыла от спама, то в поисках оного наткнулся на этот интересный сервис. Пошарив в коде, получим:
function encode(email, text, tpl) { var t = tpl.replace(/{e}/g, email); var a = t.replace(/{text}/g, text); t = ""; for (i = 0; i < a.length; i++) { if (a.charCodeAt(i) <= 127) { t += (String.fromCharCode(Math.floor(a.charCodeAt(i) / 16) + 65)) t += (String.fromCharCode(a.charCodeAt(i) % 16 + 65)); } else { t += a.charAt(i); } } var to = t;
return t; } function decode(a) { var t = ""; for (i = 0; i < a.length; i++) { t += (a.charCodeAt(i) <= 127) ? String.fromCharCode((a.charCodeAt(i) - 65 ) * 16 + (a.charCodeAt(++i) - 65)) : a.charAt(i); } return t; }
В итого для мыла spam[at]must.die получается, что-то типа: DMEBCAEIFCEFEGDNCCGNGBGJGMHEGPDKHDHAGBGNEAGNHFHDHECOGEGJGFCCDOНаписатьCAписьмоCAбезCAспамаDMCPEBDO. А после декодирования средствами js мы видим нормальную ссылку на email.
Так что пинайте, только не очень больно. Буду благодарен за любую критику по делу.