mail examples body email obfuscation

email - examples - mailto html body



¿Proteger las direcciones de correo electrónico de los bots en una página web? (22)

¡Funciona de maravilla!

<link rel="stylesheet" href="path/to/font-awesome/css/font-awesome.min.css"> <p>myemail<i class="fa fa-at" aria-hidden="true"></i>mydomain.com</p>

http://fontawesome.io/

Cuando coloque direcciones de correo electrónico en una página web, colóquelas en un texto como este:

[email protected]

o usa un truco ingenioso para tratar de engañar a los robots de cosechadora de direcciones de correo electrónico? Por ejemplo:

Personajes de escape de HTML:

&#106;&#111;&#101;&#46;&#115;&#111;&#109;&#101;&#98;&#111;&#100;&#121;&#64;&#99;&#111;&#109;&#112;&#97;&#110;&#121;&#46;&#99;&#111;&#109;

Javascript Decrypter:

function XOR_Crypt(EmailAddress) { Result = new String(); for (var i = 0; i < EmailAddress.length; i++) { Result += String.fromCharCode(EmailAddress.charCodeAt(i) ^ 128); } document.write(Result); } XOR_Crypt("êïå®óïíåâïäùÀãïíðáîù®ãïí");

Decodificación humana:

[email protected] joe.somebody AT company.com

¿Qué usas o incluso te molestas?


Acabo de codificar lo siguiente. No sé si es bueno, pero es mejor que escribir el correo electrónico en texto sin formato. Muchos robots serán engañados, pero no todos.

