telefono phone number link from code html css web-crawler mailto

html - phone - Ocultar dirección de correo electrónico de Bots-Mantener mailto:



mailto telefono (9)

tl; dr

Oculte la dirección de correo electrónico de los bots sin usar scripts y mantenga la funcionalidad mailto: El método también debe ser compatible con lectores de pantalla.

Resumen

  • Ofuscación por correo electrónico sin usar scripts o formularios de contacto

  • La dirección de correo electrónico debe ser completamente visible para los espectadores humanos y mantener mailto: funcionalidad

  • La dirección de correo electrónico no debe estar en forma de imagen .

  • La dirección de correo electrónico debe estar "completamente" oculta de los rastreadores de spam y los robots de spam y cualquier otro tipo de recolector

Efecto deseado:

  • Sin guiones , por favor. No se utilizan scripts en el proyecto y me gustaría mantenerlo así .

  • La dirección de correo electrónico se muestra en la página o se puede mostrar fácilmente después de algún tipo de interacción del usuario, como abrir un modal.

  • El usuario puede hacer clic en la dirección de correo electrónico que a su vez mailto: funcionalidad mailto:

  • Al hacer clic en el correo electrónico, se abrirá la aplicación de correo electrónico del usuario.

    En otras palabras, mailto: funcionalidad debe funcionar.

  • La dirección de correo electrónico no está visible o no está identificada como una dirección de correo electrónico para los bots (esto incluye la fuente de la página)

  • No tengo una bandeja de entrada llena de spam

Lo que NO funciona

  • Agregar un formulario de contacto, o algo similar, en lugar de la dirección de correo electrónico

    Odio los formularios de contacto . Raramente lleno un formulario de contacto. Si no hay una dirección de correo electrónico, busco un número de teléfono, y si no está allí, empiezo a buscar un servicio alternativo. Solo llenaría un formulario de contacto si fuera absolutamente necesario.

  • Reemplazar la dirección con una imagen de la dirección

    Esto crea una ENORME desventaja para alguien que usa un lector de pantalla ( recuerde las personas con discapacidad visual en sus proyectos futuros )

    También elimina la funcionalidad mailto: menos que haga clic en la imagen y luego agregue la funcionalidad mailto: como href para el enlace, pero eso frustra el propósito y ahora el correo electrónico es visible para los bots.

Lo que podría funcionar:

  • Uso inteligente de pseudo-elements en CSS

  • Soluciones que hacen uso de la codificación base64

  • Romper la dirección de correo electrónico y difundir las partes en el documento y luego volver a unirlas en un modo modal cuando el usuario hace clic en un botón (esto probablemente involucrará múltiples clases de CSS y el uso de anchor tags de anchor tags )

  • Alterar atributos html través de CSS

    @MortezaAsadi mencionó con gracia la posibilidad en los comentarios a continuación. Este es el enlace al completo - El artículo es de 2012:

    ¿Qué pasaría si pudiéramos usar CSS para alterar los atributos HTML?

  • Otras soluciones creativas que están más allá de mi alcance de conocimiento.

Preguntas / soluciones similares

