Как не дать спамерам получить адрес электронной почты по ссылке mailto?[дубликат]
-
12-09-2019 - |
Вопрос
Дубликат:
Каков наилучший способ предотвратить получение спамерами адреса электронной почты из ваших ссылок mailto?У меня сложилось впечатление, что Javascript может быть решением.Я не знаю, является ли мое нынешнее решение надежным, поэтому и спрашиваю.
Вот что я сейчас делаю:
<script language="JavaScript"><!--
var name = "emailusername";
var domain = "yahoo.com";
var text = "emailusername@yahoo.com";
document.write('<a href=\"mailto:' + name + '@' + domain + '\">');
document.write(text + '</a>');
// --></script>
Есть ли лучший способ?Мне не нравится иметь этот кусок кода везде, где я хочу разместить ссылку mailto.
Другие советы
Javascript помогает, но это не сильно поможет.Адрес электронной почты по-прежнему отображается в исходном HTML-коде с использованием сценария этого типа.
«Лучшие» варианты используют клиентский JavaScript для «построения» адреса электронной почты из частей, поэтому весь адрес электронной почты никогда не отображается в исходном HTML-коде целиком.Браузер собирает это за вас на клиенте.
Простое исправление:
<script language="JavaScript"><!--
var name = "emailusername";
var domain = "yahoo.com";
document.write('<a href=\"mailto:' + name + '@' + domain + '\">');
document.write(name + '@' + domain + '</a>');
// --></script>
По сути, это то же самое, что предлагает Рид, но с существующим кодом.
Это даже отдаленно не хороший путь.Спамеры захватят все это и сопоставят адреса с помощью регулярного выражения.Они не будут искать mailto:.Кроме того, любая схема, которую вы можете придумать с использованием Javascript, уже была продумана спамером и отвергнута.Фактически, они, вероятно, смогут просто запустить JavaScript и получить адрес.
Ты можешь
А) Фильтровать спам
Б) Используйте форму для отправки почты (которую спамеры, вероятно, все равно будут использовать).
Вы на правильном пути, но имея emailusername
в этом как бы противоречит цели (большинство ботов-пауков не удосуживаются провести различие между HTML и кодом сценария, а просто ищут на странице все, что похоже на электронное письмо).
Я слышал о доказательствах того, что некоторые боты-пауки теперь могут запускать Javascript и самостоятельно устранят такого рода запутывание.
Не существует 110%-го надежного способа предотвратить это, за исключением глупых трюков, которые просто мешают использованию электронной почты, таких как размещение всех адресов электронной почты в виде изображений и т. д.
По крайней мере, лично я согласен с тем, что адреса будут собраны, по крайней мере, в некоторой степени.Я использую эту небольшую функцию php для html-кодирования всех адресов электронной почты.Таким образом, они будут идеально пригодны для использования во всех реальных браузерах, но обманут даже самых тупых комбайнов.Как я уже сказал, это не 110%, но я доволен.
function turboencode($s){
$tempstr = "";
for($i = 0; $i < strlen($s); $i++){
$c = substr($s, $i, 1);
$tempstr .= "&#" . ord($c) . ";";
}
return $tempstr;
}
Лучший способ предотвратить сбор урожая — просто отключить mailto:ссылка вообще.
Если не считать этого, счетчиков не так уж и много.Такие вещи, как контент и изображения CSS, были опробованы и обойдены, а JavaScript — это половинчатое решение (то есть он не работает).
Одним из возможных противодействий является запутывание:Добавьте в свой адрес ерунду вот так:
mailNO`at`SPAMyahoo`dot`com
И у большинства автоматизированных комбайнов (первоначально) возникнут проблемы с его обнаружением.Альтернативно, такие вещи, как комментарии, могут быть использованы для того, чтобы сбить с толку большинство комбайнов.(RFC822 описывает полный синтаксис адресов электронной почты, включая комментарии как часть спецификации адреса.)
Другой вариант — использовать форму с какой-либо CAPTCHA.
Ни один из них не является полностью эффективным.