Защита адресов электронной почты от спам-ботов / веб-сканеров - PullRequest
12 голосов
/ 08 сентября 2010

Как вы предотвращаете сбор писем с веб-страниц почтовыми пауками? Увеличивает ли mailto: связь с ними вероятность того, что их поймают? Полезна ли кодировка URL?

Очевидно, что лучшей контрмерой является показ адресов электронной почты только зарегистрированным пользователям или предоставление контактной формы вместо адреса электронной почты. Что же доступно с точки зрения чисто клиентских решений?

Ответы [ 5 ]

7 голосов
/ 08 сентября 2010

У большинства почтовых пауков нет интерпретаторов javascript, поэтому, если вам действительно нужен mailto:, вы можете внедрить его с помощью javascript ... просто убедитесь, что адрес скрыт в javascript как-то, например.

myLink.href='mai'+'lto:'+'bob'
           +'@'
           +'example.com';

Если вам нужно отобразить адрес электронной почты на странице, обычное решение - сгенерировать изображение, используя что-то вроде php gd (хотя инъекция javascript для этого тоже должна работать).

Идея состоит в том, чтобы удалить адреса электронной почты из HTML и внедрить их с помощью javascript. Таким образом, адрес электронной почты не появляется в своем первоначальном виде ни в одном из HTTP-трафика, на что смотрит паук.

4 голосов
/ 08 сентября 2010

Я стараюсь избегать mailto, так как людям слишком легко собирать адреса электронной почты.

Если у вас будут контактные страницы на вашем веб-сайте, просто создайте форму, и когда они отправят ваш серверный код и используют соответствующий адрес электронной почты.

Если вам нужно, чтобы адреса других людей были доступны, используйте цифры, имена, имена пользователей и способ их идентификации.

Если у вас просто есть адрес электронной почты в промежутке, он, вероятно, будет выбран, даже если вы попытаетесь скрыть его, поскольку эти программы могут быть довольно сложными, поскольку поиск адресов электронной почты - вот о чем они.

Как и в случае с большинством секретов, если вы не хотите, чтобы другие их получали, не размещайте их на странице.

1 голос
/ 27 апреля 2013

Спустя годы я создал следующий jQuery для другого сайта:

$(".email").each(function() {
    $(this).html( $(this).html().replace("...", "@").replace(/\.\.\./g, ".") );
    $(this).attr( "href", $(this).attr("href").replace("...", "@").replace(/\.\.\./g, ".") );
});

Электронные письма тогда пишутся как:

<a href="mailto:bob.smith...example...com" class="email">bob.smith...example...com</a>

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


Ознакомьтесь с этим исследованием различных методов обфускации электронной почты .

1 голос
/ 08 сентября 2010

Я обычно делю их на отдельные части, а затем заново объединяю, используя JavaScript. Окончательный javascript делает document.write, чтобы выписать HTML.

т.е.

var mail = "mailto";
var namepart = "test.user";
var domainpart = "example";
var tld = "com"; 
var address = namepart + "@" + domainpart + "." + tld;
document.write("<a href=" + mail + ":" + address + '">' + address + "</a>";
0 голосов
/ 01 мая 2018

Если вам не нужна почтовая ссылка, вы можете заменить символ @ на [at]

Пример: sam [at] example.com

...