hola todos! no se me ocurria como nombrar el post! XD
he tenido la experiencia de que los bots que indagan por las webs, buscando correos para hacer publicidad no deseada (spam), y me mandan correos... a partir de eso, se me ocurrió hacer un script que detecta con expresiones regulares el correo dentro de una cadena de texto, pasa por rot13 el correo, y muestra una imagen en vez del correo
aquí les dejo mi sencillo y pequeño script, que cuenta con 2 archivos, el index, y el archivo donde se generará la imagen...
index.php:
<html>
<head>
<title>Cambia correo por imagen</title>
</head>
<body bgcolor="black" text="white">
<form method="post" action="">
<textarea cols="50" rows="20" name="contenido"><?php echo htmlentities($_POST['contenido']); ?></textarea><br>
<input type="submit" value="enviar" name="enviar">
</form>
<?php
function correo_img($correo){
$ss= '/(\S+@\S+\.\S+)/ie';
$resultado= preg_replace($ss,"str_rot13('$1')", $correo);
$s= '/(\S+@\S+\.\S+)/i';
$r = "<img src='imagen.php?text=$1&color=w'>";
$resultado= preg_replace($s, $r, $resultado);
return $resultado;
}
if($_POST['enviar']){
$contenido=htmlentities($_POST['contenido']);
$contenido=str_replace("\n", "<br>\n", $contenido);
echo correo_img($contenido);
}
?>
</body>
</html>
imagen.php
<?php
$text=str_rot13(strip_tags($_GET['text']));
$color=strip_tags($_GET['color']);
header("Content-Type: image/png");
if($color!="b" && $color!="w"){
$width=55;
}else{
$width=strlen($text)*10;
}
$imagen = @imagecreate($width, 20);
if($color=="b"){
$color_fondo = imagecolorallocate($imagen, 0, 0, 0);
$color_texto = imagecolorallocate($imagen, 255, 255, 255);
}else if($color=="w"){
$color_fondo = imagecolorallocate($imagen, 255, 255, 255);
$color_texto = imagecolorallocate($imagen, 0, 0, 0);
}else{
$color_fondo = imagecolorallocate($imagen, 255, 255, 255);
$color_texto = imagecolorallocate($imagen, 255, 0, 0);
$text="error!";
}
imagestring($imagen, 5, 5, 6, $text, $color_texto);
imagepng($imagen);
imagedestroy($imagen);
?>
si desean ver su funcionamiento, aqui les dejo un demo...
http://hckdrk.webcindario.com/mail2img/index.php
Saludos!
hola bro me gusto mucho me podrias explicar una cosa je! para que sirve $1
$resultado= preg_replace($ss,"str_rot13('$1')", $correo);
saludos espero tu respuesta :P gracias por el aporte :D
$$ = /(\S+@\S+\.\S+)/ie
Entonce quedara así:
$resultado= preg_replace($ss,"str_rot13('$1')", $correo);
$resultado= preg_replace("/(\S+@\S+\.\S+)/ie","str_rot13('$1')", $correo);
$i, hace referencia al paréntesis del patrón (el primer parámetro, la regex).
Saludos.
no me parece muy seguro, porque el texto sigue estando en el url de la imagen, es muy sencillo volverlo a dejar como estaba.
saludos!
No tienes permitido ver los links.
Registrarse o Entrar a mi cuenta
$$ = /(\S+@\S+\.\S+)/ie
Entonce quedara así:
$resultado= preg_replace($ss,"str_rot13('$1')", $correo);
$resultado= preg_replace("/(\S+@\S+\.\S+)/ie","str_rot13('$1')", $correo);
$i, hace referencia al paréntesis del patrón (el primer parámetro, la regex).
Saludos.
muchas gracias bro :)
Se ve muy bueno tengo mi PC dañada cuando reuna dinero me compro una y asi seguire practicando....
Saludos...
No tienes permitido ver los links.
Registrarse o Entrar a mi cuenta
no me parece muy seguro, porque el texto sigue estando en el url de la imagen, es muy sencillo volverlo a dejar como estaba.
saludos!
puedes modificar el script para que el correo lo extraiga de una DB o algo... es sólo un demo...
Agarra el codigo y modificala que no esta complicado solo agarras el nombre desde una variable que llega a ser un query a la BD con el User Name que quieres extraer
Regards,
Snifer
Hola, la idea es buena y de hecho hay muchos que lo usan.
Se ve corrido:
(http://hckdrk.webcindario.com/mail2img/
[email protected]&color=b)
Pero para mi es una solución un tanto rebuscada para algo tan simple, que pasa si estoy utilizando python o perl o .net o java? tendría que cranearme como hacerlo tambien de esa manera.
En cambio hay otras alternativas mejores, por ejemplo:
Digamos que tengo un mail, este mail estará en urlencode:
<div class="_mail">%79%6f%40%67%6d%61%69%6c%2e%63%6f%6d</div>
Entonces desde <head> agregamos una etiqueta javascript que tome todas las divisiones con correos y las transforme en texto:
$('._mail').each(function(){
$(this).html(
'<a href="mailto:' +
unescape($(this).html()) +
'">' +
unescape($(this).html()) +
'</a>'
);
});
Recordar que los robots de busqueda de correos no utilizan algoritmos personalizados para un solo sitio web o si no el administrador se volvería loco por un par de correos, solo basta con cosas simples para ocultarlos.
Cuidado con utiliza el famoso test [at] gmail [dot] com porque hay muchos robots que incluyen eso en sus algoritmos para rebuscarlos.
Lo de la imagen es buena idea pero a traves de javascript también lo es.
Se puede usar otro algoritmo no necesariamente urlencode, puede ser base64 o hasta rc4 con clave pública.
Saludos.