Czasami musimy opublikować na stronie WWW adres e-mail w jawnej postaci, jako tekst. Jak to zrobić, by nie dać się złapać w sidła spamerskich robotów? Rozwiązań jest dużo, poczynając od szyfrowania przy pomocy JavaScriptu, przez odwracanie tekstu z CSS, kończąc na zamienianiu znaków na ich encjowe odpowiedniki w HTML.
Pomysłów i sztuczek jest oczywiście więcej, a do ich grona dodam sprawdzoną i prostą w implementacji metodę, której używam.
Potrzebny kod HTML/JavaScript:
1 | <a href="#" class="mail" data-mail-local="fake" data-mail-domain="kamilbrenk.pl" tabindex="0" onfocus="this.href='mailto:' + this.getAttribute('data-mail-local') + '\u0040' + this.getAttribute('data-mail-domain');">Wyślij mail</a> |
Tak stworzony link odsyła już do adresu fake@kamilbrenk.pl. Czasami potrzebujemy pokazać adres e-mail bezpośrednio w tekście, jako link. Do tego celu potrzebujemy kilku dodatkowych linijek CSS:
1 2 3 | .mail {position: relative} .mail:before {content: attr(data-mail-local) "@"} .mail:after {content: attr(data-mail-domain)} |
W wyniku tego otrzymamy coś na wzór normalnego odsyłacza, lecz niedostępnego dla spamiarek:
1 | <a href="mailto:fake@kamilbrenk.pl">fake@kamilbrenk.pl</a> |
Jak to działa?
Metoda należy raczej do prostych, lecz wypadałoby dodać kilka słów wyjaśnień:
- w atrybucie data-mail-local musisz podać część adresu przed znakiem @, natomiast w atrybucie data-mail-domain część za znakiem @; atrybuty te możesz łatwo zmienić, lecz musisz pamiętać o ich poprawieniu we wszystkich częściach kodu (HTML, CSS i JavaScript)
- metoda działa również w przeglądarkach z wyłączonym JavaScriptem, z tym, że bez obsługi JavaScriptu link nie będzie klikalny – jedynie możliwy do skopiowania/samodzielnego odpalenia,
- dla elementu potrzebujesz zdefiniować atrybut tabindex, by obsługiwał zdarzenie focus,
- link jest domyślnie nieaktywny – zostaje stworzony dopiero w momencie kliknięcia przez użytkownika (obsługuje również ekrany dotykowe).
Kod jest kompatybilny z W3C, nie wymaga używania zewnętrznych narzędzi do szyfrowania, umożliwia ręczne kopiowanie adresu, jest prosty w implementacji, działa od razu po wczytaniu strony. Przede wszystkim jednak jest skuteczny w działaniu! :-)
Ciekawe.
Ja stosuję obecnie metodę z CSS:
.revers {unicode-bidi:bidi-override; direction: rtl;}
lp.retsam@ekaf
Ale jest to rozwiązanie do samodzielnego przepisania i wpisania do programu pocztowego.
Świetne! Dziękuję. Na pewno użyję.
Oby tylko klienci nie wymagali zgodności z
przeglądarkąIE7@lsg: również znam tą metodą – prosta w implementacji, lecz jeśli pisałbym robota poszukującego maile to z pewnością sprawdzałbym podpięte style i w przypadku wykrycia powyższych regułek, odwrócił z automatu tekst :)
@Tym3k: raczej nie wspieram już niczego poniżej IE8. A jeśli klient zażyczy sobie wsparcia dla IE7 to cena wzrośnie o jakieś 50-100% :-)
[…] Jak to zrobić, by nie dać się złapać w sidła spamerskich robotów? […]
Pomysł do zastosowania w praktyce, bardzo chętnie skorzystam…