Хороший неинтрузивный антиобщественный почтовый обфускатор?
Я пытаюсь придумать JavaScript-обфускатор, чтобы уменьшить вероятность спама в электронных письмах, перечисленных на веб-сайте. Сейчас у меня есть обфускатор, основанный на JavaScript, который использует комбинацию HTML-кодирования и JavaScript для прозрачного преобразования обфускации в обычный почтовый ящик.
Что я делаю:
Отформатируйте "mailto:" часть href в ссылках, кодируемых как HTML:
mailto:
Я также кодирую электронное письмо, заменяя знак @
знаком (a)
, так что письмо читает что-то вроде:
stackoverflow(a)example.com
Затем я использую JavaScript для расшифровки всех ссылок mailto, которые имеют этот знак (a)
в письме и конвертируют их в @
при загрузке страницы.
Это работает довольно хорошо. Для людей, использующих браузеры с включенным JavaScript, они видят, что все работает нормально. Для людей без включенного JavaScript каждый почтовый клиент, которого я знаю, будет считать адрес электронной почты недействительным, однако пользователь должен иметь возможность сделать вывод о том, что необходимо для исправления символа.
Мне было интересно, было ли лучше (менее навязчивый (или, в лучшем случае, не очень навязчивый), но более устойчивый к спамеру) способ обфускации писем на веб-странице.
Как и при любом типе обфускации, если человек или компьютер могут легко обезвредить его, тогда спамер может легко сделать то же самое. Из-за этого я не ожидаю безупречной обфускации, однако мне было любопытно посмотреть, какие другие предложения были там. Поиск Google не показал никаких решений, которые я считаю лучшими, чем мое текущее решение. Мне было интересно, есть ли другие хорошие альтернативы.
Ответы
Ответ 1
Я использовал HiveLogic Enkoder в прошлом с довольно хорошим успехом. Если что-нибудь, что вы, возможно, захотите взглянуть на то, как работает кодирование Dan, поскольку оно может дать вам некоторые идеи, чтобы сделать еще более надежный obfuscator.
Ответ 2
Если вы действительно хотите защитить адреса электронной почты, другого способа не будет генерировать изображения для пользователей, не являющихся пользователями JavaScript.
Я использовал что-то вроде этого:
<script type="text/javascript">
//<![CDATA[
scrambler('[email protected]||mo');
//]]>
</script>
<noscript>
<img src="[email protected]||mo" alt="Emailadresse" />
</noscript>
scramble
- очень простая функция JavaScript, я думаю, вы легко можете понять, что она делает. (Это приведет к: <a href="mailto:[email protected]">[email protected]</a>
) scrambler.php
- то же самое, за исключением php и gd-сервера для генерации изображений.
Нарисуйте что-то, что не связано с некоторыми кодировками или заменой чего-то другим.
EDIT: Вот мой алгоритм:
function scrambler (text) {
parts = text.split("||");
var reverse = function (s) {
var ret ='';
for (var i=s.length-1;i>=0;i--)
ret+=s.charAt(i);
return ret;
}
text = reverse(parts[0])+reverse(parts[1]);
document.write(text);
}
Ответ 3
Один из способов обмануть электронную почту для компьютера - это написать электронное письмо как изображение, а не как текст. Таким образом, человеку по-прежнему легко читать адрес электронной почты и довольно сложно для компьютера.
Как заявил Стив Гилхам, не так сложно получить электронное письмо с OCR. И текстовые браузеры не поддерживают их. Таким образом, решение Скотта, вероятно, является лучшим решением.
Ответ 4
Я использовал этот генератор http://www.wbwip.com/wbw/emailencoder.html для обслуживания, и он отлично работает. Обычно я использую части закодированного адреса и части, которые не являются.
Например...
[email protected] == user@po.com
Я могу изменить...
[email protected] == user@po.com