Zakoduj swój e-mail?

Obroną przed grasującymi po Sieci robotami, które automatycznie zbierają adresy e-mail jakie znajdą, by dołączyć do spamerskich baz danych może być – według wielu osób – różnorakie kodowanie adresu e-mail.

Jednak niestety – tak w gruncie rzeczy to większość z popularnych w internecie metod jest w gruncie rzeczy nie warta nic. Albo bardzo niewiele. Ot choćby takie coś jak popularna zamiana znaku “@” na “(at)” czy inne “[at]“. Co stoi na przeszkodzie by w spamerskim bocie po pobraniu tekstu strony zmieniać wszystkie “(at)”, “[at]” czy inne, nawet takie jak moje “(na)” po prostu na “@”? Nic nie stoi na przeszkodzie. Tak samo nic nie stoi na przeszkodzie by zamieniać znak @ czyli właśnie “@” w innym zapisie.

Niektórzy zatem tworzą bardziej skomplikowane rozwiązania kodujące adres e-mail. Oprócz zamiany samego “@” na ciąg postaci &#xx; zamieniane są wszystkie znaki w adresie. Przeglądarka wyświetla to jak trzeba, w źródle strony będzie nieczytelne. Albo dodają do adresu nadmiarowe rzeczy w rodzaju USUNTO (spam@example.com.usunto), które raczej zauważy i usunie tylko człowiek, a nie robot. Im bardziej niekonwencjonalne rozwiązanie, tym bardziej skuteczne. Te popularniejsze już przecież musiały zostać przez spamerów zauważone, prawda? Dlatego szczerze wątpię w skuteczność zamian na encje.

Niezłe jest wykorzystanie obrazka z adresem. Jednak należy wystrzegać się takich sytuacji, gdy adres e-mail jest umieszczony w obrazku (i nie do odczytania przez normalne roboty), ale adres np. komunikatora GTalk (taki sam jak e-mail) już nie jest w żaden sposób “ukryty”. Oczywiście obrazek ma też tą wadę, że jest nie do przeczytania przez osoby niewidome czy używające przeglądarek tekstowych.

I są w końcu skrypty JavaScript. Jedni stosują wymyślne podstawianie i zmiany w tekście w drzewie DOM, inni po prostu wpisują tekst na stronę używając document.write(). Jednak tak naprawdę, czy te rozwiązania są skuteczne? Przeglądarka internetowa obsługująca JavaScript wyświetla adres już na przykład w formie zdekodowanej. Zatem czy coś stoi na przeszkodzie, by stworzyć robota zbierającego adresy obsługującego JS? Albo może nawet zapytam inaczej – czy jest jakikolwiek sens tworzyć takiego robota, skoro mamy już gotowe mechanizmy do wykorzystania – właśnie silniki przeglądarek internetowych! Jakiś czas temu w ramach nauki C# stworzyłem taki program – wykorzystując kontrolkę WebBrowser potrafi ominąć większość “zabezpieczeń” adresu e-mail jakie są stosowane, bo nie operuje na normalnym źródle strony, a na tekście już “przetrawionym” przez JavaScript.

Jednak tworząc ten program (i szukając różnych metod ukrycia adresu) znalazłem zabezpieczenie, które będzie bardzo trudne do ominięcia. Wystarczy stworzyć odnośnik, do którego zdarzenia onclick będzie podpinana funkcja, która naszą przeglądarkę na właściwe źródło nakieruje. Wydaje się proste. Należy jednak pamiętać, by podmieniając adres nie napisać go gdzieś w źródle w postaci jawnej (np. var newmail = mailto:dobry@example.com), a składać go na przykład z kilku zmiennych. Dlaczego? By ustrzec się z kolei przed robotami operującymi na źródle, które z pewnością taki ładny link by zauważyły, nawet poza znacznikiem <a>.

A może są jakieś inne metody, dobre i naprawdę skuteczne, a ja o czymś nie wiem?

Technorati Tags: , , ,

19 komentarzy

