PHP FAQ

Jak ukryć adres e-mail przed robotami sieciowymi

sopel82

Spam staje się coraz większą zmorą wszystkich internautów korzystających z poczty elektronicznej. Szczególnie dokuczliwy jest dla webmasterów, których stawia przed problemem jak bez narażania się na zasypanie stosami niechcianych e-maili, nie tylko zorganizowa? kontakt z użytkownikiem ale i zabezpieczyć maile odwiedzających pozostawione w przeróżnej formie na forach, księgach gości i tym podobnych.

Najlepszym znanym mi sposobem jest umieszczenie prostego formularza kontaktowego, gdzie adres odbiorcy nie jest widoczny po stronie klienta, przez co niemiłe nam roboty przeczesujące zasoby sieciowe w poszukiwaniu adresów e-mail, odchodzą z takiej strony z kwitkiem.

Co jednak gdy umieszczenie adresu e-mail na stronie staje się konieczne? Pomóc powinna poniższa funkcja, która zamienia wszystkie znaki w ciągu na encje numeryczne. Warto wiedzieć, że przed wyświetleniem przeglądarki automatycznie konwertują je na odpowiednie znaki.

function antispam($str) {
  $converted_str = '';
  for ($i = 0,$count = strlen($str); $i<$count; $i++) {
    $converted_str .= '&#'.ord(substr($str, $i, 1)).';';
  }
  return $converted_str;
}

Przykład użycia

$email =' [email protected]';
echo ''. antispam($email).'';

Należy pamiętać aby zawsze kodować "mailto:", ponieważ wiele robotów jest na niego wyczulonych.
Dla tych, którzy walczą o każdy bajt wynikowej strony, proponuję ograniczyć konwersję do wspomnianego przed chwilą "mailto:", małpy (@) i kropek.

FAQ

5 komentarzy

To jest stary sposób, dawno rozgryziony przez roboty :) Polecam js

<script>   
var   s=   "mail",   m='@',   d='domena.pl';
document.write(s+m+d);
</script>

Oddzielenie od siebie nazw. można tez to zaszyfrowac

<script>
<!--
document.write(unescape("%20%3Cscript%3E%0Avar%20s%3D%20%22mail%22%2C%20m%3D%27%26%2364%3B%27%2C%20d%3D%27domena.pl%27%3B%0Adocument.write%28s+m+d%29%3B%0A%3C/script%3E"));
//-->
</script>

sopel82: A to juz troche stara strona. Kazdy, jak tworzy bota do spamu to tworzy czarna liste z www. A po 2 to jesli juz w nazwie linku jest spam to roboty odstrasza odrazu :) . polecam samemu zrobic takie pułapki .

apropo spamu, ostatnio znalazlem bardzo ciekawa strone (pulapke na roboty spamowe) : www.spampoison.com

co do javascriptu to porada jest przeciez w dziale Server-side ;-) jednak celowo o nim nie wspomnialem poniewaz jak wiemy JS mozna wylaczyc + moze dzialac roznie w roznych przegladarkach. wedlug mnie, kodowanie na encje numeryczne wydaje sie byc najlepszym sposobem, jeśli chcemy miec link postaci <a href=\"mailto:mail\">mail</a>

Marooned: nie tylko to jest do zmiany... :]

Jeśli ktoś nie ma dostępu do języków server-side na danym serwerze, to można użyć JavaScript - to też powinien uwzględniać ten artykuł. Sposobów jest wiele...

P.S.
Trzeba koniecznie zmienić system wyświetlania e-maili w całym 4p - szczególnie na stronach pomocy i opisu Coyote - na [email protected] i [email protected] przychodzi tona spamu :[