Обфускация email средствами CSS

Проблема: Боты спамеров с помощью регулярных выражений находят на страницах сайта email-адреса и заносят их в свою базу. Нужно каким-то образом нарушить обнаружение email.

Решение:
Javascript - самый известный способ.

<script type="text/javascript">
document.write("name"+"@"+"mail"+".ru");
</script>

Во-первых, некоторые спам-боты уже научились обходить этот трюк. Во-вторых, у клиента может быть отключен js и тогда он ничего не увидит.

CSS. Способ гораздо менее известный и на мой взгляд легче реализуется. К тому же работает независимо от наличия яваскрипта у клиента. Суть метода, в том, что мы выводим вывернутый наизнанку email в html-код: name@mail.ru ? ur.liam@eman.

Как перевернуть строку задом наперед. Изначально наш email лежит где-нибудь в базе в виде name@mail.ru. При выводе в html-код перевернуть его можно с помощью php-функции strrev()

<?php
echo strrev("name@mail.ru");  // выведет "ur.liam@eman"
?>

Теперь спамерам будет тяжеловато использовать такой email.

Но обычному пользователю нужно показывать правильный адрес. Т.е. нам нужно обратно перевернуть ur.liam@eman в name@mail.ru, но уже средствами CSS.

В CSS есть свойство direction, которое определяет направление вывода текста. Данное свойство не переворачивает строку, а лишь сообщает браузеру в каком направлении его нужно выводить: справа налево или слева направо. По умолчанию свойство direction имеет значение ltr - left to right. Но можно поменять это свойство на rtl - right to left.

Свойство unicode-bidi переворачивает строку в соответствии с заданным направлением вывода, которое задается свойством direction. Задав для строки стиль {unicode-bidi:bidi-override; direction: rtl;}, в браузере эта строка будет вывернута справа налево.

<style type="text/css">
span.codedirection { unicode-bidi: bidi-override; direction: rtl; }
</style> 

<span class="codedirection">ur.liam@eman</span>

Данное решение не является панацеей, но в любом случае затруднит парсинг страницы для обнаружения email.

Английский язык для начинающих
#1

метод действительно эффективный и не нужно использовать mail[собака]mail.ru :))

Cawabunga, 4.12.2008 - 00:36
#2

Ха... Прикольный способ.
CSS вообще сила))))

Алексей, 6.01.2009 - 22:02
#3

Спасибо!
Вот это относительно оригинальное и изящное решение!
Ранее не встречалось, значит не заезженное.
Еще раз спасибо!

Елена, 25.03.2009 - 00:26
#4

Есть в приколе с css одна печальная неожиданность.
Возниклет она когда юзверь захочет скопипастить адресок к себе в почтовый клиент :(

vadik, 7.04.2009 - 20:07
#5

Спасибо!

но всетаки вопрос, данный код работает только в случае есло нет функции mailto/там же должен быть написан нормальный маил/? или гдето я торможу :(

dma, 12.05.2009 - 17:20