В январе 2003 года я наткнулся на описание способа борьбы со сканироваем web-страниц для поиска адресов электроной почты. Немного творчески переработав увиденное я сделал следующий скрипт:
function spamblockmailto (domain, account, text) { var myat = String.fromCharCode(64); // @ document.write('<a href="mailto:'); document.write(account + myat + domain); if (text==null || text.length==0) { document.write('\">'); document.write(account + myat + domain); } else document.write('\" title=\"'+text+'\">'+text); document.write('<\/a>');& } |
<head> ... <script type="text/javascript" src="путь_к_файлу/spamblock.js"></script> <title>Заголовок страницы</title> ... </head> <body> ... |
spamblockmailto('yandex.ru','no13','мой адрес'); |
spamblockmailto('yandex.ru','no13'); |
Судя по комментариям автор не против.
Надеюсь и вам пригодится. Думаю спамеры еще не додумались до обработки скриптов в своих программах. Да и врядли будут это делать - большая нагрузка может получится. А для защиты от "лобовой" атаки достаточно периодически переименовывать функцию, менять местами аргументы, добавлять новые.
Если все же найдется такой маньяк, для него готова ловушка. Но это уже на любителя :). Расширяем многократно описаный способ "добавить головной боли спамеру" - страницу фиктивных адресов. Но адреса пишем не ручками (вот еще!), а скриптом:
var offset, name_length; var address; // Список доменов стран можно взять здесь // http://www.iana.org/cctld/cctld-whois.htm var TLD_list = [ 'com','net','biz','info','name', 'ac','ad','ae','af','ag','ai','al','am','an','ao','aq','ar','as','at','au','aw','az', 'ba','bb','bd','be','bf','bg','bh','bi','bj','bm','bn','bo','br','bs','bt','bv','bw','by','bz', 'ca','cc','cd','cf','cg','ch','ci','ck','cl','cm','cn','co','cr','cu','cv','cx','cy','cz', 'de','dj','dk','dm','do','dz', 'ec','ee','eg','eh','er','es','et', 'fi','fj','fk','fm','fo','fr', 'ga','gd','ge','gf','gg','gh','gi','gl','gm','gn','gp','gq','gr','gs','gt','gu','gw','gy', 'hk','hm','hn','hr','ht','hu', 'id','ie','il','im','in','io','iq','ir','is','it', 'je','jm','jo','jp', 'ke','kg','kh','ki','km','kn','kp','kr','kw','ky','kz', 'la','lb','lc','li','lk','lr','ls','lt','lu','lv','ly', 'ma','mc','md','mg','mh','mk','ml','mm','mn','mo','mp','mq','mr','ms','mt','mu','mv','mw','mx','my','mz', 'na','nc','ne','nf','ng','ni','nl','no','np','nr','nu','nz', 'om', 'pa','pe','pf','pg','ph','pk','pl','pm','pn','pr','ps','pt','pw','py', 'qa', 'ru','rw', 'sa','sb','sc','sd','se','sg','sh','si','sj','sk','sl','sm','sn','so','sr','st','sv','sy','sz', 'tc','td','tf','tg','tj','tk','tm','tn','to','tp','tr','tt','tv','tw','tz', 'ua','ug','uk','um','us','uy','uz', 'va','vc','ve','vg','vi','vn','vu', 'wf','ws', 'ye','yt','yu', 'za','zm','zw']; // Таких циклов может быть много. Спамеры продают из миллионами? Подарим им 100 миллионов адресов! for (var i=0;i<100000000;i++) { address = ''; name_length = Math.floor(Math.random()*14) + 1; for (var c=0;c<name_length;c++) { address = address + String.fromCharCode(Math.floor(Math.random()*26)+97); } address = address + '@'; name_length = Math.floor(Math.random()*24) + 1; for (var c=0;c<name_length;c++) address = address + String.fromCharCode(Math.floor(Math.random()*26)+97); address = address + '.'; name_length = Math.floor(Math.random()*8) + 1; for (var c=0;c<name_length;c++) address = address + String.fromCharCode(Math.floor(Math.random()*26)+97); address = address + '.' + TLD_list[Math.floor(Math.random()*TLD_list.length)]; document.write('<a href="mailto:'); document.write(address); document.write('">'); document.write(address); document.write('</a>'); name_length = Math.floor(Math.random()*132) + 1; for (var c=0;c<name_length;c++) document.write(String.fromCharCode(Math.floor(Math.random()*224)+32)); } |
Такая готовая страница лежит здесь, не заходите туда броузером!
Если будут какие вопросы - пишите, адрес вверху.
Последние изменения Mon Aug 04 12:04:14 EEST 2003 @419 /Internet Time/