Qual è un buon modo per elencare un indirizzo di posta elettronica "Contattaci" su un sito Web, riducendo al contempo la probabilità che venga spam?
Mettere l'indirizzo e-mail in un'immagine è la migliore tecnica o ce ne sono altri?
Qual è un buon modo per elencare un indirizzo di posta elettronica "Contattaci" su un sito Web, riducendo al contempo la probabilità che venga spam?
Mettere l'indirizzo e-mail in un'immagine è la migliore tecnica o ce ne sono altri?
Risposte:
Passo tutti i moduli di contatto attraverso un account Gmail usa e getta, che inoltra la posta al vero indirizzo e-mail. È gratuito, è facile e il rilevamento dello spam di Gmail è di prim'ordine.
Non richiede alcun ulteriore sforzo durante la creazione del sito Web e se qualcosa ti attraversa, accedi all'account Gmail e contrassegnalo come spam.
È quindi possibile impostare la posta in arrivo di Gmail in modo da archiviare automaticamente tutto ciò che è stato inoltrato o addirittura eliminarlo se non si desidera conservare quella copia aggiuntiva.
La mia non risposta è di non farlo. I moderni sistemi di posta elettronica, come GMail e l'appliance antispam Barracuda, svolgono un ottimo lavoro nel filtrare lo spam. Qualsiasi barriera che metti tra te e i tuoi visitatori significa un livello di coinvolgimento inferiore e, a seconda del tipo di sito, una potenziale perdita di vendite.
Se sei preoccupato per gli utenti che non hanno installato il client di posta nativo o che non hanno il mailto: gestore impostato correttamente, allora hai una pagina Contattaci con ENTRAMBI l'indirizzo e-mail collegato e un modulo (senza CAPTCHA) e lascia che l'utente scelga.
Lo spamming è fastidioso, ma è il nostro onere a carico, non i nostri utenti.
Usa il linguaggio naturale per scrivere l'indirizzo e-mail ...
Ex:
thatguy at gmail dot com
Saresti sorpreso di quanto sia più difficile scrivere un bot in grado di differenziare il linguaggio naturale rispetto alla scrittura di un bot che cerca semplicemente il segno @ e regex un indirizzo normale.
Non è sicuro al 100% ma non è peggio dell'offuscamento e non alienerà gli utenti ipovedenti e / o gli utenti che hanno JavaScript disabilitato.
Aggiornamento: ecco un esempio di questa tecnica in azione .
Aggiornamento 2:
Si scopre che qualcuno ha effettivamente fatto ricerche su questo e lo ha pubblicato online. Vedi il post di SuperUser che descrive i risultati o l'articolo originale
thatguy funny-symbol gmail.com
Personalmente, non visualizzo gli indirizzi e-mail sui siti, ma ho invece un modulo di contatto facile da usare e accessibile, con un'indicazione di chi proviene l'email; consentendo agli utenti di inviare e-mail ai proprietari dei siti e agli operatori, senza esporre gli indirizzi e-mail o passare da vari cerchi JavaScript, ecc.
Questo è spesso il modo migliore se il tuo filtro antispam non è così sofisticato.
usa css per nascondere un po 'di rumore dal testo reale (tutto in una riga, l'ho formattato per illustrare meglio la tecnica):
u<span class="spam">noise</span>ser
@<span class="spam">noise</span>
example<span class="spam">noise</span>
.com
e quindi usa questo piccolo frammento CSS:
.spam { display: none; }
se hai bisogno di mailto:
contenuti validi , devi crearli tramite jscript nella dom, vedi alcune delle altre risposte per questo. ma non ne sono un grande amico.
Quello che faccio è scrivere l'indirizzo di posta elettronica come le parole, avvolto in un tag span: <span class="email">joe dot blow at gmail dot com</span>
. Quindi viene eseguito uno script a livello di pagina, afferrando tali intervalli e sostituendo ciascuno con un collegamento e-mail costruito. Potrebbe non essere troppo oscuro, ma non ho avuto lamentele. Inoltre, se JavaScript è disabilitato, l'utente può comunque leggere il testo dell'intervallo effettivo.
La migliore soluzione: utilizzare un filtro antispam .
In realtà utilizzo Gmail per gestire il mio account di posta elettronica POP3 per la mia attività, perché è molto più semplice controllare la posta elettronica su computer diversi. I filtri antispam di Gmail sono i migliori al mondo.
Quindi puoi semplicemente visualizzare webmaster@example.com come il tuo indirizzo e-mail e dimenticare lo spam.
usando la codifica html come ʉẮᶗ
, il browser lo renderà come "abc"
Utilizzare una libreria grafica (come GD supportata da PHP o simili) per creare dinamicamente immagini .png contenenti gli indirizzi e-mail.
Rispetto alla mia altra risposta, questa soluzione è meno fastidiosa per gli utenti (ma non trasparente; non possono copiarla e incollarla ma devono riscriverla da zero) ma è anche meno sicura: un computer può potenzialmente leggere l'immagine non offuscata.
Ma nel complesso penso che sia un buon compromesso; fermerà la stragrande maggioranza dei robot spam.
Un modo abbastanza buono, sebbene non perfetto, è quello di creare l'indirizzo e-mail tramite JavaScript. La maggior parte dei ragni in cerca di e-mail non esegue javascript e quindi non trova un indirizzo e-mail leggibile.
Ecco solo un esempio di come potrebbe essere fatto.
Uso un semplice script Python per convertire l'indirizzo e-mail in un collegamento mailto in cui l'indirizzo e-mail è codificato in entità HTML. Questo è completamente trasparente per l'utente, ma sembra oscurare il contenuto abbastanza da sconfiggere i robot di raccolta più semplici.
#! /usr/bin/env python3.0
def entity_encode(text):
out = ""
ba = text.encode()
for i in range(len(ba)):
out = out + "&#x{0:02x};".format (ba[i])
return out
def print_email_link(address) :
print('<!-- {0} -->'.format(address))
print('<a href="{0}{1}">{1}</a>'.format(entity_encode("mailto:"), entity_encode(address)))
print_email_link("test123@example.com")
Questo dà l'output
<!-- test123@example.com -->
<a href="mailto:test123@example.com">test123@example.com</a>
Quando il risultato viene incollato in una pagina Web, il browser visualizza il testo "test123@example.com" come una hyperline a "mailto: test123@example.com", quindi è altrettanto conveniente per l'utente finale come includere l'indirizzo in chiaro. Ma sembra sconfiggere molti bot di raccolta.
Ovviamente, elimino il commento con la semplice versione ASCII dell'indirizzo una volta incollato il collegamento di posta elettronica oscurato nel punto appropriato nella fonte HTML della pagina Web.
Chiedere all'utente di risolvere un CAPTCHA prima di mostrare loro l'indirizzo e-mail (o se si dispone di un modulo di contatto, prima di consentire all'utente di inviarlo).
È il più fastidioso per gli utenti ma sicuramente il più efficace.
Sono un fan dell'offuscamento, in cui l'indirizzo di posta elettronica è essenzialmente reso con Javascript.
Ad esempio, my@email.com
potrebbe essere reso come
<a href="javascript:location='mailto:\u006d\u0079\u0040\u0065\u006d\u0061\u0069\u006c\u002e\u0063\u006f\u006d';void 0">
<script type="text/javascript">document.write('\u006d\u0079\u0040\u0065\u006d\u0061\u0069\u006c\u002e\u0063\u006f\u006d')</script></a>
Per quanto riguarda l'utente, è un testo normale e può essere copiato e incollato. I robot d'altra parte avranno un momento più difficile.
Ecco l' offuscatore che ho usato.
<a href="#" onclick="document.location.href='mailto:...'; return false">
Senso unico:
<script language="javascript">
<!--
var name = "user"
var host1 = "gm"
var host2 = "ail.com"
var addr =
document.write("<a href=mai" + "lto:" +
name + "@" + host1 + host2 +
">" + name + "@" + host1 + host2 + "</a>")
//-->
</script>
Puoi scrivere "Decodifica la mia e-mail: user at com dot gmail" nei <noscript>
tag per coloro che hanno disattivato JavaScript. In questo modo si ottiene la funzionalità di collegamento ipertestuale. Hai buone possibilità di tenere gli spamming lontani dal tuo indirizzo e le persone con JavaScript disattivato o solo i browser di testo possono ancora ottenere il tuo indirizzo email.
Tutte le tecniche di offuscamento del mondo non possono essere d'aiuto a lungo termine se molte persone ti contattano. Tutto quello che serve è che qualcuno ti mandi un messaggio e in seguito venga infettato da un malware che scansiona la sua casella di posta / posta inviata / rubrica / qualunque cosa per indirizzi validi, e il tuo indirizzo là fuori viene passato da un elenco all'altro [Ho anche dei contatti che sono abbastanza stupidi da mettere lì l'indirizzo e-mail e la password in moduli online per le ragioni più idiote, probabilmente lo hai anche tu, quello più recente è stato un sito che si è offerto di calcolare la "carta e le previsioni dell'astrologia e-mail" di qualcuno che ha immediatamente spammato tutti i i contatti di sciocco con un invito allo stesso sito e <deity> sa solo quali altri elenchi ci troviamo ora come risultato] .
L'indirizzo sui miei siti web pubblici non è solo un indirizzo da buttare via, è su un sottodominio da buttare via. Se comincio a ricevere spam su quel sottodominio, ne creo uno nuovo, aggiorno i siti in cui sono elencati i miei dati di contatto e poco dopo rimuovo completamente il sottodominio dai record DNS. Se lo fai, o qualsiasi altra tecnica di indirizzo usa e getta, assicurati di chiarire (in qualsiasi pagina che elenca l'indirizzo e nel piè di pagina di qualsiasi posta che invii utilizzando quell'indirizzo) che l'indirizzo cambierà in futuro e se le persone possono per passare dovrebbero ricontrollare per assicurarsi che abbiano l'indirizzo corretto.
Questo ha il vantaggio di essere semplicemente un indirizzo per cui le persone possono fare clic (se il loro browser + mailer sono collegati in questo modo) o copiare + incollare senza dover usare il cervello per modificare l'indirizzo in seguito (sono sempre sorpreso da quanti altrimenti le persone intelligenti e attente non riescono a fare bene quel genere di cose). Significa anche che il mio server di posta non passa le sue giornate a rimbalzare i messaggi inviati a indirizzi "casuali" (aaron @, adam @, amy01 @, ...) nei sottodomini scaduti. Inoltre, non confonde i lettori di schermo usati dai non vedenti o dalla posizione sbagliata.
Un'altra opzione che non ho ancora provato è quella di utilizzare una richiesta AJAX per leggere l'indirizzo e-mail e altri dettagli. Questo può essere leggermente più efficace document.write
dell'offuscamento basato, sebbene aggiunga un piccolo carico in più sul server web.
In passato utilizzavo moduli "contattami / noi", ma ho scoperto che vengono spammati tanto quanto, a volte più di, indirizzi e-mail in chiaro - a volte tramite script che stanno cercando di utilizzare il modulo per creare un account da qualche parte piuttosto che usalo come modulo di contatto.
Se hai un filtro bot (usando 1x1px, sottorete, bot noti, rilevamento jscript, referrer http e agente browser) non puoi semplicemente visualizzare le informazioni se si tratta di un bot.
Soluzione in PHP:
<?
if (!isbot()) {
echo 'mailto:'.$email_address_for_real_people;
}
else {
echo 'mailto:yourself_bot@'.$bots_domain_address;
}
?>
isbot()
è una funzione creata dall'utente che punta a qualsiasi routine di filtro bot hai.
La cosa più semplice che ho trovato è utilizzare un modulo di contatto in cui è presente un indirizzo predefinito, ma anche la possibilità per l'utente di selezionare a chi deve andare la comunicazione (marketing, vendite, supporto tecnico, ecc.). Quindi, in base al valore dell'elenco a discesa, i dati del modulo inviato vengono inviati dal server all'indirizzo di posta elettronica appropriato.
Esegui questo elenco di contatti da una tabella del database in modo da poter aggiornare / aggiungere facilmente le voci al menu a discesa. In questo modo non stai mai esponendo alcun tipo di indirizzo al vasto mondo dei robot spam e dai comunque ai tuoi utenti un ottimo modo per inviare feedback.
Assolutamente no, Jose! - Sì, Jose!
Non c'è assolutamente modo di "interrompere" la raccolta di a href="mailto:"
indirizzi e-mail. Si ritiene da tempo che l'uso di JavaScript sia un buon modo per prevenire la maggior parte dei bot di raccolta, ma oggigiorno i bot sono dannatamente bravi a sconfiggere questo metodo. Possono anche sconfiggere le immagini che contengono indirizzi e-mail, allo stesso modo in cui possono sconfiggere captcha utilizzando il software decaptcha.
Il modo migliore!
L'approccio migliore sarebbe quello di utilizzare un servizio di posta affidabile che offra un buon blocco dello spam. Google G Suite e Microsoft Office 365 utilizzano un algoritmo che non ha eguali con alcun software presente sul mercato, principalmente perché ricevono milioni di e-mail al giorno e sono in grado di "apprendere" e inserire nella blacklist gli spammer molto prima ancora che provino a inviarti un'e-mail.
Infatti un anno fa Google ha affermato che la sua tecnologia di apprendimento automatico ora blocca il 99,9% dei messaggi di spam e phishing di Gmail , Microsoft Exchange locale e server di posta che funzionano dietro a plesk / cpanel non sono in grado di competere con questa protezione.
Sommario
Blocca lo spam utilizzando un servizio di posta affidabile in grado di apprendere automaticamente dall'IA. Puoi anche fare un passo ulteriore impedendo agli spammer di visitare il tuo sito utilizzando Cloudflare che rileverà una grande maggioranza di robot aggressivi prima che raggiungano il tuo sito.
Ho usato fred@no-spam.domain.com per anni. Gli utenti in genere sanno abbastanza per eliminare il "no-spam".
In caso contrario, utilizzo semplicemente un modulo di contatto con un "captcha" e invio la posta direttamente dal sito Web.
Una cosa che faccio è usare l'API di http://www.stopforumspam.com per verificare la presenza di spammer. Non esitate a contattarmi per i dettagli e sarò felice di aiutarvi con esso!
Bud Manz
Manz Web Designs, LLC
Se non ti dispiace usare JavaScript, puoi usare qualcosa come ROT13 per offuscare l'indirizzo e-mail. Ad esempio, vedi questo:
http://scott.yang.id.au/2003/06/obfuscate-email-address-with-javascript-rot13/
Personalmente, preferisco usare un modulo di contatto e non preoccuparmi degli spambots, ma ovviamente tutto dipende dalle tue esigenze.
Uso una funzione PHP per generare javascript per generare lo script in fase di esecuzione. Nota che non hai bisogno di PHP per generare il JS in fase di esecuzione, puoi generare il JS una volta localmente e quindi includere il JS statico nella tua pagina.
Puoi anche utilizzare la funzione collegata con questo frammento di seguito per offuscare automaticamente gli indirizzi e-mail in un determinato HTML (dove $ elaboratedContent è l'HTML):
$emailMatches = array();
$matchCount = preg_match_all('/(?:[a-zA-Z0-9_\.\-])+\@(?:(?:[a-zA-Z0-9\-])+\.)+(?:[a-zA-Z0-9]{2,4})+/', $processedContent, $emailMatches);
if($matchCount > 0) {
$emailMatches = $emailMatches[0];
foreach($emailMatches as $email) {
$replacement = createJSMailLink($email);
$processedContent = str_replace($email, createJSMailLink($email), $processedContent);
}
}
Se stai usando un modulo di contatto, potresti fare la tecnica divertente di usare nomi casuali per i tuoi input.
Ad esempio, creo un modulo di contatto, invece di utilizzare la posta elettronica come input, utilizzerei liame, lo stesso con nome (eman) e commento (tnemmoc). I robot in realtà non sanno cosa fanno questi input, quindi li ignorano e basta.
Usa Zoho Creator per impostare un modulo di contatto. Il feedback che riceverai verrà archiviato in un database a cui puoi accedere online e ti verrà anche inviato per email.