Как не дать спамерам получить адрес электронной почты по ссылке mailto?[дубликат]

StackOverflow https://stackoverflow.com/questions/769894

Вопрос

Дубликат:


Каков наилучший способ предотвратить получение спамерами адреса электронной почты из ваших ссылок 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.

Ни один из них не является полностью эффективным.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top