<script type="text/javascript"> $(function () { setTimeout(function () { var m = [''com'', ''.'', ''domain'', ''@'', ''info'', '':'', ''mailto''].reverse().join(''''); /* Set the contact email url for each "contact us" links.*/ $(''.contactUsLink'').prop("href", m); }, 200); }); </script>

Si el robot resuelve esto, no hay necesidad de agregar más código de "lógica simple" como "if (1 == 1? ''@'': '''')" O agregar los elementos de la matriz en otro orden ya que el robot simplemente evalúa el código de todos modos .


Depende de cuáles sean exactamente tus necesidades. Para la mayoría de los sitios con los que trabajo, me resulta mucho más útil ponerme un formulario de "contáctame / a nosotros" que envía un correo electrónico desde el sistema a quien sea necesario contactar. Sé que esta no es exactamente la solución que estás buscando, pero protege por completo contra la recolección y hasta ahora nunca he visto el spam enviado a través de un formulario como ese. Sucederá pero es muy raro y nunca se cosecha.

Esto también le da la oportunidad de registrar los mensajes antes de enviarlos, ofreciéndole un nivel adicional de protección contra la pérdida de un contacto, si así lo desea.


Esto es lo que usamos (VB.NET):

Dim rxEmailLink As New Regex("<a/b[^>]*mailto:/b[^>]*>(.*?)</a>") Dim m As Match = rxEmailLink.Match(Html) While m.Success Dim strEntireLinkOrig As String = m.Value Dim strEntireLink As String = strEntireLinkOrig strEntireLink = strEntireLink.Replace("''", """") '' replace any single quotes with double quotes to make sure the javascript is well formed Dim rxLink As New Regex("(<a/b[^>]*mailto:)([/w./-_^@]*@[/w./-_^@]*)(/b[^>]*?)>(.*?)</a>") Dim rxLinkMatch As Match = rxLink.Match(strEntireLink) Dim strReplace As String = String.Format("<script language=""JavaScript"">document.write(''{0}{1}{2}>{3}</a>'');</script>", _ RandomlyChopStringJS(rxLinkMatch.Groups(1).ToString), _ ConvertToAsciiHex(rxLinkMatch.Groups(2).ToString), _ rxLinkMatch.Groups(3), _ ConvertToHtmlEntites(rxLinkMatch.Groups(4).ToString)) Result = Result.Replace(strEntireLinkOrig, strReplace) m = m.NextMatch() End While

y

Public Function RandomlyChopStringJS(ByVal s As String) As String Dim intChop As Integer = Int(6 * Rnd()) + 1 Dim intCount As Integer = 0 RandomlyChopStringJS = "" If Not s Is Nothing AndAlso Len(s) > 0 Then For Each c As Char In s.ToCharArray() If intCount = intChop Then RandomlyChopStringJS &= "''+''" intChop = Int(6 * Rnd()) + 1 intCount = 0 End If RandomlyChopStringJS &= c intCount += 1 Next End If End Function

Anulamos Render y ejecutamos el HTML saliente a través de esto antes de que salga por la puerta. Esto representa las direcciones de correo electrónico que se muestran normalmente en un navegador, pero se ven así en la fuente:

<script language="JavaScript">document.write(''<a ''+''clas''+''s=''+''"Mail''+''Link''+''" hr''+''ef''+''="ma''+''ilto:%69%6E%66%6F%40%62%69%63%75%73%61%2E%6F%72%67">&#105;&#110;&#102;&#111;&#64;&#98;&#105;&#99;&#117;&#115;&#97;&#46;&#111;&#114;&#103;</a>'');</script>

Obviamente no es infalible, pero con suerte reduce una cierta cantidad de cosecha sin dificultar las cosas para el visitante.


Gmail, que es gratis, tiene un impresionante filtro de spam.

Si no desea utilizar Gmail directamente, puede enviar el correo electrónico a Gmail y usar el reenvío de Gmail para enviarlo de nuevo una vez que haya pasado por su filtro de correo no deseado.

En una situación más compleja, cuando necesite mostrar una dirección de @business.com, podría mostrar [email protected] y enviar todo este correo a una cuenta de gmail, que luego lo reenviará a [email protected].

Supongo que no es una solución directa a su pregunta, pero podría ser útil. Gmail es gratis y tener un filtro de SPAM tan bueno hace que sea una opción muy sabia en mi humilde opinión.

Recibo alrededor de 100 correos no deseados por día en mi cuenta de Gmail, pero no puedo recordar la última vez que uno de ellos llegó a mi bandeja de entrada.

En resumen, use un buen filtro de spam ya sea Gmail u otro. Hacer que el usuario vuelva a escribir o modificar la dirección de correo electrónico que se muestra es como usar DRM para protegerse contra la piratería. Ponerle la carga al chico "bueno" no debería ser la manera de hacer algo. :)


HTML:

<a href="#" class="--mailto--john--domain--com-- other classes goes here" />

JavaScript, usando jQuery :

// match all a-elements with "--mailto--" somehere in the class property $("a[class*=''--mailto--'']").each(function () { /* for each of those elements use a regular expression to pull out the data you need to construct a valid e-mail adress */ var validEmailAdress = this.className.match(); $(this).click(function () { window.location = validEmailAdress; }); });


He escrito un encoder ( source ) que utiliza todo tipo de trucos de análisis que pude pensar (diferentes tipos de entidades HTML, codificación de URL, comentarios, atributos de líneas múltiples, guiones suaves, estructura no obvia de mailto: URL, etc.)

No detiene a todos los recolectores, pero OTOH cumple completamente con los estándares y es transparente para los usuarios.

Otro buen enfoque en mi humilde opinión (que puede utilizar además de la codificación complicada) es a lo largo de líneas de:

<a href="mailto:[email protected]" onclick="this.href=this.href.replace(/hatestogetspam/,'''')">


Inventa tu propio esquema loco de ofuscación de direcciones de correo electrónico. No importa de qué se trata, realmente, siempre que no sea muy similar a cualquiera de los métodos comúnmente conocidos.

El problema es que realmente no hay una buena solución para esto, todos son relativamente simples de eludir, o más bien irritantes para el usuario. Si algún método se vuelve prevaleciente, entonces alguien encontrará una forma de evitarlo.

Entonces, en lugar de buscar la técnica de ofuscación de direcciones de correo electrónico de One True, crea la tuya. Cuente con el hecho de que estos autores de bot no se preocupan lo suficiente por su sitio como para sentarse a escribir una cosa para eludir sus renderizados ligeramente textuales con text-with-css-and-element-borders o su cifrado javascript completamente bizarro y fácil de descifrar. . No importa si es trivial, nadie se molestará en tratar de eludirlo solo para poder enviar correo no deseado.


La única forma más segura es, por supuesto, no poner la dirección de correo electrónico en la página web en primer lugar.


Los Spam bots tendrán sus propios motores CSS y Javascript a lo largo del tiempo, por lo que creo que no deberían mirar en esta dirección.


No me molestaría, es luchar en la guerra de SPAM en el nivel equivocado. Particularmente para los sitios web de la compañía, creo que hace que las cosas se vean muy poco profesionales si tiene algo más que el texto directo en la página con un hipervínculo de correo.

Hay tanto spam volando por ahí que necesitas un buen filtro de todos modos, y cualquier bot termina entendiendo todos los trucos comunes de todos modos.


No me molesto Solo molestará a usuarios sofisticados y confundirá a usuarios poco sofisticados. Como han dicho otros, Gmail proporciona filtros de spam muy efectivos para un dominio personal / de pequeña empresa, y los filtros corporativos también son generalmente muy buenos.


Opción 1: dividir la dirección de correo electrónico en varias partes y crear una matriz en JavaScript fuera de estas partes. A continuación, una estas partes en el orden correcto y utiliza la propiedad .innerHTML para agregar la dirección de correo electrónico a la página web.

<span id="email"> </span> // blank tag <script> var parts = ["info", "XXXXabc", "com", "&#46;", "&#64;"]; var email = parts[0] + parts[4] + parts[1] + parts[3] + parts[2]; document.getElementById("email").innerHTML=email; </script>

Opción 2: usar imagen en lugar de texto de correo electrónico

Sitio web del creador de imágenes a partir del texto: http://www.chxo.com/labelgen/

Opción 3: podemos usar AT en lugar de "@" y DOT en lugar de "."

es decir:

info(AT)XXXabc(DOT)com


Otra técnica, posiblemente única, podría ser utilizar varias imágenes y algunas letras de texto sin formato para mostrar la dirección. Eso podría confundir a los bots.


Para su propia dirección de correo electrónico, recomendaría no preocuparse demasiado por ello. Si necesita hacer que su dirección de correo electrónico esté disponible para miles de usuarios, le recomendaría usar una dirección de gmail (ya sea a través de aplicaciones de google o de vanilla) o utilizar un filtro de spam de alta calidad.

Sin embargo, al mostrar las direcciones de correo electrónico de otros usuarios en su sitio web, creo que se requiere cierto nivel de diligencia debida. Afortunadamente, un blogger llamado Silvan Mühlemann ha hecho todo el trabajo difícil para usted . Probó diferentes métodos de ofuscación durante un período de 1,5 años y determinó los mejores, la mayoría de ellos implican css o trucos de javascript que permiten que la dirección se presente correctamente en el navegador, pero confunden los raspadores automáticos.


Por lo general, no me molesto. Solía ​​estar en una lista de correo que recibía varios miles de spams todos los días. Nuestro filtro de spam (spamassassin) permite quizás 1 o 2 por día. Con filtros tan buenos, ¿por qué es difícil para las personas legítimas contactarlo?



Puede proteger su dirección de correo electrónico con reCAPTCHA, ofrecen un servicio gratuito para que las personas tengan que ingresar un CAPTCHA (Prueba de Turing pública totalmente automática para informar a los equipos y los seres humanos aparte) de su correo electrónico: https://www.google.com/recaptcha/admin#mailhide


Una response mía sobre una pregunta similar:

Utilizo una combinación muy simple de CSS y jQuery que muestra la dirección de correo electrónico correctamente al usuario y también funciona cuando se hace clic en el ancla:

HTML:

<a href="mailto:[email protected]" id="lnkMail">moc.elpmaxe@em</a>

CSS:

#lnkMail { unicode-bidi: bidi-override; direction: rtl; }

jQuery:

$(''#lnkMail'').hover(function(){ // here you can use whatever replace you want var newHref = $(this).attr(''href'').replace(''spam'', ''com''); $(this).attr(''href'', newHref); });

Here hay un ejemplo de trabajo.


Una secuencia de comandos que guarde las direcciones de correo electrónico a los archivos png sería una solución segura (si tiene suficiente espacio y puede incrustar imágenes en su página)


Use un formulario de contacto en su lugar. Coloque todas sus direcciones de correo electrónico en una base de datos y cree un formulario HTML (asunto, cuerpo, desde ...) que envíe los contenidos del correo electrónico que el usuario rellena en el formulario (junto con una identificación o nombre que se utiliza para busca la dirección de correo electrónico de esa persona en tu base de datos) a un script del lado del servidor que luego envía un correo electrónico a la persona especificada. En ningún momento se expone la dirección de correo electrónico. Es probable que desee implementar alguna forma de CAPTCHA para disuadir a los spambots también.


Yo hago el mío [email protected] y luego, al lado, escribo "Eliminar las letras mayúsculas"