Защита e-mail от спам-ботов

Привет, друзья. Недавно ознакамливался с ТЗ на разработку сайта и там одним из пунктов было внедрение алгоритма защиты от ботов-сборщиков электронной почты:

23. Все e-mail адреса на сайте должны быть защищены от ботов-сборщиков эл. адресов. Алгоритм реализации данного функционала реализуется Исполнителем самостоятельно и должен иметь достаточно высокую защиту от его распознавания ботами-сборщиками.

Этот пункт меня насторожил, так как на первый взгляд решение этой задачи показалось достаточно сложным, но, спойлер, есть же javascript.

Как защитить email на сайте от сборщиков почты

Оказалось, что людям, по этому поводу приходят безумные идеи. Например, помещать символы в разные теги, создавать лишние, перемешивая с основными и скрывать их при помощи CSS. То есть что-то вроде такого:

<!-- smart-landing@ya.ru - исходный адрес -->
 
<!-- упрощенный пример -->
<span>s</span><span style="display: none">abra</span><span>m</span><span style="display: none">kadabra</span><span>art-landing</span><span>@ya.ru</span>

Кто-то вообще картинкой выводит адрес электронной почты. Некоторые люди предлагают закодировать адрес в entitles-символы (мнемоники). Выглядит это так:

<!-- smart-landing@ya.ru - исходный адрес -->
 
<!-- пример перевода адреса в entitles-символы -->
 
&#115;&#109;&#97;&#114;&#116;&#45;&#108;&#97;&#110;&#100;&#105;&#110;&#103;&#64;&#121;&#97;&#46;&#114;&#117;&#10;

Попробовать можно тут.

Все эти способы имеют ряд тех или иных недостатков. При выводе адреса картинкой или помещение символов в разные теги - нет возможности сделать адрес кликабельным. То есть мы не сможем использовать такую структуру:

<a href="mailto:smart-landing@ya.ru">smart-landing@ya.ru</a>

Если используем мнемонику, то это недостаточно хороший способ шифрование e-mail адреса, так как некоторые сборщики электронной почты умеют расшифровать entitles-символы, но это, безусловно, лучше чем предыдущие 2 варианта с точки зрения usability.

Поэтому способы, описанные выше, мне не подходили однозначно. Оставался вариант сгенерировать все при помощи javascript, так как спам-боты, собирающие почтовые адреса не умеют исполнять его на странице, а только сканируют исходный код, а в коде, как вы поняли, ничего похожего на e-mail адрес не будет. Кроме того, можно объединить 2 способа описанные выше с мнемоникой и разбиением на символы, а также вынести код в отдельный файл.

Конечно, вручную это не очень приятно, поэтому предлагаю воспользоваться сервисом pi2pi.ru. Тут можно сделать все автоматически просто сконвертировав адрес в js строку.

Защита e-mail от спам-ботов

Теперь эту строку нужно просто вставить в то место, где планируете выводить e-mail. При этом вы получите полноценную ссылку с зашифрованным адресом без ущерба usability. Вот так это выглядит в браузере:

Шифрование почты на сайте

А вот так, если открыть исходный код:

Как защитить почтовый адрес на сайте от сборщиков почты

У такого способа все же есть 1 недостаток, и он связан с SEO. Возможно, кому-то важно, чтобы поисковики корректно понимали почтовый адрес на странице и в таком случае им придется отказаться от подобных защит и использовать обычную вставку, но на landing page это не так важно, так как лендинг - это больше про коммерческий трафик, чем поисковый, так что можете взять себе этот способ на вооружение.

А как вы решаете подобную задачу?

Похожие публикации

1 комментарий

  1. Али

    Спасибо. Весьма полезна информация.

Добавить комментарий