»
  1. #1 zx
    Wrzesień 18, 2007 godzina 16:41

    Najgorsze w tych wszystkich zabezpieczeniach jest to, że zwykłe kliknięcie już nie otwiera mi Thunderbirda, a muszę ręcznie przekopiować (i pozmieniać) adres. Ja sam wpisuję zwyczajnie zx(you should type @ sign here)piasta.pl. Nadawałby się ewentualnie flash wielkością obejmujący tylko adres (wtedy i program pocztowy się otworzy), ale z drugiej strony np. sam flasha włączonego tylko dla niektórych stron.

    Zwyczajnie denerwujące jest to, że każda nowa technologia zaraz wykorzystywana jest na reklamy (pojawił się mail – pojawił się spam, pojawił się flash – pojawiły się głupie reklamy zasłaniające wszystko).

    Myślę, że rozwiązaniem (przynajmniej częściowym) byłoby zaostrzenie przepisów prawnych, ale… to musiałyby zrobić wszystkie państwa na świecie, więc nie ma co liczyć i na to…

  2. #2 Kacper Kwapisz
    Wrzesień 18, 2007 godzina 17:35

    Z tym onclick nie jest również do końca bezpiecznie (chyba z niczym nie będzie)… wystarczy, że taki spambot będzie wchodził nie tylko na wszystkie a-href’y, ale również wykonywał wszystkie zdarzenia typu onclick, onmouseover itd. co skomplikowane nie jest.

  3. #3 b4it
    Wrzesień 18, 2007 godzina 18:16

    Niestety nie ma rozwiązania idealnego. Ja osobiście używam abc [małpa] gmail.pl. Nie jest to rozwiązanie nie do przejścia ale minimalizuje ryzyko bo w końcu większość botów nie zna polskiego języka.
    Bardzo dobrym rozwiązaniem jest korzystanie z np. spambox.us. Oczywiście tylko w przypadku gdy oczekujemy konkretnego maila w bliżej określonym czasie (np. prośba o zaproszenie w komentarzu na blogu).

  4. #4 Konrad
    Wrzesień 18, 2007 godzina 19:17

    b4it mówi prawde! Piwo mu :) To, że piszemy po polsku stawia nas w całiem dobrej pozycji. [małpa] zostanie ominięta przez większość botów… a przynajmniej tak mi się wydaje. Ja się kiedyś spotkałem z user@mail.com Choć najbezpieczniejszy moim zdaniem jest plik JPG czy GIF z adresem. Zawsze można go pisać znacznikiem ALT.

  5. #5 Konrad
    Wrzesień 18, 2007 godzina 19:20

    user@mail.com po user miał być komentarz HTML spacja i zaończenie komentarza :)

  6. #6 www.wpigulce.net
    Wrzesień 18, 2007 godzina 21:56

    Zakoduj swój e-mail…

    Obroną przed grasującymi po Sieci robotami, które automatycznie zbierają adresy e-mail jakie znajdą, by dołączyć do spamerskich baz danych może być – według wielu osób – różnorakie kodowanie adresu e-mail. Jednak niestety – tak w gruncie …

  7. #7 inSane
    Wrzesień 18, 2007 godzina 22:31

    A co byście powiedzieli na kilka div’ów z częściami adresu i rozrzuconych po różnych miejscach w kodzie, ręcznie za pomocą CSS (pozycjonowanie absolutne) ustawionych obok siebie (żeby było widać cały adres)? Oczywiście tylko tam gdzie można na stałe ustawić pozycję danego bloku. Tak tylko główkuję… Zdałoby to egzamin?

  8. #8 Grzesiek Wolański
    Wrzesień 18, 2007 godzina 22:56

    Nie, inSane, nie zdałoby :)

  9. #9 Ktos
    Wrzesień 19, 2007 godzina 08:10

    Kacper Kwapisz: Ale napisanie bota, który dodatkowo wykonywałby wszystkie zdarzenia na wszystkich istniejących elementach strony mijało by się z celem, bo było by nieoptymalne.
    Zresztą, ja nie wiem czy optymalne jest nawet tworzenie bota z obsługą JavaScript, skoro tak wiele adresów można zebrać bez tego.

    Konrad: Ale pisanie adresu w formie czytelnej w znaczniku alt który zawiera adres w formie nieczytelnej jest głupie, bo z kolei analizując źródło można bezproblemowo wychwycić :-)

    inSane, Grzesiek Wolański: A może zadziała? Kto tam wie, trzeba by sprawdzić. Ale jak już CSS to możemy użyć takich wymyślnych rzeczy jak font w CSS ;-)

    A propos zabezpieczania adresu to Tonid napisał kiedyś niezły tekst.

  10. #10 Łukasz
    Wrzesień 19, 2007 godzina 09:31

    @b4it
    Akurat w przypadku który podałeś język dużo nie zmienia. Teksty:user {małpiszon}gmail.com, user [???????] gmail.com, user (kroll-alfa) gmail.com, user/chiocciola/gmail.com nie są wcale wiele trudniejsze niż zwykłe [at], zwłaszcza, że są listy słów jakich używamy zamiast @ w różnych językach i że to ‘gmail.com’ tak naprawdę przykuwa uwagę bota…

    Co do radzenia sobie przez JS, może ochroni to adres na jednej stronie ale jak znam życie to zawsze ktoś może go opublikować na jakiejś innej, lub dać sobie wykraść książkę adresową:(

  11. #11 {o}
    Wrzesień 19, 2007 godzina 13:57

    To może zdefiniować w DOCTYPE encje nazwne z fragmentami adresu? Tyle tylko, że jedynie użytkownicy Opery będą umieli przeczytać taki adres :P

  12. #12 Fluxid
    Wrzesień 19, 2007 godzina 16:35

    A co powiesz użytkownikom celowo wyłączającym js na stronach www gdy zechcą adres e-mail?

  13. #13 Ktos
    Wrzesień 19, 2007 godzina 17:48

    {o}: A może w ogóle pisać strony w XML+XSLT w takim wypadku, i stworzyć sobie encję będącą adresem e-mail która będzie gdzieś w pliku dtd? ;-)

    Fluxid: Tak, moje rozwiązanie nie da tutaj rady.

  14. #14 wzs
    Wrzesień 19, 2007 godzina 18:43

    Tak samo to wygląda, jak kwestia blokowania spamu.
    Póki co spokojnie wystarczy stosować prostą, ale mniekonwencjonalną metodę. I będzie skutecza, bo jak wiemy dla programisty spamocrawlera to chwila roboty dopisać regułkę wychwytującą [małpę] [at] czy .wytnijto

    Ale tego nie zrobi, bo lepiej puścić robota dalej – my poblokujemy sobie maile, a zaspamują zwykłych śmiertelników.

  15. #15 satorian
    Wrzesień 21, 2007 godzina 12:27

    A może… Flash? Przeskanować zawartość pliku .swf nie jest tak łatwo.

  16. #16 {o}
    Wrzesień 28, 2007 godzina 11:54

    Przedstawić e-mail w formie rebusa! :P

  17. #17 marcin
    Kwiecień 27, 2009 godzina 18:02

    a mi sie wydaje ze nie ma znaczenia jezyk uzywany w pisaniu adresu tylko wlasnie te klamerki {} [] (). Ja osobiscie uzywam aliascostam@domena.com i w CSS
    span.spamfilter
    {
    display: none;
    }
    Oczywiście nie działa to na wszystkie boty, ale przynajmniej na takie co nie uzywaja CSS, lub przeczesuja kod.
    Ps. Jak narazie nie mam problemów ze spamem.
    Pozdrawiam
    Marcin

  18. #18 marcin
    Kwiecień 27, 2009 godzina 18:07

    heh myslalem ze komentarz przepuszczany jest przez htmlspecialchars(), anie strip_tag(). adres mial sie wyswietlic tak alias < span class=”spamfilter” $gt;costam < /span > @domena.com
    Pozdrawiam

  19. #19 marcin
    Kwiecień 27, 2009 godzina 18:10

    “A co powiesz użytkownikom celowo wyłączającym js na stronach www gdy zechcą adres e-mail?”

    Żeby go sobie włączyli?

Wątek RSS dla komentarzy tego wpisu · Adres trackback

Zostaw komentarz

Dozwolone są niektóre znaczniki XHTML, jak: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Na tym blogu stosowana jest wtyczka antyspamowa Spam Karma. Jeżeli Twój komentarz nie pojawia się, lub po jego dodaniu otrzymujesz pustą stronę - poczekaj, komentarz został dodany, ale albo oczekuje w kolejce, albo został mylnie zakwalifikowany jako spam - spokojnie, gdy zajrzę do panelu administracyjnego to uratuję go.