Programowanie w języku PHP » FAQ

Jak ukryć adres e-mail przed robotami sieciowymi

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.

5 komentarzy

bordeux 2007-12-07 15:12

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 .

sopel82 2005-09-19 15:30

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

sopel82 2005-06-09 12:07

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 mail

migajek 2005-06-09 10:08

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

Marooned 2005-06-09 01:24

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 :[