Как скрыть email средствами CSS от Spam ботов
Проблема: Боты спамеров с помощью регулярных выражений находят на страницах сайта 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.