Я программирую на PHP и хотел бы создавать веб-страницы с адресами электронной почты, которые легко читаются людьми, но нелегко собирать спамеры. Адреса электронной почты поступают от пользователя, и я думаю, что могу определить адрес, используя регулярное выражение, но я не совсем понимаю, как мне заменить адреса электронной почты или чем, чтобы большинство автоматических спам-ботов не собирая их.
Вот одна идея: (псевдокод)
(email)@(domain.com) $1<span class = "remove">DELETE</span>$2
.remove {
display: none;
}
Надеюсь, бот зацепится за тег span.
Наконец, я ищу решение, которое не будет мешать адресам электронной почты, находящимся внутри тегов mailto:.
ДубликатКак я могу запретить ботам собирать адреса электронной почты?, который является дубликатом Как можно защитить электронную почту на веб-сайтах от спам-ботов? и, возможно, некоторых других ...
Удивительно, как отображается дубликат. Также удаляется первая.






один вариант: Обфускация электронной почты javascript и изображения при отключенном javascript
попробуйте этот jottings.com/obfuscator
Вы можете использовать Библиотека PHP GD, чтобы легко создать изображение любого заданного текста.
Пример кода будет выглядеть так:
<?php
header("Content-type: image/png");
$im = @imagecreate(110, 20)or die("Cannot Initialize new GD image stream");
$background_color = imagecolorallocate($im, 0, 0, 0);
$text_color = imagecolorallocate($im, 255, 255, 255);
imagestring($im, 1, 5, 5, "[email protected]", $text_color);
imagepng($im);
imagedestroy($im);
?>
Преимущества:
Недостатки:
Недостатки: ваши пользователи не могут щелкнуть ссылку для отправки почты. Если вы спросите меня, это довольно большой недостаток.
Спасибо, Ник и Дероберт, тоже включили свои очки.
Изображение отлично, если вы соедините его с контактной формой на своем сервере. У пользователя будет выбор: прочитать изображение или отправить сообщение через форму.
Вы также можете запутать его с помощью CSS ...
<span class = "email-encrypt">moc.liamelgoog@avynnib<span class = "email-decrypt-message">(Reverse this text to get my Email address)</span></span>
/*Decrypt Email */
.email-encrypt {
unicode-bidi:bidi-override;
direction: rtl;
}
.email-encrypt .email-decrypt-message {
display:none;
}
Обновлено: здесь адрес электронной почты в источнике находится в обратном порядке - то, что делает заявления CSS, заключается в том, что он возвращает адрес электронной почты в исходную форму. Я надеюсь, что в этом есть смысл.
Но я не уверен, насколько это эффективно - есть много ботов, которые имитируют среду браузера. Думаю, мне лучше сказать что-то вроде - моя электронная почта - binnyva, googlemail.
Эй, это отличное решение. +1 за нестандартный подход.
Приведенный выше трюк (с использованием CSS) почти наверняка не сработает. Я не знаю, беспокоят ли боты вообще, глядя на CSS, на самом деле я не совсем уверен, что они читают HTML, они, вероятно, просто сопоставляют всю страницу в каком-то регулярном выражении.
С другой стороны, это упрощает создание списков для спам-ловушек. Если вы хотите, чтобы конкретный адрес получал спам (и только спам) для обучения ваших фильтров, вы можете поместить на страницу адреса электронной почты, которые обычные пользователи не смогут видеть или нажимать, только спам-боты.
Фактически, проведите эксперимент - напишите несколько разных адресов электронной почты с разными типами ссылок и посмотрите, сколько спама они получают.
Я попробовал это несколько месяцев назад с обычной ссылкой на моем веб-сайте, прошло около трех недель, прежде чем ловушка начала получать спам.
На самом деле адрес электронной почты в исходном HTML-коде находится в обратном порядке: moc.liamelgoog@avynnib. Обычное регулярное выражение для сопоставления писем не сработает.