Rendszergazda & webfejlesztő devblog Laczkó Zoltán blogja

4feb/100

Email gyűjtő botok ellen

Nem merjük kiírni a weblapodra az emailcímeket, mert félünk, hogy bekerülünk a spam küldők rendszerébe és elárasztanak kéretlen levelekkel?

Mióta létezik az internet sajnos azóta létezik a spam is. Amint az emailcím kikerül egy publikus oldalra, nagyon hamar megérkezik az első kéretlen levél a postafiókba. Az ok egyszerű, a spam küldők folyamatosan figyelik a webet és újabb és újabb emailcímek után kutatnak. Rontja a helyzetet, hogy nagyon sok  ingyenes, esetleg pár dolláros programot lehet találni, ami kifejezetten arra készült, hogy emailcímeket gyűjtsön a weboldalakról.

Pár módszer az emailcím elrejtésére.

Szöveges átírás

Az emailcímet úgy írjuk át, hogy az embernek, aki olvassa egyértelmű legyen, hogy hogyan kell értelmezi azt, hogy a valós címet kapja.

nev (kukac) domain (pont) hu

Ez a módszer jelenleg többnyire hatékony, egészen addig, amíg a gyűjtő program írók nem készítik fel a magyar szokásokra, szavakra.

nev@domain.hu.spam
n e v @ d o m a i n . h u
nev<i>@</i>domain<i>.</i>hu (HTML)

Ezeket a legtöbb gyűjtő program már felismeri.

JavaScript

Az emailcím helyett egy javascriptet használunk, aminek a kimenete az emailcím, így a forrásban nem szerepel a cím, de a böngészők értelmezik a javascriptet és a látogatók már az emailcímet látják csak.

<script type="text/javascript">
var name = 'nev';
var at = '@';
var domain = 'domain.hu';
document.write('<a href="mailto:' + name + at + domain + '">' + name + at + domain + '</a>');
</script>

// <![CDATA[
var name = 'nev';
var at = '@';
var domain = 'domain.hu';
document.write('' + name + at + domain + '');
// ]]>

<script type="text/javascript">eval(unescape('%64%6f%63%75%6d%65%6e%74%2e%77%72%69%74%65%28%27%3c%61%20%68%72%65%66%3d%22%6d%61%69%6c%74%6f%3a%6e%65%76%40%64%6f%6d%61%69%6e%2e%68%75%22%20%3e%6e%65%76%40%64%6f%6d%61%69%6e%2e%68%75%3c%2f%61%3e%27%29%3b'))</script>

//

<script type="text/javascript" language="javascript">
<!--
{document.write(String.fromCharCode(60,97,32,104,114,101,102,61,34,109,97,105,108,116,111,58,110,101,118,64,100,111,109,97,105,110,46,104,117,34,32,62,110,101,118,64,100,111,109,97,105,110,46,104,117,60,47,97,62))}
//-->
</script>

//

Az átlag gyűjtő program csak a forráskódot értelmezi szövegesen, nem tudja lefuttatni a javascriptet.

Ha smarty keretrendszer használunk, akkor alkalmazzuk a {mailto} beépített függvényt, ami a automatikusan legenerálja számunkra a szükséges javascripteket is.

Kép

Készítünk egy képet, amin az emailcím szerepel és azt szúrjuk be.

<img src="emailcim.png" />

nev@domain.hu

Hátránya, hogy nehezen módosítható, illetve a látássérültek által használt képernyő felolvasó programok nem boldogulnak vele. A profi gyűjtő programokban viszont van karakterfelismerő rendszer.

Flash

Azonos a képes megoldással, de itt flash objektumot használunk. Ezeket egy esetleges karakterfelismerő sem tudja feldolgozni.

Html kódolás

A módszer lényeg, hogy a html nyelvben az entitásoknál a karaktereket az ascii kódjukkal is megadhatjuk.

Egy egyszerű PHP függvénnyel át tudjuk konvertálni az emailcímeket.

function email_to_entities($email){
   if ($email){
      for ($i=0; $i<strlen($email); $i++){
         $out.='&#'.ord($email[$i]).';';
      }
   }
   return $out;
}
echo email_to_entities('nev@domain.hu');
nev@domain.hu

Lefuttatva ezt kapjuk, amit a böngésző már tud értelmezni. Sajnos egyre több gyűjtő program felismeri.

Kapcsolat űrlap

Sok oldalon emailcím megadása helyett egy űrlapot találunk, ennek sok előnye van, többek között, hogy az oldalon nem látszik a címzett emailcíme. További előnye, hogy akár több címzettnek is eljuttathatóak az üzenetek, sőt akár adatbázisban is tárolhatjuk őket.