Obrana proti robotům hledající emaily na www stránkách

2. ledna 2001

Spammeři, tedy firmy a jednotlivci, rozesílající obtěžující a nevyžádané reklamní e-maily, uvádějí asi málokterého uživatele Internetu v nadšení. V tomto článku si ukážeme, jak pomocí JavaScriptu můžeme trochu omezit příliv reklamního spamu, zahlcujícího naši emailovou schránku.

Každý spammer musí před tím, než „oblaží“ své okolí nevyžádanou reklamou, nějakým způsobem získat seznam emailových adres. Nejjednodušší cestou, jak takový seznam získat, je pořídit si nějaký program, robota, který prochází internetové stránky podobně, jak to dělají např. vyhledávače typu AltaVista, a do souboru ukládá všechny emailové adresy, které na těchto stránkách najde. Programů, které toto umožňují, lze dnes na internetu získat desítky – většinou zdarma, popřípadě s šikovným, ač nelegálním, „crackem“.

Pokud jsme tedy vlastníky internetových stránek, lze říci s pravděpodobností hraničící s jistotou, že nám časem začnou chodit reklamní emaily na adresy, uvedené na těchto stránkách. Alespoň proti tomuto spamu se můžeme bránit – tím, že emailové adresy na stránce zašifrujeme tak, aby je robot nenašel.

Použijeme jednoduchý JavaScript – místo toho, abychom emailovou adresu na stránku vypisovali přímo, budeme ji generovat malou JavaScriptovou funkcí. Pro roboty, kteří vyhledávají emailové adresy pomocí jednoduchých kritérií, představuje zpravidla taková funkce nepřekonatelnou překážku.

Pro vytvoření odkazů jsme použili následující funkci (je dobré uvést ji v hlavičce stránky):

function CreateLink( name, text ){
zavinac = "@"
domena = "abc.cz"
    if( CreateLink.arguments.length == 1 ) {
            document.write("<a href=’mailto:"+name+""+zavinac+"
"+domena+"‘>"+name+""+zavinac+""+domena+"</a>")
    } else {
            document.write("<a href=’mailto:"+name+""+zavinac+""+domena+"‘>"+text+"</a>")
    }
}

Do funkce předáváme dva parametry: parametr name, který představuje jmennou část emailové adresy před zavináčem a nepovinný parametr text, který uvádí nadpis, zobrazený nad odkazem – např. nadpis „Webmaster“ v druhém příkladě. Zbytek adresy zkonstruujeme z konstant uvedených přímo v těle funkce. Pokud není uveden druhý parametr, je nadpis odkazu stejný jako emailová adresa, na niž směřuje – viz první příklad.

Funkce je napsána tak, že vytváří adresy pouze z jedné domény – v našem případě „abc.cz“. Pokud bychom chtěli použít více domén, musíme funkci přidat další parametr. Samozřejmě nemůžeme funkci předávat jako parametr celou emailovou adresu – to by ji robot, proti němuž se chráníme, okamžitě dohledal.

Funkci CreateLink jsme volali ve výše uvedených příkladech takto:

<p>Link1: <script language="JavaScript">CreateLink( "jahoda" )</script></p>
<p>Link 2: <script language="JavaScript">CreateLink( "jahoda", "Webmaster" )</script></p>

A to je vše. Uvedený JavaScript asi spam nevymýtí – jste-li však webmastery většího počtu stránek, snad vám pomůže jeho rozsah alespoň trochu omezit. Je nutno také brát do úvahy tu skutečnost, že kromě robotů takto „odfiltrujeme“ i určité procento návštěvníků s vypnutým JavaScriptem.

Přeji vám příjemný den.

Starší komentáře ke článku

Pokud máte zájem o starší komentáře k tomuto článku, naleznete je zde.

Předchozí článek Macromedia Flash 5 a práce s XML
Další článek Regulární výrazy v PHP 1.
Štítky: Články

Mohlo by vás také zajímat

Nejnovější

2 komentářů

  1. tone

    Srp 12, 2010 v 18:50

    cituji : „kromě robotů takto „odfiltrujeme“ i určité procento návštěvníků s vypnutým JavaScriptem“ .. dle mého uživatel, který na internet přichází s vypnutým javascriptem je asi stejně chytrý jako ten co přijde s MSIE … a tak bych chtěl poradit pár uživatelům: „Jestli v hlavě máte něco jiného než piliny tak jí používejte!“

    Odpovědět
  2. Zdendys

    Říj 2, 2011 v 15:04

    Založili jsme novou stránku, novou doménu, asi týden tam byly emaily odkryté, dnes jsem je skryl uvedeným způsobem. Uvidíme jak dopadne schránka až se nám začnou množit návštěvy.

    Díky Zdendys

    Odpovědět

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *