Przez ostatnie kilka dni pracowałem nad aktualizacją mojej osobistej strony internetowej. Adres URL mojej osobistej witryny internetowej to (moje imię). (Moje nazwisko) .com, ponieważ moje nazwisko jest raczej nietypowe i miałem szczęście odebrać nazwę domeny. Mój adres e-mail to (moje imię) @ (moje nazwisko) .com. Więc tak naprawdę, jeśli chodzi o zgadywanie, nie jest to zbyt trudne.
W każdym razie chcę zintegrować mailto: link z moją witryną, aby ludzie mogli się ze mną kontaktować. I pomimo tego, że mój adres e-mail nie jest zbyt trudny do odgadnięcia, wolałbym, aby nie był on przechwytywany przez roboty spamujące, które po prostu przeszukują strony internetowe w poszukiwaniu wzorców adresów e-mail i dodają je do swojej bazy danych.
Jaki jest najlepszy sposób na zaciemnienie adresu e-mail, najlepiej w formie linków? Metody, które znam, to:
<a href="mailto:[email protected]">e-mail me</a>
To działa, ale oznacza również, że gdy tylko moja witryna trafi do Google, będę przedzierać się przez spam, ponieważ roboty spamujące z łatwością wykrywają mój adres e-mail.
<img src="images/e-mail.png" />
Jest to mniej pożądane, ponieważ odwiedzający nie tylko nie będą mogli kliknąć go, aby wysłać mi e-mail, ale sprytniejsze roboty spamujące prawdopodobnie będą w stanie wykryć znaki, które zawiera obraz.
Wiem, że prawdopodobnie nie ma idealnego rozwiązania, ale zastanawiałem się tylko, co wszyscy uważają za najlepsze. Zdecydowanie jestem skłonny użyć JavaScript, jeśli to konieczne, ponieważ moja strona internetowa już korzysta z niego.
źródło
Odpowiedzi:
Koduję znaki jako encje HTML ( coś takiego ). Nie wymaga włączonego JS i wydaje się, że zatrzymał większość spamu. Przypuszczam, że sprytny bot może nadal go zbierać, ale nie miałem żadnych problemów.
źródło
Osobiście zrezygnowałem z ukrywania adresu e-mail. Łatwiej jest mi przyjrzeć się lepszym rozwiązaniom do filtrowania spamu, niż martwić się o zaciemnianie. Możesz spędzić całe dni próbując znaleźć najlepszy sposób na zaciemnienie adresu, a wtedy wystarczy jedna osoba, aby sprzedać Twój adres spamerowi i cała ta praca była bezużyteczna.
źródło
Obecnie akceptowanym rozwiązaniem jest utworzenie formularza kontaktowego, który umożliwia użytkownikom wysyłanie wiadomości e-mail. Jeśli dostaniesz z tego dużo spamu (nie ma mnie na mojej stronie), możesz dodać captcha dla dokładności i będziesz daleko od "nisko wiszącego owocu" w tym momencie.
Faktem jest, że jeśli podajesz link, który użytkownik może kliknąć, aby otworzyć swojego klienta poczty e-mail z Twoim adresem w polu Do:, to komputer jest w stanie odszyfrować adres e-mail ze strony i tak samo może bot spamujący.
źródło
Wspomniałeś, że to jest dla twojej osobistej strony internetowej. Na mojej osobistej stronie (na przykład bobsomers.com) mam po prostu akapit, który mówi tak:
Wydaje się, że ludzie są w stanie to zrozumieć, ponieważ cały czas otrzymuję wiarygodne e-maile. Czasami najlepsze rozwiązania nie wymagają pisania żadnego kodu. :)
źródło
reCAPTCHA oferuje prostą usługę zaciemniania wiadomości e-mail . Nie musisz zakładać konta i możesz od razu zacząć z niego korzystać. Możesz użyć usługi jako linku lub wyskakującego okienka.
Po rozwiązaniu captcha Twój adres e-mail jest wyświetlany jako href / mailto, dzięki czemu mogą go klikać / obserwować użytkownicy, którzy skonfigurowali swoich klientów poczty e-mail do pracy z przeglądarkami.
źródło
Lekkim sposobem zaciemnienia
href
kotwicy jest zakodowanie jej w base64:A następnie dołącz go na stałe:
Lub dynamicznie po stronie serwera, np. W PHP:
W połączeniu z odwróceniem ciągów znaków może to być dość bezpieczne dla spamu:
źródło
Najwyraźniej używanie CSS do zmiany kierunku tekstu działa całkiem nieźle. To łącze zawiera również test wielu innych metod zaciemniania.
Cokolwiek użyjesz, nieuchronnie zostanie pokonane. Twoim głównym celem powinno być uniknięcie irytujących użytkowników.
źródło
Nie używaj tutaj żadnych technik zaciemniania, ponieważ prawdopodobnie jest to pierwsze miejsce, w którym osoby zbierające pocztę e-mail będą szukać informacji, w jaki sposób ludzie zaciemniają wiadomości e-mail. Jeśli chcesz, aby Twój adres e-mail był widoczny w witrynie, nie kopiuj dosłownie metody innej osoby; zaciemniaj ją w unikalny sposób, którego nie używała żadna inna witryna, aby Twoja metoda nie była znana zbieraczom, zanim odwiedzą Twoją witrynę.
źródło
Możesz zrobić to samo, co Google w Google Code (i grupach). Wyświetl część wiadomości e-mail i część, którą można kliknąć („...”). Kliknięcie oznacza, że chcesz poznać wiadomość e-mail i zostaniesz poproszony o wypełnienie captcha. Następnie e-mail (i inne?) Będzie dla Ciebie widoczny.
źródło
moje jest właściwie proste:
źródło
Używam zaciemniania JavaScript, spójrz na ten przykład:
http://www.jottings.com/obfuscator/
źródło
Jedna z witryn, które utrzymuję, wykorzystuje nieco uproszczone metody JavaScript (miejmy nadzieję) do ochrony przed spamowaniem.
Linki e-mailowe wywołują funkcję JS:
Aby mieć pewność, że tylko użytkownicy, którzy mają włączony JS, zobaczą link, napisz je w ten sposób:
Użycie jednej funkcji JS do napisania łącza wywołującego inną oznacza, że istnieją dwa poziomy ochrony.
źródło
Jak wspomniano powyżej, używam również zaciemniania JavaScript ze strony internetowej jottings .
Strona generuje JavaScript, który można ulepszyć.
mailto:
Łańcuch tekstowy jest w klarowny i rozpoznawalny przez roboty (co może dostrzec to i unobfuscate ten ciąg), ale jeśli ktoś wejdzie do jottings.com strony internetowej adres e-mail formymailto:[email protected]
zamiast[email protected]
a następnie usuwa tekstmailto:
z wygenerowanego kodu JavaScript nagle pojawia się JavaScript, który nie wygląda tak, jakby w ogóle miał coś wspólnego z pocztą elektroniczną - po prostu losowy JavaScript, którego sieć jest pełna. Można to jeszcze bardziej poprawić, pozbywając się tekstu linku - zastąpiłem mój obrazem mojego adresu e-mail, który jest dość niejasny. Następnie na wypadek, gdyby ta metoda na jottings.com stała się popularna, losowałem nazwy zmiennych w wyjściowym JavaScript, aby robotowi trudno było wykryć wystąpienie kodu JavaScript wygenerowanego przez jottings.Oczywiście niektóre z tych ulepszeń można by wbudować w sam mechanizm zapisywania, a ponieważ kod jest ogólnie dostępny, byłoby to stosunkowo łatwe.
Przykład może to trochę wyjaśnić. Użyłem Jottings Obfuscator pod powyższym linkiem, aby zasłonić
mailto:[email protected]
(zauważ, że oszukuję oryginalną intencję witryny z notowaniami, wprowadzając ciągmailto:[email protected]
zamiast[email protected]
) z tekstem „Wyślij mi e-mail”, który z notatek przekształcił w ten JavaScript:Po odzyskaniu tego wklejam go do edytora i:
mailto:
Skończyło się na tym:
źródło
Nie wiem, jak dobrze to by działało. Czy nie mógłbyś zostawić swojego adresu e-mail i załadować go za pomocą połączenia AJAX po zakończeniu ładowania strony. Nie jestem pewien, czy roboty spamujące mogą odebrać zmieniony kod HTML lub czy są wystarczająco sprytne, aby nasłuchiwać innego ruchu HTTP, aby spróbować wybrać adresy e-mail, lub czy po prostu skanują stronę, gdy jest odbierana po raz pierwszy.
źródło
Pewien facet przetestował dziewięć różnych sposobów prezentacji adresu e-mail na stronie, a następnie opublikował wyniki na swoim blogu.
Jego trzy najlepsze sposoby to:
Uwaga - to zostało opublikowane dwa lata temu. Boty spamujące mogły stać się mądrzejsze.
źródło
Jeśli pracujesz z PHP, możesz pobrać darmowy skrypt, który robi to automatycznie. Nazywa się „Private Daddy” i używamy go w naszej własnej usłudze strumieniowego przesyłania dźwięku online. Tylko jedna linia kodu i działa po wyjęciu z pudełka ... możesz go pobrać tutaj
źródło
Innym podejściem mogłoby być użycie struktury JavaScript i powiązanie danych / modelu z elementami HTML. W przypadku AngularJS elementy HTML byłyby zapisane jako:
Powiązanie interpolacji {{data}} używa zmiennej zakresu, która zawiera rzeczywistą wartość e-mail. Ponadto można również zastosować filtr, który obsługuje dekodowanie wiadomości e-mail w następujący sposób:
Korzyści wynikają ze sposobu pisania kodu HTML. Wadą jest to, że wymaga obsługi skryptów, które dla niektórych mogą być nie.
po prostu inne podejście.
źródło
Używa JQuery, ale w razie potrzeby można go łatwo przenieść do zwykłego JS. Zajmie następujący blok HTML. Ten przykład, który podałem, dotyczy również
tel:
linków do połączeń telefonicznych.i przekonwertuj go na odpowiednie linki za pomocą JavaScript.
Udokumentowałem to bardziej szczegółowo tutaj https://trajano.net/2017/01/obfuscating-mailto-links/
Algorytm de / zaciemniania jest dość prosty, więc jego zapisywanie nie jest zbyt trudne (nie ma potrzeby analizowania base64)
źródło
Rozwiązanie połączeń Ajax
Najlepiej mieć formularz na stronie i nie pokazywać adresu e-mail, ponieważ wszystkie roboty są bardziej inteligentne z dnia na dzień, ale jeśli chcesz wyświetlać adres e-mail na stronie, możesz to zrobić za pomocą połączenia Ajax na swoim serwer i pokaż go po kliknięciu.
HTML
lub
jQuery
PHP
Dla większego bezpieczeństwa możesz zmienić
.on
w.one
ten sposób$(document).one('click', '.obfmail', function(e) {
lub nawet pracować z tokenem wygenerowanym w PHP, który przekazujesz do danych przy wywołaniu ajax, aby zaakceptować tylko jedno wywołanie funkcji ajax, jak to:html:
<a class="obfmail" href="#" rel="info" token="w3487ghdr6rc">
jQuery:
.
.
źródło
Szczerze mówiąc, Twój problem może być dyskusyjny, jeśli zadasz pytanie, czy naprawdę chcesz użyć poczty mailto. Wiele osób, które na przykład używają poczty internetowej lub nie mają odpowiedniej konfiguracji klienta poczty w swojej przeglądarce, nie odniesie korzyści z mailto. Ujawniasz swój adres e-mail dla funkcji, która nie będzie działać dla dużej części użytkowników.
Zamiast tego możesz użyć formularza do wysłania wiadomości e-mail za kulisami, aby adres e-mail był ukryty i nie musisz się martwić o biednych oszustów, którzy nie skorzystają z poczty.
źródło
Jeśli powiesz w swojej witrynie, że „Mój adres e-mail to (moje imię) @ (moje nazwisko) .com.”, A Twoje imię i nazwisko są cholernie oczywiste, wydaje się, że jest to najlepsza ochrona przed spamem dostaniesz.
źródło
Jeśli ktoś używa Railsów, może użyć
actionview-encoded_mail_to
klejnotu. ( https://github.com/reed/actionview-encoded_mail_to )Jest kilka opcji:
źródło
źródło
Cloudflare oferuje teraz bezpłatną usługę zaciemniania poczty e-mail . Może to być opcja, jeśli używasz Cloudlfare.
źródło
Ponieważ to rozwiązanie nie jest nigdzie wymieniane, ale działa dobrze:
Robię to:
utwórz łącze mailto z fałszywymi wiadomościami e-mail. Lubię [email protected] z oczywistych powodów: Spamer może spamować swój własny botnet, gdy używa tego adresu niezaznaczonego.
zaszyfruj prawdziwy adres e-mail i umieść go w niepowiązanym, ale możliwym do znalezienia ukrytym zakresie lub w jakimkolwiek elemencie, który lubisz. Oczywiście, aby zaciemnić wiadomość e-mail i ukryć ją przed kombajnem. W zależności od struktury projektu możesz nawet chcieć umieścić go w zmiennej JS lub Session.
po sekundzie utwórz moduł obsługi kliknięć dla tych linków, który rozszyfruje i zapisze poprawny adres e-mail w fałszywym łączu mailto, nie blokując wartości domyślnych. Nie sądzę, żeby roboty indeksujące klikały linki mailto, ale gdyby tak zrobiły, prawdopodobnie nie czekałyby ani sekundy, podczas gdy istota ludzka musiałaby bardzo szybko kliknąć łącze w pierwszej sekundzie po załadowaniu strony.
Teraz masz w pełni funkcjonalny, ale zaciemniony, honeypoted i zabezpieczony czasowo łącze mailto.
Działający przykładowy plik php:
Niech kod będzie z tobą.
źródło
Co się stanie, jeśli utworzysz łącze „Skontaktuj się ze mną” wskazujące katalog chroniony hasłem? Oczywiście musisz dać przepustkę, aby uzyskać dostęp.
„Skontaktuj się ze mną”> •••••••••••> contact / index.html
Po uzyskaniu dostępu strona contact / index.html ujawnia wiadomość e-mail, na przykład mailto.
źródło
Używam funkcji PHP do generowania javascript do wysyłania wiadomości e-mail podczas ładowania strony. Pamiętaj, że nie potrzebujesz PHP do generowania JS w czasie wykonywania, możesz wygenerować JS raz lokalnie, a następnie dołączyć statyczny JS do swojej strony.
Możesz również użyć połączonej funkcji z tym fragmentem poniżej, aby automatycznie zaciemnić adresy e-mail w danym HTML (gdzie $ ProcessContent to HTML):
źródło
Spójrz na to .
„Formularz Enkodera” zaszyfruje Twój adres e-mail i przekonwertuje wynik do samooceniającego się kodu JavaScript, ukrywając go przed robotami zbierającymi wiadomości e-mail, które przeszukują sieć w poszukiwaniu ujawnionych adresów. Twój adres będzie wyświetlany poprawnie przez przeglądarki internetowe, ale będzie praktycznie nieczytelny dla robotów zbierających wiadomości e-mail.
źródło