Есть ли элегантный и простой / простой способ сделать это с помощью 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>
Распечатывает:
Возможно, вам захочется заглянуть в reCAPTCHA 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>
Стоит отметить, что обе методики дают пользователям совершенно доступную, интерактивную ссылку.
вы можете попробовать изменить имя@example.com на: «name at example dot com».
Однако роботы могут легко объяснить это.
В противном случае вы можете отобразить динамическое изображение адреса электронной почты, если вы действительно мотивированы.
Это не идеальное решение, но Enkoder ( 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>