Защита от спама с помощью яваскрипт

  • Автор темы Автор темы Spear
  • Дата начала Дата начала

Spear

почемучка
Защита от спама с помощью яваскрипт

Здравствуйте,
столкнулся с проблемой защиты єл. писем от спама.
И нашёл сайт, где защита очень красиво и эффективно реализована.
вот сатй (это не реклама. просто для ознакомления http://ag.ru)
вот там справа внизу при нажатии на ссылку "сообщить об ошибке" открывается окно написания письма. Но адрес почты нигде в коде страницы не показывается.
Вот код ссылки:

<a href="" title="Нажмите здесь" class=sb onmouseout=tc('t_bughunt') onmousemove=ts(event,'t_bughunt') onclick="javascript: p_u('126,120,127,114,113,127,108', '113,107', '127,124', 'error%20on%20page%20http://www.ag.ru/'); blur(); return(false);"><font class=sb>Сообщить<br>об ошибке</font></a>

я покопалсЯ, думал все легко.. ан-нет:
цифры '126,120,127,114,113,127,108', '113,107', '127,124' отвечают буквам. Причем в обратном порядке. например последние две - u r. при нажатии на ссылку преобразуются на ru и перелд ними станет точка. Вообщем все очень сложно и красиво.

Я вот и хотел узнать - кто-нить знает как это дело реализуется? где-то можно достать таблицу номеров для символов?
 
>Я вот и хотел узнать - кто-нить знает как это дело реализуется?

Реализуется на JavaScript.

>где-то можно достать таблицу номеров для символов?

Там же, в функции p_u().
 
Кром
это шутка такая? Где там таблица сиволов? Я не вижу :( Да даже если и есть - я бы хотел узнать где эта таблица вообще есть в полном виде. Блин короче говря я в яве НОЛЬ. Неужели сложно помочь и ответить нормально, а не в стиле Фаната?
 
kruglov
я же в яве ноль.
Я абсолютно непонял что вы написали ;)
пожалуйста, объясните. Буду очень благодарен.
Вот например нужно закодировать от спамеров адрес
[email protected]
 
http://phpclub.ru/faq/JavaScript

-~{}~ 17.06.05 10:19:

Автор оригинала: Spear
kruglov
я же в яве ноль.
Я абсолютно непонял что вы написали ;)
пожалуйста, объясните. Буду очень благодарен.
Вот например нужно закодировать от спамеров адрес
[email protected]
Вот, на коленке слепил (с использованием той js-функции) - работает...
Захочешь оптимизировать - пожалуйста... :D

Кстати, а это могло бы легко быть тестовым заданием при приеме на работу наверное...

PHP:
<?
  function encode_mail($mail=''){
    //результат вернем в виде массива
    $_result = array();
    //переворачиваем строку
    $mail = strrev($mail);
    //находим первое вхождение точки в строке
    $pos = strpos($mail,'.');
    //определим доменную зону (строка уже ревесная)
    $mail_zone   = substr($mail,0,$pos);
    //создадим массив ASCII-кодов наименования доменной зоны
    $mail_zone_a = array();
    for($i=0; $i<strlen($mail_zone); $i++){
      $_result['zone'][] = ord($mail_zone{$i})+10;
    }  
    //вычислим остальную часть электронного адреса, без доменной зоны
    $tmp = substr($mail,$pos+1,strlen($mail));
    $tmp = explode('@',$tmp);
  
    //это домен
    $mail_domain = $tmp[1];
    //создадим массив ASCII-кодов наименования домена
    $mail_domain_a = array();
    for($i=0; $i<strlen($mail_domain); $i++){
      $_result['domain'][] = ord($mail_domain{$i})+10;
    }  
  
    //это имя
    $mail_name   = $tmp[0];
    //создадим массив ASCII-кодов имени
    $mail_name_a = array();
    for($i=0; $i<strlen($mail_name); $i++){
      $_result['name'][] = ord($mail_name{$i})+10;
    }  
    return $_result;
  }
  
  
  //вызов функции кодировани электронного адреса
  $enc_mail = encode_mail('[email protected]');
?>
<script>
function p_u(x, y, z) {
	c = arguments;
	for (b = 0; b < c.length; b++) {
        if (b == 3) continue;
		c[b] = c[b].split(',');
		c[b] = c[b].reverse();
		for (a = 0; a < c[b].length; a++)
			c[b][a] = String.fromCharCode(c[b][a] - 10);
		c[b] = c[b].join('');
	}
	document.location.href = "mailto:" + c[0] + "@" + c[1] + "." + c[2] + "?subject=" + c[3] + "";
	
}
</script> 

<a href="" title="Отправить письмо администратору!" 
  onclick="javascript: p_u(
          '<? print implode(',',$enc_mail['domain']); ?>', 
          '<? print implode(',',$enc_mail['name']); ?>', 
          '<? print implode(',',$enc_mail['zone']); ?>', 
          'Здравствуйте, дорогая редакция'); 
          return(false);">
	Отправить письмо администратору!
</a>
 
Spear
А не надо понимать, надо это скопировть в html-файл и посмотреть его браузером.
 
боже, какие сложности, а просто на HTML как решить задачу не догадаться?

dima<b></b>@php<!-- [email protected] -->.spb&amp;#46;ru
 
Groove
я уже про тему забыл.. зашёл и... НЕ ОЖИДАЛ ТАКОГО ОТВЕТА!
ОГРОМНОЕ СПАСИБО! Я бы это сам не написал, а если бы и написал - то очень не скоро! ЕЩЁ РАЗ СПАСИБО! Код очень полезный!

DiMA
щас спам боты такие, что твой имейл в раз захапают. Даже мыло вида
spear собака мейл точка ру
и такой украдут доблетсные бот-проги ;)
 
полнейшая чушь, напиши для начала такой скрипт, а потом паронаидальные мысли публикуй

А вообще защищать мыло на вебстраницах бесполезно. Адрес стырят от ублюдских провайдеров, продающих логи sendmail'а спаммерам.
 
при нажатии на ссылку "сообщить об ошибке" открывается окно написания письма
Хм.. сделай эту страничку в PopUp окне и боты на неё не попадут.. (ниразу не видео ещё бота, который открывал бы PopUp-ы).
 
Госопда, но лучше же все-таки перестраховаться, верно?

и тем более - попапы и прочая лабуда будет раздражать потенциальных отправителей писем ;) а так нажал - и пиши ;)
 
Сверху