Как отобразить адрес электронной почты для пользователей, но скрыть от робота?Есть ли простой способ сделать это с помощью PHP, Javascript или Jquery?

StackOverflow https://stackoverflow.com/questions/1873992

Вопрос

Есть ли элегантный и простой способ сделать это с помощью 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>
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top