Как отобразить адрес электронной почты для пользователей, но скрыть от робота?Есть ли простой способ сделать это с помощью PHP, Javascript или Jquery?
-
18-09-2019 - |
Вопрос
Есть ли элегантный и простой способ сделать это с помощью PHP, Javascript или Jquery?
Решение
Вы можете использовать функцию PHP imagestring() для создания изображения.
<?php
// Create a 100*30 image
$im = imagecreate(120, 30);
// White background and blue text
$bg = imagecolorallocate($im, 255, 255, 255);
$textcolor = imagecolorallocate($im, 0, 0, 255);
// Write the email address at the top left
imagestring($im, 5, 0, 0, 'test@test.com', $textcolor);
// Output the image
header('Content-type: image/png');
imagepng($im);
imagedestroy($im);
?>
Другие советы
Есть много способов сделать это.Нам немного повезло с запутыванием исходного кода с помощью python / javascript.Другим более простым фаворитом является технология CSS unicode-bidi:
div.contact { unicode-bidi:bidi-override; direction: rtl; }
<div class="contact">moc.rab@oof</div>
Распечатывает:
foo@bar.com
Возможно, вы захотите заглянуть в Краткое описание Mailhide.Он должен быть прост в использовании с PHP.
никогда не пишите адреса электронной почты в виде текста на веб-страницах, НИКОГДА!
и браузерные боты наверняка имеют включенный JS -_-
Запутывание с использованием самых сложных из возможных HTML-объектов и urlencode, реализованных на PHP:http://hcard.geekhood.net/encode/
Источник:http://code.google.com/p/hcardvalidator/source/browse/trunk/encode/index.php
Другой подход, который я использую, это:
<a href="mailto:me@myserver.removethis.com">
<script>[…] a.href = a.href.replace(/removethis\./,'');</script>
Стоит отметить, что оба метода предоставляют пользователям совершенно доступную, кликабельную ссылку.
вы можете попробовать изменить name@example.com на:"имя в примере dot com".
Однако роботы могут легко объяснить это.
В противном случае вы могли бы отобразить динамическое изображение адреса электронной почты, если у вас действительно есть мотивация.
Это не идеальное решение, но Энкодер (http://hivelogic.com/enkoder) весьма полезен для этого.Он использует Javascript для обфускации адреса.
ОК.Итак, через некоторое время я нашел статью в блоге о том, как это легко сделать.http://techblog.tilllate.com/2008/07/20/ten-methods-to-obfuscate-e-mail-addresses-compared/ И насколько сильно это влияет на получение спама ..
Я предполагаю , что это могло бы быть дополнением к информации , приведенной выше ..Ваше здоровье!
Сработает ли это так же хорошо??
Используя что-то вроде этого
<span>myaddress</span><span>@</span><span>mydomain.com</span>
Это не будет использоваться как ссылка, но все равно будет узнаваемо человеческим глазом на странице и, вероятно, не будет проанализировано роботом.Ты еще не проверил это.Вероятно , вы могли бы вставить эту строку в пустоту и привязать ее к функции , которая составляет адрес путем синтаксического анализа содержимого ..
Просто быстрая мысль ...
Это трудно сделать.Если вы не используете изображение, все, что доступно для чтения человеком в вашем браузере, может быть доступно для чтения человеком роботом.Таким образом, даже если каким-то образом скремблировать электронное письмо в исходном HTML-файле, а затем использовать функцию javascript для динамического удаления скремблирования при рендеринге страницы, робот, который также выполняет полный рендеринг DOM, потерпит поражение.
До недавнего времени я добивался хорошего успеха с помощью описанного выше метода и не видел никакого спама.Однако недавно я заметил, что адреса, похоже, действительно были подобраны.Так что я могу только предположить, что почтовые траулеры сейчас выполняют полный рендеринг DOM.
Итак, в заключение - изображение, вероятно, является лучшим (хотя даже это не на 100%).
Вот простое решение этой проблемы на jquery:
<script type="text/javascript">
$(document).ready(function() {
str1="mailto:";
str2="info";
str3="@test.com";
$("#email_a").attr("href", str1+str2+str3);
});
</script>
<a href="#" id="email_a"><img src="sample.png"/></a>