Maskovanie e-mail adresy pomocou jQuery pluginu ako obrana proti spamovaniu

Maskovanie e-mail adresy pomocou jQuery pluginu ako obrana proti spamovaniu

Najlepšia – a asi aj jediná – účinná obrana proti spamu, je nezverejniť nikde svoju e-mailovú adresu.

Pre majiteľov web stránok je to ale väčsinou neprípustné, keďže potrebujú, aby ich návštevníci stránky mohli na ich e-mailovej adrese kontaktovať.

V tomto článku vám ukážem jednoduchý jQuery plugin, pomocou ktorého zamaskujem na stránke e-mailovú adresu pred spambotmi.

Najdôležitejším kritériom pre nás zostáva prístupnosť – teda aby aj návštevníci stránky, ktorí nemajú JavaScript, videli e-mailovú adresu správne (Graceful degradation).

Tvar e-mailovej adresy

Dnešné boty, hľadajúce e-mailové adresy, sa okrem samotných mailto: adries v linkách zameriavajú aj na e-mailové adresy v texte a aj na samotné domény. Na nájdené domény potom posielajú spamy na adresy info@, sales@, a vlastne na skoro akékoľvek náhodné.

Potrebujem sa evidentne vyhnúť čistému vypísaniu e-mailových adries na stránku.

Môj cieľ pri publikovaní e-mailových adries na webe bol, aby mali štandardnú funkcionalitu pre čo najviac návštevníkov stránok. Teda aby boli vo formáte:

<a href="mailto:meno@domena.sk">meno@domena.sk</a>

Zároveň chcem zabezpečiť, aby pre návštevníkov bez JavaScriptu boli adresy publikované aspoň ako čistý text, ktorý sa dá vkladať do schránky (CTRL + C) a použiť rovno v e-mailovom kliente. Chcel som sa teda vyhnúť rôznym praktikám typu meno (at) domena (bodka) sk a podobne.

Riešením je publikovať e-maily nasledovne:

<span class="email">
<span>meno</span><span>@</span><span>domena</span><span>.sk</span>
</span>

Takto zapísaný email sa v prehliadači zobrazí ako čistý text, teda takto:
meno@domena.sk
Zároveň je ale pre bežné spam roboty neidentifikovateľný ako e-mailová adresa, vďaka elementom span, ktoré obklopujú každú časť e-mailovej adresy.

JQuery plugin

Pomocou jednoduchého jQuery pluginu môžeme z tohto zápisu vytvoriť užívateľsky prístupné a klikateľné linky. Plugin sa volá nospamemail:

/*
* NoSpamEmail plugin
* Copyright (c) 2009 AlejTech
* Licensed under the LGPL License
*/
(function($) {
    $.fn.nospamemail = function(options) {
        return this.each(function() {
            var _email = $('span', this).text();
            $(this).empty().append('<a href="mailto:' + _email + '">' + _email + '</a>');
        });
    }
})(jQuery);

Tento plugin vezme všetky elementy span, ktoré nájde a zlúči ich textový obsah do jedného reťazca – e-mailovej adresy. Nakoniec ich všetky nahradí linkou v tvare:

<a href="mailto:meno@domena.sk">meno@domena.sk</a>

Volanie pluginu je potom veľmi jednoduché:

$(function() {
    $('span.email').nospamemail();⁞
});

Demo

A nakoniec si pozrite demo a hlavne jeho zdrojový kód.

Skôr ako začneme: nahliadnite do spracovania vašich osobných údajov

Súbory cookies používame najmä na anonymnú analýzu návštevnosti a vylepšovanie našich web stránok. Ak si nastavíte blokovanie zápisu cookies do vášho prehliadača, je možné, že web sa spomalí a niektoré jeho časti nemusia fungovať úplne korektne. Viac info k spracúvaniu cookies.