(Esta es una gran solución sugerida por Joe Maller, funciona bien pero está basada en script . Esto es lo que parece;

<SCRIPT TYPE="text/javascript"> emailE = ''emailserver.com'' emailE = (''yourname'' + ''@'' + emailE) document.write(''<A href="mailto:'' + emailE + ''">'' + emailE + ''</a>'') </script> <NOSCRIPT> Email address protected by JavaScript </NOSCRIPT>

La pregunta:

¿Sería posible aumentar la eficiencia (es decir, la menor cantidad de spam posible) de los métodos de ofuscación de correo electrónico anteriores combinando dos o más de las soluciones (o incluso agregando nuevas soluciones) mientras:

A- Mantenimiento de mailto: funcionalidad; y

B- Lectores de pantalla compatibles

Editar:

Muchas de las respuestas y comentarios a continuación plantean una muy buena pregunta e indican la imposibilidad de hacerlo sin algún tipo de js

La pregunta que se hace / implica es:

¿Por qué no usar js ?

La respuesta es que soy alérgico a js

Bromeando a un lado sin embargo,

Las tres razones principales por las que hice esta pregunta son:

  • Los formularios de contacto son cada vez más aceptados como un reemplazo para proporcionar una dirección de correo electrónico, que no deberían.

  • Si puede hacerse sin secuencias de comandos, entonces debe hacerse sin secuencias de comandos.

  • Curiosidad: (como de hecho estoy usando una de las soluciones js actualmente) quería ver si discutir el asunto conduciría a una mejor manera de hacerlo.


¿Has considerado usar el recaptcha mailhide de google? https://www.google.com/recaptcha/admin#mailhide

La idea es que cuando un usuario hace clic en la casilla de verificación ( ver nocaptcha a continuación ), se muestra la dirección de correo electrónico completa.

Si bien recaptcha es tradicionalmente no solo difícil para los lectores de pantalla, sino también para los humanos, con el papel destacado de nocaptcha recaptcha de google, que puede leer here en relación con las pruebas de accesibilidad. Parece prometedor con respecto a los lectores de pantalla, ya que se muestra como una casilla de verificación tradicional desde su punto de vista.

Ejemplo # 1 - No es seguro pero para una fácil ilustración de la idea

Aquí hay un código como ejemplo sin usar mailhide pero implementando algo usando recaptcha usted mismo: https://jsfiddle.net/43fad8pf/36/

<div class="container"> <div id="recaptcha"></div> </div> <div id="email"> Verify captcha to get e-mail </div> function createRecaptcha() { grecaptcha.render("recaptcha", {sitekey: "6LcgSAMTAAAAACc2C7rc6HB9ZmEX4SyB0bbAJvTG", theme: "light", callback: showEmail}); } createRecaptcha(); function showEmail() { // ideally you would do server side verification of the captcha and then the server would return the e-mail document.getElementById("email").innerHTML = "[email protected]"; }

Nota: En mi ejemplo, tengo el correo electrónico en una función de JavaScript. Idealmente, debería validar el recaptcha en el servidor y devolver el correo electrónico; de lo contrario, el bot simplemente puede obtenerlo en el código.

Ejemplo # 2 - Validación del lado del servidor y devolución de correo electrónico

Si usamos un ejemplo más como este, obtenemos seguridad adicional: https://designracy.com/recaptcha-using-ajax-php-and-jquery/

function showEmail() { /* Check if the captcha is complete */ if ($("#g-recaptcha-response").val()) { $.ajax({ type: ‘POST’, url: "verify.php", // The file we’re making the request to dataType: ‘html’, async: true, data: { captchaResponse: $("#g-recaptcha-response").val() // The generated response from the widget sent as a POST parameter }, success: function (data) { alert("everything looks ok. Here is where we would take ''data'' which contains the e-mail and put it somewhere in the document"); }, error: function (XMLHttpRequest, textStatus, errorThrown) { alert("You’re a bot"); } }); } else { alert("Please fill the captcha!"); } });

Donde verificar.php es:

$captcha = filter_input(INPUT_POST, ‘captchaResponse’); // get the captchaResponse parameter sent from our ajax /* Check if captcha is filled */ if (!$captcha) { http_response_code(401); // Return error code if there is no captcha } $response = file_get_contents("https://www.google.com/recaptcha/api/siteverify?secret=YOUR-SECRET-KEY-HERE&amp;amp;response=" . $captcha); if ($response . success == false) { echo ‘SPAM’; http_response_code(401); // It’s SPAM! RETURN SOME KIND OF ERROR } else { // Everything is ok, should output this in json or something better, but this is an example echo ''[email protected]''; }


Aquí hay un enfoque que hace uso de JavaScript, pero con una huella bastante pequeña. También es muy "gueto", y en general no recomendaría un enfoque con JS en línea en el HTML, excepto que tiene una reticencia extrema a usar JS.

<a href="#" data-contact="bGUtZW1haWxAdGhlLWRvbWFpbi5jb20=" data-subj="QW4gQW1hemluZyBTdWJqZWN0" onfocus="this.href = ''mailto:'' + atob(this.dataset.contact) + ''?subject='' + atob(this.dataset.subj || '''')" > Send an email </a>

data-contact es la dirección de correo electrónico codificada en base64. Y, data-subj es un sujeto codificado en base64 opcional.

El principal desafío al hacer esto sin JS es que CSS no puede alterar los atributos HTML. (El artículo que vinculó es una reflexión "de pie en el cielo" y no tiene ninguna relación con lo que es posible hoy o en el futuro cercano).

El enfoque de entidades HTML que mencionó, o alguna variación del mismo, es probablemente la opción más simple que tendrá cierta eficacia. Además, el enfoque de iframe es inteligente y el enfoque de redireccionamiento del servidor es bastante impresionante. Pero, los tres son vulnerables a los bots:

  • Las entidades HTML solo necesitan ser converted (y detectar eso es simple)
  • El documento al que hace referencia el iframe podría simplemente seguirse
  • La redirección del servidor también podría seguirse simplemente

Con el enfoque descrito anteriormente, el uso de una dirección de correo electrónico codificada en base64 en un atributo de data-contact es muy "único", siempre y cuando el scrapper no esté específicamente diseñado para su sitio, debería funcionar.


Derrotar a los bots de correo electrónico es difícil. Es posible que desee consultar la sección de contramedidas de recolección de direcciones de correo electrónico en Wikipedia.

Mi historia de fondo es que he escrito un bot de búsqueda. Rastreó más de 105,000 URL durante su ejecución inicial hace muchos años. De lo que aprendí al hacer eso es que los robots de rastreo web literalmente ven TODO lo que es texto, que aparece en una página web. Los bots leen todo menos las imágenes.

El spam no se puede detener fácilmente a través del código por estos motivos:

  1. CSS y JS son irrelevantes cuando se usa la etiqueta mailto:. Los bots miran específicamente las páginas HTML para esa palabra clave "mailto:". Todo, desde los dos puntos hasta la próxima cita simple o doble (lo que ocurra primero) se ve como una dirección de correo electrónico. Las direcciones de correo electrónico de entidad HTML, como el ejemplo anterior, se pueden traducir rápidamente utilizando un método / función ASCII inverso. Al ejecutar el fragmento de código JavaScript anterior, convierte rápidamente la cadena que comienza con: & # 121; & # 111; & # 117; & # 114; ... en ... "[email protected]". (Mi bot de búsqueda arrojó hrefs con mailto: direcciones de correo electrónico, ya que quería URL para páginas web y no direcciones de correo electrónico).

  2. Si una página bloquea un bot, el autor del bot lo ajustará para corregir el bloqueo teniendo en cuenta esa página, de modo que el bot no se bloquee en esa página nuevamente en el futuro. Haciendo así que su bot sea más inteligente.

  3. Los autores de bots pueden escribir bots, que generan todas las variaciones conocidas de direcciones de correo electrónico ... sin rastrear páginas y nunca utilizando ninguna dirección de correo electrónico de inicio. Si bien puede no ser factible hacer eso, no es inconcebible con las CPU de conteo de núcleos altos de hoy en día (que están hiperprocesadas y se ejecutan a más de 4 GHz), más la disponibilidad de usar computación distribuida basada en la nube e incluso súper computadoras. Es concebible que alguien ahora pueda crear una granja de bots para enviar spam a todos, sin conocer la dirección de correo electrónico de nadie. Hace 20 años, eso habría sido incomprensible.

  4. Los proveedores de correo electrónico gratuitos han tenido un historial de venta de sus cuentas de usuario gratuitas a sus anunciantes. En el pasado, simplemente registrarse para obtener una cuenta de correo electrónico gratuita les garantizaba automáticamente una luz verde para comenzar a enviar spam a esa dirección de correo electrónico ... sin usar esa dirección de correo electrónico en línea. He visto eso suceder varias veces, con nombres de compañías famosas. (No mencionaré ningún nombre).

  5. La palabra clave mailto: es parte de este RFC de IETF , donde los navegadores se crean para iniciar automáticamente los clientes de correo electrónico predeterminados, desde enlaces con esa palabra clave en ellos. JavaScript debe usarse para interrumpir el proceso de inicio de la aplicación, cuando sucede.

No creo que sea posible detener el 100% del spam mientras se usan servidores de correo electrónico tradicionales, sin usar filtros en el servidor de correo electrónico y posiblemente usando imágenes.

Hay una alternativa ... También puede crear un cliente de correo electrónico similar al chat, que se ejecuta internamente en un sitio web. Sería como el cliente de chat de Facebook. Es "una especie de correo electrónico", pero no es realmente correo electrónico. Es simplemente mensajería instantánea 1 a 1 con una función de archivo ... que se carga automáticamente al iniciar sesión. Dado que tiene características de enlace de documento + enlace, funciona como un correo electrónico ... pero sin el spam. Mientras no construyas una API accesible externamente, entonces es un sistema cerrado donde las personas no pueden enviarle spam.

Si planea seguir con el correo electrónico estrictamente tradicional, entonces su mejor opción puede ser ejecutar algo como Apache''s SpamAssassin en el servidor de correo electrónico de una empresa.

También puede intentar combinar múltiples estrategias como las que mencionó anteriormente, para que sea más difícil para los recolectores de correo electrónico obtener direcciones de correo electrónico de sus páginas web. No detendrán el 100% del spam, el 100% del tiempo ... al tiempo que permitirán que el 100% de los lectores de pantalla trabajen para visitantes ciegos.

¡Has creado un buen comienzo para ver qué hay de malo en el correo electrónico tradicional! Felicitaciones a ti por eso!

Un buen lector de pantalla es JAWS de Freedom Scientific . Lo he usado antes para escuchar cómo los usuarios ciegos leen mis páginas web. (Si escucha que una voz masculina lee ambas acciones [como hacer clic en un enlace] y texto, intente cambiar 1 voz a femenina para que 1 voz lea acciones y otra lea texto. Eso hace que sea más fácil escuchar cómo se lee la página web los discapacitados visuales)

¡Buena suerte con su dirección de correo electrónico !


El único método que encontré efectivo es usarlo con CSS como a continuación:

<a href="mailto:[email protected]">myemail@<span style="display:none;">ignore-</span>domain.com

y luego escriba un javascript para eliminar la palabra ignoreme- del ignoreme- href="mailto:..." con regex. Esto ocultará el correo electrónico del bot, ya que agregará ignore- palabra antes del dominio real y esto funcionará en el lector de pantalla y cuando el usuario haga clic en el enlace, la función js personalizada eliminará la palabra ignore- del atributo href para que abra el correo electrónico real.

Este método ha estado funcionando de manera muy efectiva para mí hasta la fecha. puede leer más sobre esto: http://techblog.tilllate.com/2008/07/20/ten-methods-to-obfuscate-e-mail-addresses-compared/


El problema con su solicitud es específicamente los "lectores de pantalla compatibles", ya que, por definición, los lectores de pantalla son un "bot" de algún tipo. Si un lector de pantalla necesita poder interpretar la dirección de correo electrónico, entonces un rastreador de páginas también podrá interpretarla.

Además, el punto del atributo mailto es ser el estándar de cómo hacer direcciones de correo electrónico en la web. Preguntar si hay una segunda forma de hacerlo es preguntar si hay un segundo estándar.

Hacerlo a través de scripts seguirá teniendo el mismo problema que una vez que se carga la página, el script se habría ejecutado y la dirección de correo electrónico se representaría en el DOM (a menos que complete la dirección de correo electrónico al hacer on click o algo así). De cualquier manera, los lectores de pantalla seguirán teniendo problemas con esto, ya que aún no está cargado.

Honestamente, solo obtenga un servicio de correo electrónico con un filtro de spam medio decente y especifique una línea de asunto predeterminada que sea fácil de ordenar en su bandeja de entrada.

<a href="mailto:[email protected]?subject=Something to filter on">Email me</a>

Lo que está pidiendo es si el estándar tiene dos formas de hacer algo, una para bots y otra para no bots. La respuesta es que no, y solo tienes que luchar contra los bots lo mejor que puedas.


La respuesta breve para cumplir con todos sus requisitos es que es imposible

Algunas de las opciones basadas en script respondidas aquí pueden funcionar para ciertos bots, pero no quería script, así que no, no puede.


Las personas que escriben raspadores quieren que sus raspadores sean lo más eficientes posible. Por lo tanto, no descargarán estilos, scripts y otros recursos externos. No conozco ningún método para establecer un enlace mailto usando CSS. Además, usted dijo específicamente que no deseaba establecer el enlace usando Javascript.

Si piensa en qué otros tipos de recursos hay, también hay documentos externos (es decir, documentos HTML que usan iframes). Casi ningún raspador se molestaría en descargar el contenido de los iframes. Por lo tanto, simplemente puedes hacer:

index.html:

<iframe src="frame.html" style="height: 1em; width: 100%; border: 0;"></iframe>

frame.html:

My email is <a href="mailto:[email protected]" target="_top">[email protected]</a>

Para los usuarios humanos, el iframe se parece al texto normal. Los iframes son en línea y transparentes de manera predeterminada, por lo que solo necesitamos establecer su borde y dimensiones. No puede hacer que el tamaño del iframe coincida con el tamaño de su contenido sin usar Javascript, por lo que lo mejor que podemos hacer es darle dimensiones predefinidas.


Primero, no creo que hacer nada con CSS funcione. Todos los bots (excepto el rastreador de Google) simplemente ignoran todos los estilos en los sitios web. Cualquier solución tiene que funcionar con JS o del lado del servidor.

Una solución del lado del servidor podría estar haciendo un <a> que se vincule a una nueva pestaña, que simplemente redirige al mailto deseado:

Esas son todas mis ideas por ahora. Espero eso ayude.


Simple + Lote de @ + Editable sin herramientas

<a href="mailto:user@domain@@com" onmouseover="this.href=this.href.replace(''@@'',''.'')"> Send email </a>