Как я могу использовать PHP для обфускации адресов электронной почты, чтобы спамеры не смогли их легко собрать?

Я программирую на PHP и хотел бы создавать веб-страницы с адресами электронной почты, которые легко читаются людьми, но нелегко собирать спамеры. Адреса электронной почты поступают от пользователя, и я думаю, что могу определить адрес, используя регулярное выражение, но я не совсем понимаю, как мне заменить адреса электронной почты или чем, чтобы большинство автоматических спам-ботов не собирая их.

Вот одна идея: (псевдокод)

(email)@(domain.com) $1<span class = "remove">DELETE</span>$2

.remove {
   display: none;
}

Надеюсь, бот зацепится за тег span.

Наконец, я ищу решение, которое не будет мешать адресам электронной почты, находящимся внутри тегов mailto:.

ДубликатКак я могу запретить ботам собирать адреса электронной почты?, который является дубликатом Как можно защитить электронную почту на веб-сайтах от спам-ботов? и, возможно, некоторых других ...

stackoverflow.com/questions/308772/…
nickf 22.12.2008 09:31

Удивительно, как отображается дубликат. Также удаляется первая.

fedorqui 'SO stop harming' 28.02.2014 16:30
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
2
2
1 787
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

один вариант: Обфускация электронной почты javascript и изображения при отключенном javascript

попробуйте этот jottings.com/obfuscator

Steven A. Lowe 22.12.2008 09:14

Используйте GD и создайте изображение своего идентификатора электронной почты

Вы можете использовать Библиотека 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);
?>

Преимущества:

  • Спамеры не могут просто перехватить его, если не используют OCR: p
  • Очень низкие накладные расходы при использовании формата PNG / GIF
  • Может быть создан на лету для любого текста

Недостатки:

  • Не могу нажать на почту, как на ссылку
  • Не работает с двигателями TTS, особенно для людей с ослабленным зрением.

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

nickf 22.12.2008 09:30

Спасибо, Ник и Дероберт, тоже включили свои очки.

M.N 22.12.2008 09:39

Изображение отлично, если вы соедините его с контактной формой на своем сервере. У пользователя будет выбор: прочитать изображение или отправить сообщение через форму.

Zoredache 22.12.2008 10:25
Ответ принят как подходящий

Вы также можете запутать его с помощью 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 за нестандартный подход.

M.N 14.01.2009 18:20

Приведенный выше трюк (с использованием CSS) почти наверняка не сработает. Я не знаю, беспокоят ли боты вообще, глядя на CSS, на самом деле я не совсем уверен, что они читают HTML, они, вероятно, просто сопоставляют всю страницу в каком-то регулярном выражении.

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

Фактически, проведите эксперимент - напишите несколько разных адресов электронной почты с разными типами ссылок и посмотрите, сколько спама они получают.

Я попробовал это несколько месяцев назад с обычной ссылкой на моем веб-сайте, прошло около трех недель, прежде чем ловушка начала получать спам.

На самом деле адрес электронной почты в исходном HTML-коде находится в обратном порядке: moc.liamelgoog@avynnib. Обычное регулярное выражение для сопоставления писем не сработает.

Binny V A 22.12.2008 14:16

Другие вопросы по теме