Zabezpieczanie maili przed spamem

Na pewno każdy z Nas kiedyś spotkał się ze śmieciami w poczcie. Wielokrotnie ludzie się zastanawiają, skąd spamerzy biorą ich adresy mailowe. Odpowiedź jest prosta. Stworzyli roboty podobne do GoogleBota (robot Google), które przeczesują sieć w poszukiwaniu adresów mailowych. Zabezpieczanie maili przed spamem jest bardzo ważną rzeczą przy tworzeniu stron. Dzisiaj opiszę prosty sposób na zabezpieczenie strony przed wykradzeniem przez spamerów adresów mailowych.

Do działania niezbędny będzie jeden z najlepszych frameworków do JavaScript – jQuery, które możecie pobrać ze strony jQuery. Ewentualnie zawsze można użyć czystego JavaScript, ale wtedy pozostaje problem z kompatybilnością z różnymi przeglądarkami. Dzięki temu sposobowi będzie można tez zastawiać pułapki na spamerów. Niestety jest jedna wada tego sposobu. Do działania niezbędny jest JavaScript. Na szczęście w dzisiejszych czasach ludzi, którzy przeglądają internet bez włączonego tego języka programowania jest bardzo mało, więc można przełknąć tę niedogodność.Zacznijmy od początku. Roboty spamerów szukają w internecie atrybutu „mailto” w linkach lub znaków małpy (@). Wszystko zależy od stworzonego robota. Dobrze by było, gdyby zamiast Naszego maila dostali jakiś fałszywy adres mailowy (przynęta). W tym celu w nazwie linku zamiast Naszego adresu, przygotowujemy fałszywy mail.

Jeśli chodzi o atrybut HREF, to najlepiej go całkiem usunąć. I tak w funkcji, którą stworzyłem, zostanie on ustawiony na odpowiedni. Poza tym jeśli na Naszą stronę wejdzie ktoś, kto ma wyłączoną obsługę JavaScript, to link nadal będzie działał i przeglądającemu otworzy się klient pocztowy z wpisanym fałszywym adresem mailowym. Osoba odwiedzająca wyśle maila na fałszywy adres mailowy, zamiast do Nas i najprawdopodobniej nawet tego nie zauważy.

Standardowy link wygląda w ten sposób:

<a href="mailto:adresMailowy" title="Napisz do Nas">
  Napisz do Nas
</a>

Aby można było użyć funkcję, która ma wykonać zabezpieczanie maili przed spamem, musimy odpowiednio przygotować link.  Do tego linku trzeba będzie dodać odpowiednie atrybuty, aby funkcja mogła zrobić to, do czego została stworzona:

  • – mail1 – pierwsza część adresu mailowego
  • – mail2 – druga część adresu mailowego
  • – html – anchor linku, który ma być podmieniony zamiast przynęty (fałszywego maila)
  • – nazwa klasy „podmianaMaila” – po niej funkcja będzie rozróżniała, który link ma być zamieniony na adres.

Link przygotowany do przetworzenia przez funkcję będzie wyglądać w ten sposób

<a title="Napisz do Nas" mail1="pierwszaCzescMaila" mail2="drugaCzescMaila" html="mail">
  fałszywy adres mailowy
</a>

W tym przykładzie w atrybucie HTML wpisałem „mail”. Oznacza to, że anchorem ma być docelowy adres mailowy. Jeśli jednak w anchorze są inne elementy, które chcemy, żeby tam zostały, to możemy usunąć ten atrybut lub zostawić go pustym.
Poniżej zamieszczam całą funkcję, którą można bez problemu użyć na stronie.

function podmianaMaila(){
  jQuery('.podmianaMaila').each(function(o,a){
    o=jQuery(this);
    a=o.attr('mail1')+'@'+o.attr('mail2');
    o.removeAttr('mail1')
     .removeAttr('mail2')
     .removeClass('podmianaMaila')
     .attr('href','mailto:'+a);
    if(o.attr('html') && o.attr('html').toLowerCase()=='mail')
     o.html(a);
  })
}

Należy pamiętać, żeby wywołać funkcję dopiero, kiedy załaduje się jQuery i element, który ma być zamieniony.
Wielu z Was pewnie będzie się zastanawiało, po co usuwam klasę. Czasami może się zdarzyć, że na wielu stronach będą adresy mailowe, które mają być zamienione. Sporo ludzi używa technologię AJAX, a wtedy ta funkcja powinna być wywoływana za każdym razem, kiedy zmieni się zawartość. Jeśli nie usuniemy klasy, to dany element zostanie ponownie przetworzony. Pytanie tylko po co przetwarzać elementy dziesiątki razy, kiedy wystarczy tylko raz?

W ten oto sposób zrobiłem zabezpieczanie maili przed spamem. Jak widzicie nie jest to nic skomplikowanego. Czekam na komentarze, co sadzicie o tym rozwiązaniu, ewentualnie na inne pomysły na  zabezpieczanie.

Twitter Obserwuj mnie na Blip.pl 

Komentarzy: 2

ozimaro
2 stycznia 2014 o 20:10

na slabsze boty moze to i zadziala ale teraz boty laduja strone tak sam jak w przegladarce wiec to nie pomoze. Sam moglbym napisac takiego bota i to nie jest zaden problem – chocby w selenium

Miwol
3 stycznia 2014 o 09:48

Zgadza się, ale lepsze takie niż żadne.
Dla kogoś, kto czyta to i się dopiero uczy, to jest idealne rozwiązanie.

Dodaj komentarz

Twój komentarz

CommentLuv badge