html - octava - fundamentos de marketing philip kotler y gary armstrong pdf
Método eficaz para ocultar el correo electrónico de los robots de spam (30)
En mi página de inicio, estoy usando este método para ocultar mi correo electrónico de los robots de spam:
<a href="admin [at] example.com"
rel="nofollow"
onclick="this.href=''mailto:'' + ''admin'' + ''@'' + ''example.com''">Contact me</a>
¿Qué piensa usted al respecto? ¿Es efectivo? ¿Qué otros métodos conoces o usas?
! - Agregando esto como referencia, no sé cuán obsoleta puede ser la información, pero se trata de algunas soluciones simples que no requieren el uso de ningún script
Después de buscar esto yo mismo encontré esta página pero también estas páginas:
http://nadeausoftware.com/articles/2007/05/stop_spammer_email_harvesters_obfuscating_email_addresses
intente revertir el emailadress
Ejemplo de HTML simple:
<bdo dir="rtl">moc.elpmaxe@nosrep</bdo>
Result : [email protected]
El mismo efecto usando CSS
CSS:
.reverse { unicode-bidi:bidi-override; direction:rtl; }
HTML:
<span class="reverse">moc.elpmaxe@nosrep</span>
Result : [email protected]
Combinar esto con cualquiera de los métodos mencionados anteriormente puede incluso hacerlo más efectivo
¿Funciona si hago clic derecho en el enlace y selecciono "copiar URL"? Si no, no es una situación ideal (muy pocas veces hago clic en un enlace de correo electrónico, prefiero copiar la dirección de correo electrónico y pegarla en mi aplicación de correo o en cualquier otro lugar que la necesite en un momento específico).
Solía ser bastante paranoico al proteger mi dirección de correo electrónico (UseNet, web y similares), pero en la actualidad sospecho que se generan más "posibles objetivos para el correo no deseado" que coinciden con las partes locales en dominios mediante programación. Me baso en que, en ocasiones, revisé los registros de mi servidor de correo. Tienden a haber bastantes intentos de entrega a direcciones no existentes (incluyendo versiones truncadas de spam-cebo que colgué en UseNet a finales de los 90, cuando el raspado de direcciones era muy común).
Aquí está mi versión de trabajo:
Crea en algún lugar un contenedor con un texto alternativo:
<div id="knock_knock">Activate JavaScript, please.</div>
Y agregue en la parte inferior del DOM (junto con el renderizado) el siguiente fragmento:
<script>
(function(d,id,lhs,rhs){
d.getElementById(id).innerHTML = "<a rel=/"nofollow/" href=/"mailto"+":"+lhs+"@"+rhs+"/">"+"Mail"+"<//a>";
})(window.document, "knock_knock", "your.name", "example.com");
</script>
Agrega el hipervínculo generado al contenedor especificado:
<div id="knock_knock"><a rel="nofollow" href="[email protected]">Mail</a></div>
Además, aquí hay una versión reducida:
<script>(function(d,i,l,r){d.getElementById(i).innerHTML="<a rel=/"nofollow/" href=/"mailto"+":"+l+"@"+r+"/">"+"Mail"+"<//a>";})(window.document,"knock_knock","your.name","example.com");</script>
Aquí hay una solución simple de jquery a este problema:
<script type="text/javascript">
$(document).ready(function() {
str1="mailto:";
str2="info";
str3="@test.com";
$("#email_a").attr("href", str1+str2+str3);
});
</script>
<a href="#" id="email_a"><img src="sample.png"/></a>
Consulte ¿ Cómo proteger las direcciones de correo electrónico de los bots en una página web?
Me gusta la forma en que Facebook y otros muestran una imagen de su dirección de correo electrónico.
También he usado The Enkoder en el pasado. ¡Pensé que era muy bueno ser honesto!
Creo que el único método infalible que puede tener es crear una página de Contact Me que es un formulario que se envía a un script que envía a su dirección de correo electrónico. De esa forma, su dirección nunca estará expuesta al público en absoluto. Esto puede ser indeseable por alguna razón, pero creo que es una solución bastante buena. A menudo me molesta cuando me veo obligado a copiar / pegar la dirección de correo electrónico de alguien desde su sitio a mi cliente de correo y enviarles un mensaje; Prefiero hacerlo bien a través de un formulario en su sitio. Además, este enfoque le permite recibir comentarios anónimos, etc. Solo asegúrese de proteger su formulario usando algún tipo de esquema anti-bot, como un captcha. Hay muchos de ellos discutidos aquí en SO.
El mejor método para ocultar direcciones de correo electrónico es bueno hasta que el programador bot descubra esta "codificación" e implemente un algoritmo de descifrado.
La opción de JavaScript no funcionará mucho, porque hay una gran cantidad de JavaScript de interpretación de rastreador.
No hay respuesta, imho.
Este es el método que utilicé, con una inclusión en el servidor, por ejemplo, <!--#include file="emailObfuscator.include" -->
donde emailObfuscator.include
contiene lo siguiente:
<!-- // http://lists.evolt.org/archive/Week-of-Mon-20040202/154813.html -->
<script type="text/javascript">
function gen_mail_to_link(lhs,rhs,subject) {
document.write("<a href=/"mailto");
document.write(":" + lhs + "@");
document.write(rhs + "?subject=" + subject + "/">" + lhs + "@" + rhs + "<//a>");
}
</script>
Para incluir una dirección, uso JavaScript:
<script type="text/javascript">
gen_mail_to_link(''john.doe'',''example.com'',''Feedback about your site...'');
</script>
<noscript>
<em>Email address protected by JavaScript. Activate JavaScript to see the email.</em>
</noscript>
Debido a que he estado recibiendo correos electrónicos a través de Gmail desde 2005, el spam no es un problema. Entonces, no puedo hablar de cuán efectivo es este método. Es posible que desee leer este estudio (aunque es antiguo) que produjo este gráfico:
Este es probablemente el mejor y más fácil protector de correo electrónico en Internet. Muy simple pero tiene la capacidad de agregar todas las campanas y silbatos.
Protección de correo electrónico en páginas web
Utiliza JavaScript. Lo he estado usando con éxito durante años.
Existe un script PHP de licencia abierta que genera javascript que codifica el correo: http://www.maurits.vdschee.nl/php_hide_email/ . A continuación, puede llamar fácilmente a la función php con el correo específico como argumento.
Me gusta más la respuesta de aurax pero me gustaría modificar esto para un correo electrónico un poco más oculto:
onclick="p1=''admin''; p2=''domain.com''; this.href=''mailto:'' + p1 + ''& #x40;'' + p2"
Mire de esta manera , bastante inteligente y usando css.
CSS
span.reverse {
unicode-bidi: bidi-override;
direction: rtl;
}
HTML
<span class="reverse">moc.rehtrebttam@retsambew</span>
El CSS anterior anulará la dirección de lectura y presentará el texto al usuario en el orden correcto.
Espero eso ayude
Aclamaciones
No es mi idea original, pero no puedo encontrar al autor:
<a href="mailto:[email protected]"
onmouseover="this.href=this.href.replace(/x/g,'''');">link</a>
Agregue tantas x como lo desee. Funciona perfectamente para leer, copiar y pegar, y no puede ser leído por un bot.
No me gusta que se mezclen JavaScript y HTML, es por eso que uso esta solución. Funciona bien para mí, por ahora.
Idea : podría hacerlo más complicado al proporcionar información encriptada en los atributos de data
y descifrarla dentro de JS. Esto se hace simplemente reemplazando letras o simplemente invirtiéndolas.
HTML :
<span class="generate-email" data-part1="john" data-part2="gmail" data-part3="com">placeholder</span>
JS :
$(function() {
$(''.generate-email'').each(function() {
var that = $(this);
that.html(
that.data(''part1'') + ''@'' + that.data(''part2'') + ''.'' + that.data(''part3'')
);
});
});
Pruébalo: http://jsfiddle.net/x6g9L817/
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", ".", "@"];
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
Primero, me aseguraré de que la dirección de correo electrónico solo se muestre cuando tienes habilitado javascript. De esta forma, no hay texto sin formato que pueda leerse sin javascript.
En segundo lugar, una forma de implementar una característica segura es alejarse de la etiqueta <button>
. Esta etiqueta necesita una inserción de texto entre las etiquetas, lo que la hace legible por computadora. En su lugar, intente con <input type="button">
con un manejador de javascript para un onClick. Luego use todas las técnicas mencionadas por otherse para implementar una notación segura de correo electrónico.
Otra opción es tener un botón con "Haga clic para ver emailaddress". Una vez hecho clic esto cambia a un correo electrónico codificado (los caracteres en códigos HTML). En otro clic, esto redirecciona a la función ''mailto: email''
Una versión no codificada de la última idea, con direcciones de correo electrónico seleccionables y no seleccionables:
<html>
<body>
<script type="text/javascript">
e1="@domain";
e2="me";
e3=".extension";
email_link="mailto:"+e2+e1+e3;
</script>
<input type="text" onClick="this.onClick=window.open(email_link);" value="Click for mail"/>
<input type="text" onClick="this.value=email;" value="Click for mail-address"/>
<input type="button" onClick="this.onClick=window.open(email_link);" value="Click for mail"/>
<input type="button" onClick="this.value=email;" value="Click for mail-address"/>
</body></html>
Vea si esto es algo que le gustaría y combínelo con las ideas de los demás. Nunca puedes estar tan seguro.
Probablemente hay bots que reconocen el [at]
y otros disfraces como @
symbol. Entonces este no es un método realmente efectivo.
Claro que puedes usar algunas codificaciones como codificación URL o referencias de caracteres HTML (o ambas):
// PHP example
// encodes every character using URL encoding (%hh)
function foo($str) {
$retVal = '''';
$length = strlen($str);
for ($i=0; $i<$length; $i++) $retVal.=sprintf(''%%%X'', ord($str[$i]));
return $retVal;
}
// encodes every character into HTML character references (&#xhh;)
function bar($str) {
$retVal = '''';
$length = strlen($str);
for ($i=0; $i<$length; $i++) $retVal.=sprintf(''&#x%X;'', ord($str[$i]));
return $retVal;
}
$email = ''[email protected]'';
echo ''<a href="''.bar(''mailto:?to='' . foo('',''.$email.'''')).''">mail me</a>'';
// output
// <a href="mailto:?to=%2C%75%73%65%72%40%65%78%61%6D%70%6C%65%2E%63%6F%6D">mail me</a>
Pero como es legal usarlos, cada navegador / cliente de correo electrónico debe manejar estas codificaciones también.
Puede intentar ocultar caracteres utilizando entidades html en hexa (por ejemplo: & # x40 para @). Esta es una solución conveniente, ya que un navegador correcto la traducirá, y usted puede tener un enlace normal. El inconveniente es que un bot puede traducirlo teóricamente, pero es un poco inusual. Lo uso para proteger mi correo electrónico en mi blog.
Otra solución es usar javascript para ensamblar parte de la dirección y decodificar sobre la marcha la dirección. El inconveniente es que un navegador con JavaScript desactivado no mostrará su dirección.
La solución más efectiva es usar una imagen , pero es un dolor para el usuario tener que copiar la dirección a mano.
Su solución es bastante buena , ya que solo agrega un inconveniente (escribe manualmente el @) solo para usuarios que tienen javascript deshabilitado. También puede estar más seguro con:
onclick="this.href=''mailto:'' + ''admin'' + ''@'' + ''domain.com''"
Sé que mi respuesta no será del agrado de muchos, pero tenga en cuenta los puntos detallados aquí antes de bajar el dedo.
Cualquier cosa fácilmente legible por máquina será fácil de leer por los spammers. A pesar de que sus acciones nos parecen estúpidas, no son personas estúpidas. Son innovadores e ingeniosos. No solo utilizan bots para recolectar correos electrónicos, sino que tienen una gran cantidad de métodos a su disposición y, además de eso, simplemente pagan por listas nuevas y frescas de correos electrónicos. Lo que significa es que consiguieron miles de hackers de sombrero negro en todo el mundo para ejecutar sus trabajos. Gente dispuesta a codificar malware que raspa las pantallas de los navegadores de otras personas, lo que eventualmente torna inútil cualquier método que intentas lograr. Este hilo ya ha sido leído por más de 10 personas y se están riendo de nosotros. Algunos de ellos incluso se aburren hasta las lágrimas al descubrir que no podemos enfrentarles un nuevo desafío.
Tenga en cuenta que finalmente no intentará ahorrar su tiempo, sino el de los demás. Debido a esto, considere pasar más tiempo aquí. No hay una bala mágica fácil de ejecutar que funcione. Si trabaja en una empresa que publica 100 correos electrónicos de personas en el sitio y puede reducir 1 correo electrónico no deseado por día por persona, estamos hablando de 36500 correos electrónicos no deseados por año. Si eliminar ese correo electrónico tarda en promedio 5 segundos, estamos hablando de 50 horas de trabajo al año. Por no mencionar la cantidad reducida de molestia. Entonces, ¿por qué no dedicar unas horas a esto?
No solo usted y las personas que reciben el correo electrónico consideran que el tiempo es un activo. Por lo tanto, debe encontrar una forma de ocultar las direcciones de correo electrónico de tal manera que no sirva para descifrarlo. Si utiliza algún método ampliamente utilizado para confundir los correos electrónicos, realmente vale la pena crackearlo. Como resultado, el cracker tendrá en sus manos miles, sino decenas o cientos de miles de correos electrónicos nuevos. Y para ellos, obtendrán dinero.
Entonces, adelante y codifique su propio método. Este es un caso raro en el que reinventar la rueda realmente vale la pena. Utilice un método que no sea legible por máquina y que preferiblemente requiera cierta interacción del usuario sin sacrificar la experiencia del usuario.
Pasé unos 20 minutos para codificar un ejemplo de lo que quiero decir. En el ejemplo, utilicé KnockoutJS simplemente porque me gusta y sé que probablemente no lo utilices tú mismo. Pero es irrelevante de todos modos. Es una solución personalizada que no se usa ampliamente. Romperlo no representará una recompensa por hacerlo, ya que el método de hacerlo solo funcionaría en una sola página en Internet.
Aquí está el violín: http://jsfiddle.net/hzaw6/
El siguiente código no pretende ser un ejemplo de buen código. Pero solo una muestra rápida de código que es muy difícil de descifrar para la máquina, incluso manejamos los correos electrónicos aquí. E incluso si pudiera hacerse, no valdrá la pena ejecutar en gran escala.
Y sí, sé que no funciona en IE = lte8 debido a ''Incapaz de obtener propiedades'' atributos ''de referencia indefinida o nula'', pero simplemente no me importa porque es solo una demostración de método, no implementación real, y no destinado a ser utilizado en la producción tal como es. Siéntase libre de codificar el suyo, que es más fresco, técnicamente más sólido, etc.
Ah, y nunca más nombre algo correo o correo electrónico en html o javascript. Es demasiado fácil borrar el DOM y el objeto de la ventana de todo lo que se llame correo o correo electrónico y verificar si contiene algo que coincida con un correo electrónico. Esta es la razón por la que no desea que ninguna variable contenga correo electrónico en su forma completa y esta es también la razón por la que desea que el usuario interactúe con la página antes de asignar tales variables. Si su modelo de objetos JavaScript contiene direcciones de correo electrónico en estado listo para DOM, las está exponiendo a los remitentes de correo no deseado.
El HTML:
<div data-bind="foreach: contacts">
<div class="contact">
<div>
<h5 data-bind="text: firstName + '' '' + lastName + '' / '' + department"></h5>
<ul>
<li>Phone: <span data-bind="text: phone"></span></li>
<li><a href="#999" data-bind="click:$root.reveal">E-mail</a> <span data-bind="visible: $root.msgMeToThis() != ''''"><input class="merged" data-bind="value: mPrefix" readonly="readonly" /><span data-bind="text: ''@'' + domain"></span></span></li>
</ul>
</div>
</div>
</div>
El JS
function ViewModel(){
var self = this;
self.contacts = ko.observableArray([
{ firstName:''John'', mPrefix: ''john.doe'', domain: ''domain.com'', lastName: ''Doe'', department: ''Sales'', phone: ''+358 12 345 6789'' },
{ firstName:''Joe'', mPrefix: ''joe.w'', domain: ''wonder.com'', lastName: ''Wonder'', department: ''Time wasting'', phone: ''+358 98 765 4321'' },
{ firstName:''Mike'', mPrefix: ''yo'', domain: ''rappin.com'', lastName: ''Rophone'', department: ''Audio'', phone: ''+358 11 222 3333'' }
]);
self.msgMeToThis = ko.observable('''');
self.reveal = function(m, e){
var name = e.target.attributes.href.value;
name = name.replace(''#'', '''');
self.msgMeToThis(name);
};
}
var viewModel = new ViewModel();
ko.applyBindings(viewModel);
Si tiene soporte para php, puede hacer algo como esto:
<img src="scriptname.php">
Y el scriptname.php:
<?php
header("Content-type: image/png");
// Your email address which will be shown in the image
$email = "[email protected]";
$length = (strlen($email)*8);
$im = @ImageCreate ($length, 20)
or die ("Kann keinen neuen GD-Bild-Stream erzeugen");
$background_color = ImageColorAllocate ($im, 255, 255, 255); // White: 255,255,255
$text_color = ImageColorAllocate ($im, 55, 103, 122);
imagestring($im, 3,5,2,$email, $text_color);
imagepng ($im);
?>
Solo tengo que dar una respuesta más. I just came up with something fun to play with.
I found out that in many common character tables, the letters @ and az reappear more than once. You can map the original characters to the new mappings and make it harder for spam bots to figure out what the e-mail is.
If you loop through the string, and get the character code of a letter, then add 65248 to it and build a html entity based on the number, you come up with a human readable e-mail address.
var str = ''[email protected]'';
str = str.toLowerCase().replace(/[/.@a-z]/gi, function(match, position, str){
var num = str.charCodeAt(position);
return (''&#'' + (num + 65248) + '';'');
});
Here is a working fiddle: http://jsfiddle.net/EhtSC/8/
You can improve this approach by creating a more complete set of mappings between characters that look the same. But if you copy/paste the e-mail to notepad, for example, you get a lot of boxes.
Para superar algunos de los problemas de la experiencia del usuario, creé el correo electrónico como enlace. Cuando hace clic en él, vuelve a asignar los caracteres a sus originales.
Para mejorar esto, puede crear asignaciones de caracteres más complejas si lo desea. Si puede encontrar varios caracteres que pueden usarse, por ejemplo, en el lugar de ''a'', por qué no mapearlos al azar.
Probablemente no sea el enfoque más seguro de todos, pero realmente me divertí jugando con él: D
Soy un fanático de SpamSpan : está ofuscado, pero aún descifrable si JS está desactivado. Parece que también funciona, aunque solo lo he usado durante un año en un sitio web de poco tráfico.
También hay un módulo para Drupal para convertir automáticamente los correos electrónicos en SpamSpans, si lo necesita.
Spambots no interpretará esto, porque es un método menos conocido :)
Primero, define el css:
email:before {
content: "admin";
}
email:after {
content: "@example.com";
}
Ahora, donde quiera que desee mostrar su correo electrónico, simplemente inserte el siguiente código HTML:
<div id="email"></div>
¡Y tada!
Tengo una visión completamente diferente de esto. Utilizo MailHide para esto.
MailHide es un sistema de Google en el que el usuario debe completar una prueba reCAPTCHA para luego revelarle el correo electrónico.
Trabajando con contenido y atributos en CSS:
.cryptedmail:after {
content: attr(data-name) "@" attr(data-domain) "." attr(data-tld);
}
<a data-name="info" data-domain="test" data-tld="com" href="#" class="cryptedmail" onclick="window.location.href = ''mailto:'' + this.dataset.name + ''@'' + this.dataset.domain + ''.'' + this.dataset.tld"></a>
Cuando javascript está deshabilitado, solo el evento click no funcionará, el correo electrónico aún se muestra.
Una solución fácil es usar entidades HTML en lugar de caracteres reales. Por ejemplo, el "[email protected]" se convertirá en:
<a href="mailto:me@example.com">email me</A>
Uno de mis métodos preferidos es ofuscar la dirección de correo electrónico usando php, un ejemplo clásico es convertir los caracteres a valores HEX así:
function myobfiscate($emailaddress){
$email= $emailaddress;
$length = strlen($email);
for ($i = 0; $i < $length; $i++){
$obfuscatedEmail .= "&#" . ord($email[$i]).";";
}
echo $obfuscatedEmail;
}
Y luego, en mi marcado, simplemente lo llamaré de la siguiente manera:
<a href="mailto:<?php echo myobfiscate(''[email protected]'')" title="Email me!"><?php echo myobfiscate(''[email protected]'');</a>
Luego examine su fuente, ¡se sorprenderá gratamente!
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 o se pasa 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.
Y mi función. Lo he creado mirando las respuestas colocadas en este tema.
function antiboteEmail($email)
{
$html = '''';
$email = strrev($email);
$randId = rand(1, 500);
$html .= ''<span id="addr-''.$randId.''" class="addr">[turn javascript on to see the e-mail]</span>'';
$html .= <<<EOD
<script>
$(document).ready(function(){
var addr = "$email";
addr = addr.split("").reverse().join("");
$("#addr-$randId").html("<a href=/"mailto:" + addr + "/">" + addr + " </a>");
});
</script>
EOD;
return $html;
}
Utiliza dos métodos: de derecha a izquierda dir y javascript poner.
después de usar tantas técnicas encontré una manera fácil y muy amigable, los robots buscan @ Símbolo y recientemente buscaron [en] ant su variación así que uso 2 técnicas
- escribo mi correo electrónico en una imagen como el uso de domaintolls y funciona perfectamente o
- para reemplazar el Símbolo (@) con una imagen de él como
y la imagen alt será alt = "@" para que el bot encuentre una imagen y cualquier humano la verá como una dirección normal, así que si la copia, copiará el correo electrónico y el trabajo será donado para que el código sea
<p>myname<img src="http://www.traidnt.net/vb/images/mail2.gif" width="11" height="9" alt="@" />domain.com</p>