Скрытие электронной почты от спам-ботов без использования javascript

У меня есть форма «свяжитесь с нами», которая использует Ajax (т.е. полагается на асинхронные запросы).

Если у пользователя отключен javascript, я хочу отобразить сообщение, в котором говорится что-то вроде:

Вам необходимо включить Javascript, чтобы использовать эту контактную форму. Если вы не умеете или не знаете, что такое Javascript, воспользуйтесь своей электронной почтой и свяжитесь с нами по адресу <the_email_address>.

Но, конечно же, я хочу скрыть the_email_address от спам-ботов.

Поскольку этот адрес электронной почты должен отображаться внутри <noscript>, нет смысла зашифровывать его с помощью Javascript, особенно учитывая тот факт, что некоторые пользователи могут просто даже не знать, что такое Javascript.

Я подумал о решении, но у меня нет возможности его проверить: вставка пустых тегов <span></span>, как в

my_em<span></span>ail@g<span></span>mail.com

Или немного умнее

my_em<span style="display:none">garbage</span>[email protected]

Будет ли это работать? Если нет, есть лучшие идеи?

Обновить

Спасибо RichieHindle за ответ. Я подумал, что поделюсь простой реализацией идеи на питоне:

def html_nospam(string):
    def ent(char):
        return "&#%d;" % ord(char)
    return ''.join([ent(c) for c in string])

person hasen    schedule 29.08.2009    source источник
comment
Примечание: будьте осторожны, с помощью этих уловок вы не только скроете свой e-mail от ботов, но и от людей с ограниченными возможностями.   -  person Zed    schedule 29.08.2009
comment
@Zed, хорошее замечание, хотя для моего конкретного случая (читай: моей аудитории) они все равно вряд ли будут использовать форму, или у них будет кто-то, кто поможет им с этим или сделает это за них.   -  person hasen    schedule 29.08.2009


Ответы (3)


Используйте объекты HTML, чтобы запутать его. [email protected] становится &#120;&#64;&#121;&#46;&#99;&#111;&#109;.

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

Существуют онлайн-инструменты, которые вы можете использовать, чтобы выполнить преобразование за вас.

person RichieHindle    schedule 29.08.2009
comment
Потрясающий. Это звучит как способ сделать это. - person hasen; 29.08.2009
comment
@hasen, это так - я видел это довольно часто. - person Arnis Lapsa; 29.08.2009
comment
sarnathd к этому - но я думаю, что это путь или, как предложил Шобан, вы можете попробовать путь Facebook - адреса электронной почты в их профилях являются изображениями. - person pageman; 29.08.2009

Как насчет изображения?

http://www.codegeeks.net/wp-content/uploads/2009/08/s.png

или используйте тег microsoft :), чтобы выглядеть круто

http://www.codegeeks.net/wp-content/uploads/2009/08/My_Contact_2009829838261.jpeg

Редактировать: Просто прочитайте свой комментарий выше относительно вашей аудитории. Похоже, тег MS будет для них слишком много :)

person Shoban    schedule 29.08.2009
comment
+1, Используйте карандаш вместо того, чтобы изобретать ручку, которая работает при нулевой гравитации. А? Неплохо. - person Cyril Gupta; 29.08.2009
comment
О, подождите, я думаю, что сделал. Проблема в том, что его нельзя скопировать-вставить - person hasen; 29.08.2009
comment
@hasen j, если это нельзя скопировать и вставить, то немного сложнее быть способным спамить? :П - person pageman; 29.08.2009
comment
@pageman, но также более вероятно, что посетители напечатают его неправильно или будут сбиты с толку (и разозлены), потому что они не могут выбрать/скопировать адрес электронной почты. - person hasen; 29.08.2009

Сделайте это изображением. Или используйте Flash (или Silverlight, ActiveX, что угодно).

person Dan Rosenstark    schedule 29.08.2009