Как правильно разместить адрес электронной почты «Контакты» на веб-сайте, уменьшив при этом вероятность получения спама?
Является ли использование адреса электронной почты в изображении лучшим способом или есть другие?
Как правильно разместить адрес электронной почты «Контакты» на веб-сайте, уменьшив при этом вероятность получения спама?
Является ли использование адреса электронной почты в изображении лучшим способом или есть другие?
Ответы:
Я передаю все контактные формы через одноразовую учетную запись Gmail, которая пересылает почту на реальный адрес электронной почты. Это бесплатно, это легко, и обнаружение спама в Gmail на высшем уровне.
Это не требует дополнительных усилий при создании сайта, и если что-то проходит через вас, просто войдите в учетную запись Gmail и отметьте его как спам.
Затем вы можете настроить входящие Gmail для автоматического архивирования всего, что было переслано, или даже удалить его, если вы не хотите, чтобы эта дополнительная копия хранилась там.
Используйте электронный обфускатор
Мой не ответ не делать этого. Современные почтовые системы, такие как GMail и антиспамовое устройство Barracuda, отлично справляются с фильтрацией спама. Любой барьер, который вы ставите между вами и вашими посетителями, означает более низкий уровень вовлеченности и, в зависимости от типа сайта, потенциальную потерю продаж.
Если вы беспокоитесь о пользователях, у которых не установлен собственный почтовый клиент или у которых неправильно настроен обработчик mailto :, то откройте страницу «Свяжитесь с нами» с ОБА и связанным адресом электронной почты и формой (без CAPTCHA) и пусть пользователь выбирает.
Спам раздражает, но это наше бремя, а не наши пользователи.
Используйте естественный язык, чтобы изложить адрес электронной почты ...
Пример:
thatguy at gmail dot com
Вы будете удивлены, насколько сложнее написать бота, который может отличить естественный язык от написания бота, который просто ищет знак @ и пересматривает обычный адрес.
Это не на 100% надежно, но не хуже, чем запутывание, и это не оттолкнет ваших слабовидящих пользователей и / или пользователей, у которых отключен JavaScript.
Обновление: вот пример этой техники в действии .
Обновление 2:
Оказывается, кто-то действительно провел исследование по этому вопросу и разместил его в Интернете. Смотрите пост SuperUser с описанием результатов или оригинальную статью
thatguy funny-symbol gmail.com
Лично я не показываю адреса электронной почты на сайтах, но вместо этого у меня есть простая в использовании, доступная форма для связи с нами, вместе с указанием того, откуда пришло письмо; позволяя пользователям отправлять электронные письма владельцам и операторам сайта, не раскрывая адреса электронной почты и не пропуская различные циклы JavaScript и т. д.
Часто это лучший способ, если ваша фильтрация спама не настолько сложна.
используйте css, чтобы скрыть некоторый шум от реального текста (просто все в одной строке, я отформатировал его, чтобы лучше проиллюстрировать технику):
u<span class="spam">noise</span>ser
@<span class="spam">noise</span>
example<span class="spam">noise</span>
.com
а затем используйте этот маленький фрагмент CSS:
.spam { display: none; }
если вам нужен правильный mailto:
контент, то вам нужно создать его с помощью jscript в dom, посмотрите другие ответы на этот вопрос. но я не большой друг этого.
Что я могу сделать , это написать адрес электронной почты , как слова, обернутый в тег диапазона: <span class="email">joe dot blow at gmail dot com</span>
. Затем запускается сценарий на уровне страницы, собирающий все такие промежутки и заменяющий каждый из них созданной ссылкой на электронную почту. Это может быть не слишком неясным, но у меня не было жалоб. Кроме того, если JavaScript отключен, пользователь все равно может прочитать фактический текст span.
Лучшее решение: использовать спам-фильтр .
Я на самом деле использую Gmail для управления своей учетной записью электронной почты POP3 для своего бизнеса, потому что намного проще проверять электронную почту на разных компьютерах. Спам-фильтры Gmail - лучшие в мире.
Таким образом, вы можете просто отобразить webmaster@example.com в качестве своего адреса электронной почты и забыть о спаме.
используя кодировку html ʉẮᶗ
, браузер отобразит его как «abc»
Используйте графическую библиотеку (например, GD, поддерживаемую PHP или аналогичную) для динамического создания изображений .png, содержащих адреса электронной почты.
По сравнению с моим другим ответом это решение менее раздражает пользователей (но не прозрачно; они не могут копировать и вставлять его, но должны перепечатывать его с нуля), но также менее безопасно: компьютер потенциально может прочитать изображение без необъяснения.
Но в целом я думаю, что это хороший компромисс; это остановит подавляющее большинство спам-ботов.
Неплохой, но не идеальный способ - создать адрес электронной почты через javascript. Большинство пауков, ищущих электронную почту, не выполняют javascript и, следовательно, не находят читаемый адрес электронной почты.
Вот только один пример того, как это можно сделать.
Я использую простой скрипт Python для преобразования адреса электронной почты в ссылку mailto, где адрес электронной почты закодирован в формате HTML. Это абсолютно прозрачно для пользователя, но, кажется, затеняет содержимое достаточно, чтобы победить большинство простых ботов.
#! /usr/bin/env python3.0
def entity_encode(text):
out = ""
ba = text.encode()
for i in range(len(ba)):
out = out + "&#x{0:02x};".format (ba[i])
return out
def print_email_link(address) :
print('<!-- {0} -->'.format(address))
print('<a href="{0}{1}">{1}</a>'.format(entity_encode("mailto:"), entity_encode(address)))
print_email_link("test123@example.com")
Это дает вывод
<!-- test123@example.com -->
<a href="mailto:test123@example.com">test123@example.com</a>
Когда результат вставляется на веб-страницу, браузер отображает текст «test123@example.com» в виде гиперссылки на «mailto: test123@example.com», так что для конечного пользователя он так же удобен, как и адрес в чистом виде. Но, похоже, он побеждает многих ботов-уборщиков.
Очевидно, я удаляю комментарий с простой ASCII-версией адреса после того, как вставил скрытую ссылку электронной почты в соответствующее место в HTML-источнике веб-страницы.
Попросите пользователя разрешить CAPTCHA, прежде чем показывать ему адрес электронной почты (или, если у вас есть контактная форма, прежде чем позволить пользователю отправить ее).
Это самый раздражающий для пользователей, но определенно самый эффективный.
Я фанат запутывания, где адрес электронной почты по сути отображается с помощью Javascript.
Например, my@email.com
может быть представлен как
<a href="javascript:location='mailto:\u006d\u0079\u0040\u0065\u006d\u0061\u0069\u006c\u002e\u0063\u006f\u006d';void 0">
<script type="text/javascript">document.write('\u006d\u0079\u0040\u0065\u006d\u0061\u0069\u006c\u002e\u0063\u006f\u006d')</script></a>
Что касается пользователя, это обычный текст, который можно скопировать и вставить. С другой стороны, с ботами будет сложнее.
Вот обфускатор, который я использовал.
<a href="#" onclick="document.location.href='mailto:...'; return false">
В одну сторону:
<script language="javascript">
<!--
var name = "user"
var host1 = "gm"
var host2 = "ail.com"
var addr =
document.write("<a href=mai" + "lto:" +
name + "@" + host1 + host2 +
">" + name + "@" + host1 + host2 + "</a>")
//-->
</script>
Вы можете написать «Unscramble my email: user at com dot gmail» в <noscript>
тегах для тех, у кого отключен JavaScript. Таким образом, вы получаете функциональность гиперссылки. У вас есть хороший шанс держать спамеров подальше от вашего адреса, и люди, у которых отключен JavaScript или только текстовые браузеры, все еще могут получить ваш адрес электронной почты.
Все методы запутывания в мире не могут помочь в долгосрочной перспективе, если с вами связывается много людей. Все, что нужно, - это чтобы кто-то оставил вам сообщение, а затем заразился каким-либо вредоносным ПО, которое сканирует их входящие / отправленные письма / адресную книгу / что угодно на наличие действительных адресов, и ваш адрес там передается из списка в список [У меня даже есть контакты если вы достаточно глупы, чтобы размещать там адрес электронной почты и пароль в онлайн-формах по самым идиотским причинам, у вас, вероятно, тоже есть. Самым последним был сайт, на котором предлагалось вычислить чей-то «астрологический график и прогнозы по электронной почте», которые сразу же рассылали спам. контакты дурака с приглашением на тот же сайт и <божество> знает только о том, в каких других списках мы сейчас находимся в результате] .
Адрес на моих общедоступных веб-сайтах - это не просто одноразовый адрес, а одноразовый поддомен. Если я начинаю получать спам в этом поддомене, я создаю новый, обновляю сайты, на которых указаны мои контактные данные, и через некоторое время я полностью удаляю поддомен из записей DNS. Если вы делаете это или любые другие методы одноразового адреса, убедитесь, что вы четко указали (на любой странице, где указан адрес, и в нижнем колонтитуле любого письма, отправленного вами с использованием этого адреса), что адрес изменится в будущем, и если люди смогут не проходят, они должны проверить, чтобы убедиться, что они имеют правильный адрес.
Преимуществом этого является то, что люди просто нажимают на адреса (если их браузер + почтовик связаны таким образом) или копируют + вставляют без необходимости использовать свой мозг для последующего редактирования адреса (меня всегда удивляет, сколько в противном случае интеллигентные и наблюдательные люди не могут понять такие вещи правильно). Это также означает, что мой почтовый сервер не тратит свои дни на пересылку сообщений, отправленных на «случайные» адреса (aaron @, adam @, amy01 @, ...) в просроченных поддоменах. Это также не смущает программы чтения с экрана, используемые слепыми или плохо размещенными.
Другой вариант, который я еще не пробовал, - это использовать AJAX-запрос для чтения адреса электронной почты и других деталей. Это может быть немного более эффективно, чем document.write
запутывание на основе, хотя добавит немного дополнительной нагрузки на веб-сервер.
Вместо этого я использовал формы «свяжитесь со мной / нами», но обнаружил, что они получают спам столько же, сколько и просто текстовые адреса электронной почты - иногда с помощью сценариев, которые пытаются использовать форму для создания учетной записи где-то, а не используйте это как контактную форму.
Если у вас есть фильтр ботов (использующий 1x1px, подсеть, известные боты, обнаружение jscript, реферер http и агент браузера), вы можете просто не отображать информацию, если это бот.
Решение в PHP:
<?
if (!isbot()) {
echo 'mailto:'.$email_address_for_real_people;
}
else {
echo 'mailto:yourself_bot@'.$bots_domain_address;
}
?>
isbot()
это созданная пользователем функция, которая указывает на любую подпрограмму бот-фильтра, которая у вас есть.
Самая простая вещь, которую я нашел, - это использовать контактную форму, в которой есть адрес по умолчанию, а также возможность для пользователя выбрать, к кому обратиться (маркетинг, продажи, техническая поддержка и т. Д.). Затем на основе значения раскрывающегося списка отправленные данные формы отправляются сервером на соответствующий адрес электронной почты.
Запустите этот список контактов из таблицы базы данных, чтобы вы могли легко обновлять / добавлять записи в раскрывающемся списке. Таким образом, вы никогда не подвергаете какой-либо адрес широкому миру спам-ботов, и при этом предоставляете своим пользователям отличный способ отправить отзыв.
Нет, Хосе! - Да, кстати, Хосе!
Нет абсолютно никакого способа «остановить» сбор a href="mailto:"
адресов электронной почты. Долгое время считалось, что использование JavaScript - это хороший способ предотвратить большинство ботов-сборщиков, но в настоящее время боты чертовски хороши в победе над этим методом. Они также могут побеждать изображения, содержащие адреса электронной почты, так же, как они могут победить капчу, используя программное обеспечение decaptcha.
Лучший способ!
Лучшим подходом было бы использовать авторитетную почтовую службу, которая обеспечивает хорошую блокировку спама. Google G Suite и Microsoft Office 365 используют алгоритм, который не имеет аналогов ни на одном программном обеспечении на рынке, в основном потому, что они получают миллионы электронных писем в день, и они могут «изучать» и помещать в черный список спамеров задолго до того, как они даже попытаются написать вам по электронной почте.
Фактически год назад Google заявил, что его технология машинного обучения в настоящее время блокирует 99,9% спама и фишинговых сообщений Gmail , локальные серверы Microsoft Exchange и почтовые серверы, работающие за plesk / cpanel, не могут конкурировать с этой защитой.
Резюме
Блокируйте спам с помощью авторитетного почтового сервиса, способного к искусственному машинному обучению. Вы также можете сделать еще один шаг вперед, запретив спамерам посещать ваш сайт с помощью Cloudflare, который обнаружит подавляющее большинство агрессивных ботов до того, как они попадут на ваш сайт.
Я использовал fred@no-spam.domain.com в течение многих лет. Пользователи обычно знают достаточно, чтобы удалить «без спама».
В противном случае, я просто использую контактную форму с «капчей» и отправляю почту прямо с сайта.
Одна вещь, которую я делаю, - это использование API от http://www.stopforumspam.com для проверки на наличие спамеров. Не стесняйтесь обращаться ко мне за деталями, и я буду рад помочь вам с этим!
Бад Манц
Manz Web Designs, LLC
Если вы не возражаете против использования javascript, вы можете использовать что-то вроде ROT13 для маскировки адреса электронной почты. Например, посмотрите это:
http://scott.yang.id.au/2003/06/obfuscate-email-address-with-javascript-rot13/
Лично я предпочитаю использовать форму обратной связи и не беспокоиться о спам-ботов, но, конечно, все зависит от ваших требований.
Я использую функцию PHP для генерации JavaScript для вывода сценария во время выполнения. Обратите внимание, что вам не нужен PHP для генерации JS во время выполнения, вы можете сгенерировать JS один раз локально, а затем включить статический JS на своей странице.
Вы также можете использовать связанную функцию с этим фрагментом ниже, чтобы автоматически обфусцировать адреса электронной почты в заданном HTML-коде (где $ processingContent - это HTML-код):
$emailMatches = array();
$matchCount = preg_match_all('/(?:[a-zA-Z0-9_\.\-])+\@(?:(?:[a-zA-Z0-9\-])+\.)+(?:[a-zA-Z0-9]{2,4})+/', $processedContent, $emailMatches);
if($matchCount > 0) {
$emailMatches = $emailMatches[0];
foreach($emailMatches as $email) {
$replacement = createJSMailLink($email);
$processedContent = str_replace($email, createJSMailLink($email), $processedContent);
}
}
Если вы используете контактную форму, вы можете использовать забавную технику использования случайных имен для ввода.
Например, я делаю контактную форму, вместо того, чтобы использовать электронную почту в качестве входных данных, я бы использовал liame, то же самое с именем (eman) и комментарием (tnemmoc). Боты на самом деле не знают, что делают эти входы, поэтому они просто игнорируют их.
Используйте Zoho Creator, чтобы настроить контактную форму. Полученные отзывы будут храниться в базе данных, к которой вы можете получить доступ в Интернете, и также будут отправлены вам по электронной почте.