Witam,
tak się dzisiaj zastanawiałem w ramach małego oderwania od kodowania pewnej upierdliwej aplikacji nad tematyką zabezpieczania adresów e-mail podawanych na stronach www.
Trochę poczytałem sobie jak proponują to robić inny i trafiłem na 3 rozwiązania:
- Zakodowanie ciągu "mailto:adres@domena.pl" encjami HTML
- odwrócenie tekstu z poziomu CSS (właściwość content, unicode-bidi, direction) + sposób z display:none i w JS zmiana na display:block
- jako obrazek...
Tak się tylko zastanawiam, czy dla robotów kodowanie encjami html to na prawdę przeszkoda? Teoretycznie mogą one "znać" ciąg kodujący "mailto:" i ":otliam" i na tej podstawie łatwo wychwycić, czy dany element może być potencjalnym adresem e-mail.
Co do CSS to z tego co sprawdzałem googlebot ich nie dostaje, ale z drugiej strony należy pamiętać, że google wykrywa sztuczki typu "color:white" dla tekstu na białym tle strony (dawne metody na keywords), czy height:1px itp. Wydaje mi się więc, że nie można tak do końca zakładać, że CSS są w pełni ukryte przed robotami (chyba, że się mylę?). Ponad to w przypadku CSS uważam, że metoda z odwracaniem znaków może być nieco problematyczna jeśli ktoś będzie chciał z ręki przekopiować adres (chyba, że odpowiednio to przechwycimy).
Sposobu z obrazkiem nie będę komentował z myślę oczywistych powodów.
Zastanawiając się nad tym zrobiłem swoją wersję ochrony e-maila, dostępną na: https://jsfiddle.net/drogimex/uL1radap/
Moje założenia są następujące:
- Tworzymy pusty znacznik <p>
- Przypisujemy do tego znacznika <p> CSS :hover imtujący zachowanie jak <a>, czyli np. color, cursor itp.
- Robot wchodząc na stronę widzi tylko pusty znacznik <p> i ewentualnie jego CSS, czyli de facto nic co mogłoby w jakikolwiek sposób wskazywać mu, że to może być e-mail
- Z poziomu JS po wczytaniu strony modyfikujemy textContent znacznika p i wstawiamy tak nasz adres@domena.pl
- Nasłuchujemy zdarzenia kliknięcia w nasz znacznik <p> i wywołujemy window.location.href="mailto:adres@domena.pl" co otwiera domyślny program/aplikację pocztowy. W każdej chwili możemy również swobodnie kopiować sobie ten adres i ręcznie wklejać w programie pocztowym. Robot natomiast nie mając dostępu do JS w ogóle nie wie, że tutaj za chwilę będzie adres e-mail.
To są jednak tylko moje pewne założenia. Czasami spotykam jeszcze jedną metodę polegającą na częściowym ukryciu adresu i zrobieniu czegoś na styl przycisku "Pokaż adres", a po jego kliknięciu następuje modyfikacja elementu i wprowadzenie pełnego adresu. Założenie podobne jak moje, czyli że roboty nie będą uruchamiały JS, tylko że wymaga to nieco więcej ingerencji użytkownika... a ja lubię poszukiwać rozwiązań jak najmniej absorbujących użytkowników :)
Wiem, że z moja metoda uniemożliwi wysłanie e-maila użytkownikom, którzy mają wyłączoną obsługę JS lub urządzenia bez JS, ale pytanie ile % z nich faktycznie chciałoby na takich urządzeniach wysyłać wiadomość? (według mnie można ich w tym wypadku pominąć, ale chętnie usłyszę inne zdania na ten temat).
Zapraszam do dyskusji i krytykowania / analizowania powyższych metod (w tym i tej mojej).
Pozdrawiam