|
Защити свой сайт от спама
|
|
Данные способы защиты применимы только к небольшим сайтам, не вызывающим повышенного интереса со стороны спамера. Для большого сайта с множеством e-mail адресов пользователей следует использовать формоотправители, т.к. спамеру не сложно будет проанализировать метод прятанья адреса и, написав не сложный скрипт, собрать все адреса для своих рассылок.
Вариант 1. Размещение вместо e-mail адреса скрипта на javascript.
<script language="javascript">
var mailto =
'orion-studio.com.ua';
mailto = 'nospam'
+ '@' +
mailto;
var content =
'Наша электронная почта';
document.open();
document.write('<a
class="mailto" href="mailto:' + mailto
+ '" title="Послать
письмо ' + mailto
+ '">' +
content + '</a>');
document.close();
</script>
А так выглядит результат работы данного скрипта в браузере пользователя:
Конечно, заменять в html-коде каждую e-mail ссылку на скрипт - работа не приятная и не оправданная. Решением использования данного метода может быть использование обработчика вывода страницы в браузер пользователя. Функцией обработчика должна быть задача, превращающая все ссылки вида: |
<a href="mailto:name@domen.com"
Title="Title">Name</a>
|
на подобный код javascript. Эта задача легко реализуема с помощью регулярных выражений. |
Вариант 2. Пример использования регулярных выражений для обработки содержимого страницы все с той же идеей использования javascript.
<?php
$html = '<a href="mailto:name@domen.com">Name</a>';
$html = preg_replace("~(<a[^>]+href=)([\"']?)mailto:([\\w_\\.\\-]+)([\\w_\\.\\-])@([\\w_\\.\\-])([\\w_\\.\\-]+\\.[a-z]{2,4})\\2([
>])~i", "\\1\"mailto:spamux@nospam.ru\"
onMouseover=\"this.href='mai' + 'lto:\\3' + '\\4' + '%40' + '\\5' + '\\6';\"\\7",
$html);
echo $html;
?>
Получим на выходе преобразованный код:
<a href="mailto:spamux@nospam.ru"
onMouseover="this.href='mai' + 'lto:nam' + 'e' + '%40' + 'd' +
'omen.com';">Письмо</a>
Результат отображения в браузере: Письмо
Вариант 3. Javascript с кодированием e-mail ссылки.
<script language="javascript">
var a =
'DMEBCAEIFCEFEGDNCCGNGBGJGMHEGPDKGNGFEAGCGFGFHCCOHFGBCCDO' + 'Письмо' + 'DMCPEBDO';
for(i=0; i <
a.length; i++)
{
document.write((a.charCodeAt(i)<=127)
?
String.fromCharCode((a.charCodeAt(i)-65)*16+(a.charCodeAt(++i)-65))
:
a.charAt(i));
}
</script>
Результат отображения в браузере:
Вариант 4. Javascript с использованием метода fromCharCode, случайной арифметики и метода link.
Метод fromCharCode создает новую строку (но не строковый объект), которая является конкатенацией символов Unicode.
Метод link возвращает строку, состоящую из примитивного значения строкового объекта, заключенного в теги
<script>
document.write(String.fromCharCode(0x041F,0x438,0x441,0x044C,0x43C,0x043E).link.(String.fromCharCode(104+5,0x8d-0x4-0x28,0151,-0xac+0x9c+0174,0353-0x77,111,101-43,-243-26+379,-154+0411,-0x7b+0356,112,0x61,-0x90+0375,0xac-0xcd+0141,-0x90+0375,0x61,-135+240,-017+0173,0xa3+79-0xc4,-0xe2+325,0157,-41+0226)));
</script>
Результат отображения в браузере: