2015-03-05 18 views
6

To jest powtarzające się pytanie na stronie internetowej, ale po spędzeniu 20 minut na przeglądaniu starych pytań nie mogłem znaleźć nowoczesnego rozwiązania.Jak chronić adresy e-mail na stronie internetowej przed botami działającymi na współczesne JS?

Użyłem już tej metody opartej na JS do ochrony adresów. Przed metodą JS korzystałem z rozwiązań opartych na obrazie i pamięci flash. Poniżej jest mój stary sposób.

Animowane przykład codepen: http://codepen.io/anon/pen/kIjKe/

HTML:

<span class="reverse eml">[email protected]</span><br> 

CSS:

.reverse { 
    unicode-bidi: bidi-override; 
    direction: rtl; 
} 

.eml { 
    display: inline; 
} 

JS:

function reverseEmails() { 
    if (jQuery(".eml.reverse").length > 0) { 
    jQuery(".eml.reverse").each(function() { 
     var that = jQuery(this); 
     var email = that.text().split("").reverse().join(""); 
     that.removeClass("reverse"); 
     that.html("<a href='mailto:" + email + "'>" + email + "</a>"); 
    }); 
    } 
} 

Żadna z tych metod wydają się działać nowad ays, ponieważ skrobaki bazujące na Node.js są w stanie wygenerować obraz strony, którą zeskrobują, a następnie odczytać dane odczytywane przez człowieka z tego obrazu - możesz odgadnąć resztę.

Czy istnieje jakaś metoda, która działa w dzisiejszych czasach, w której użytkownicy nadal mogą łatwo odczytać/kliknąć/skopiować wklej adresy e-mail, ale roboty z obsługą JS nie mogą tego zrobić?

+0

IMHO, nie powinieneś już więcej się tym przejmować ... po prostu użyj dobrego filtra antyspamowego. Dostaniesz spam w każdym razie, nawet na adresy, które nie są publikowane w Internecie. – CBroe

+1

Przyjmowanie spamu jako nieuniknionego jest po prostu * błędne *. Nie mogę twierdzić, że mam adresy w 100% wolne od spamu, ale udało mi się ograniczyć to do poziomu, na którym nadal mogę wysyłać skargę dotyczącą nadużycia w odniesieniu do każdego otrzymywanego przeze mnie. – tripleee

+0

Mój e-mail ma ponad 10 lat i wciąż otrzymuję zaledwie minutę spamu. Jest to możliwe, jeśli nie jesteś nieostrożny :) – red

Odpowiedz

1

Umieść adres e-mail na oddzielnej stronie, która jest dostępna tylko po rozwiązaniu CAPTCHA.

To prawda, że ​​zabezpieczenie jest tak dobre, jak bezpieczeństwo CAPTCHA.

Używanie własnych obfuskacji może stanowić poważną alternatywę, jeśli masz ograniczoną liczbę adresów, które chcesz chronić. Kilka pomysłów, z których korzystałem w przeszłości;

  • Krzyżówka. Uczyń to naprawdę łatwym, z podpowiedziami takimi jak znane tytuły piosenek z jednym brakującym słowem (łatwe do Google i bez dyskusji o możliwych drugich interpretacjach). Możesz wpisać wiele liter, aby było jeszcze łatwiej.
  • Nagrywanie dźwięku z hałasem w tle. Nie chciałem używać własnego głosu, więc użyłem syntezatora mowy z niemieckim akcentem (-: AT & T web demo IIRC) i miksowałem w ciągu kilku sekund muzyki w tle (Frank Kuappa's Peaches en regalia działa bardzo dobrze dla mnie, ale smaki różnią się).
  • Ręcznie rysowane obrazu. Lubię rysować kontury liter, ale wątpię, czy są one wystarczająco regularne, aby przekazać jakiekolwiek OCR.

Prawdziwą wołowiną nie jest tu gwiezdny blask tych rozwiązań, ale różne podejścia, które mam nadzieję, mogą zainspirować do myślenia w nowych kierunkach. W końcu zawsze będziesz bezpieczniejszy, jeśli wybierzesz własne unikalne rozwiązanie; wszystko, co przypomina "nowy standard de facto", będzie najniżej wiszącym owocem, który skrobaki spędzą, próbując zerwać.

Nawiasem mówiąc, starałem się myśleć o użyteczności dla osób niepełnosprawnych, więc faktycznie wdrożyłem wersję audio jako zabezpieczenie dla osób, które mają problemy z interakcją z pozostałymi dwoma, które są oparte na układzie wizualnym.

W międzyczasie bardzo niewiele osób chce wysłać mi e-mailem te dni w każdym razie (a może robią, ale w końcu są odrzucane jako spam?), Co jest prawdziwą ulgą. Ci, którzy zazwyczaj używają informacji o rejestracji Whois dla mojej nazwy domeny (która używa anonimowego adresu podanego przez rejestratora Whois) lub są dobrymi odgadywaczami.

+0

Zgadnij, pójdę z włączonym przyciskiem "kliknij, aby aktywować" dialog captcha, który umieszcza adres e-mail na stronie, jeśli ci się uda. – red

1

Podejrzewam, że twoja intuicja jest poprawna, jeśli adres e-mail jest wyświetlany na stronie, a następnie bot może go zeskrobać.

Twój najlepszy sposób polega na zaangażowaniu strony serwera w jakiś sposób.

Na przykład, jeśli chcesz tylko odwiedzających, aby móc was dotrzeć, a następnie można dodać „Kontakt” formularz jak ten: https://store.theonion.com/t-contact.aspx

Jeśli chcesz odwiedzających, aby móc dotrzeć do siebie nawzajem, a następnie może być konieczne zbudowanie systemu anonimizacji, takiego jak Craigslist.

6

To osobiście moja ulubiona metoda, którą jak do tej pory udało mi się znaleźć, nie jest odporna na pociski, w teorii bot, który potrafi parsować CSS3 i może przetworzyć wyszukiwanie tekstowe, ale może go znaleźć lub spambot, który wywołał zdarzenia w aby zebrać adresy e-mail, trzeba by podać stronę w zasadzie bezgłową przeglądarkę, w jakiś sposób ustalić, co może być zakodowaną przez JS treść e-mailową, te scenariusze są ogromną ilością pracy, prawdopodobnie bez korzyści i żaden spamer nigdy by nie pomyślał o tym, fakt jest miałem do tej pory żadnego spamu i działa świetnie dla ludzi, zarówno do odczytu lub kliknij:

<style> 
    .email:after{ content:'@mydomain.com'; } 
    </style> 
    Contact me at:<div class="email">myemail</div> 
    <script> 
$('.email').click(function(){ 
window.location.href='mailto:'+$(this).html()+'@mydomain.com'; 
}); 
</script> 

Chodzi o to, że e-mail nie jest link więc boty nie wywołać zdarzenie click jako th nawet nie wiedzą, że to coś da.

+0

Sprytna sztuczka. Zacznę używać tego dzisiaj. –

+0

Dzięki za tę wskazówkę, wydaje się dość solidny. – red