tracker script espaƱol php email geolocation tracking spy

script - Rastreo de email con PHP e imagen.



email tracking php script (4)

He visto el servicio como spypig.com colocando una pequeña imagen en el correo electrónico y rastreando cuándo se abre y desde dónde. Rastrean la ciudad, el país, la dirección IP, etc. ¿Cómo se hace esto?

  1. ¿Cómo sabemos cuándo se abre el correo? ¿Y cómo se genera la imagen?
  2. ¿Cómo se detecta la dirección IP y cómo es posible conocer su ubicación?

Estaba buscando un consejo para ocultar la imagen, la forma más fácil parece hacerlo:

<img src="http://www.yoursite.com/tracker.php?id=123456" alt="" width="1" height="1" border="0">

Para completar la brillante explicación de Pascal.


Sobre la primera parte de la pregunta, lo que hice fue devolver la imagen de un archivo php. Además de devolver una imagen (puede ser de 1x1 píxeles transparentes png) se registra toda la información en la base de datos. De esta manera, cuando se llama al archivo php, usted sabe que la imagen se cargó, es decir, el correo electrónico fue leído. El problema es que muchos clientes modernos no cargan las imágenes automáticamente. Esto es para no permitir el tipo de cosas que intenta hacer, por razones de privacidad.

Sobre la segunda parte, hay varios servicios web de geolocalización, donde usted envía una IP y obtiene la geolocalización. Puede hacerlo en el archivo php que devuelve la imagen de 1x1 píxeles. Aquí hay un buen hilo sobre esto en este sitio: recomendaciones de servicios web de geolocalización


1. Coloque el icono del rastreador en el correo electrónico.

<img src="http://www.yoursite.com/tracker.php?eid=123456&uid=123" alt="" width="1px" height="1px">

Su funcionamiento es muy simple. Una vez que se abre su correo, la imagen del rastreador envía la solicitud a tracker.php para una imagen para descargar. Obtenemos datos de los datos del usuario de la URL y los consideramos a medida que se lee el correo.

Nota: No use display: none; propiedad para ocultar sus imágenes, puede filtrar por algoritmo de spam. Y no coloque ningún código javascript, también bloquea el filtro de spam

2. En el tracker.php

<?php header("Content-Type: image/jpeg"); // it will return image readfile("img.jpg"); dbfunction(); // place your db code ?>

3. La dirección IP se obtiene mediante la siguiente función.

function get_client_ip() { $ipaddress = ''''; if (isset($_SERVER[''HTTP_CLIENT_IP''])) $ipaddress = $_SERVER[''HTTP_CLIENT_IP'']; else if(isset($_SERVER[''HTTP_X_FORWARDED_FOR''])) $ipaddress = $_SERVER[''HTTP_X_FORWARDED_FOR'']; else if(isset($_SERVER[''HTTP_X_FORWARDED''])) $ipaddress = $_SERVER[''HTTP_X_FORWARDED'']; else if(isset($_SERVER[''HTTP_FORWARDED_FOR''])) $ipaddress = $_SERVER[''HTTP_FORWARDED_FOR'']; else if(isset($_SERVER[''HTTP_FORWARDED''])) $ipaddress = $_SERVER[''HTTP_FORWARDED'']; else if(isset($_SERVER[''REMOTE_ADDR''])) $ipaddress = $_SERVER[''REMOTE_ADDR'']; else $ipaddress = ''UNKNOWN''; return $ipaddress; } $PublicIP = get_client_ip();

4. Ubicación:

La ubicación es a través de cualquier servicio de geolocalización, puede utilizar el buscador de GeoLocation de código abierto como nekudo , freegeoip .

por ejemplo

<?php $json = file_get_contents("https://freegeoip.net/json/$PublicIP"); $json = json_decode($json ,true); $country = $json[''country_name'']; $region= $json[''region_name'']; $city = $json[''city'']; ?>


Básicamente, en el cuerpo HTML de su correo electrónico, habrá una etiqueta <img> que se verá así:

<img src="http://www.yoursite.com/tracker.php?id=123456" alt="" />

Cuando alguien lee su correo, con las imágenes habilitadas, el cliente de correo electrónico enviará una solicitud a tracker.php , para cargar la imagen, pasándola id=123456 como parámetro.


Este script tracker.php estará en su servidor y, cuando se le llame, lo hará:

  • Compruebe el parámetro id ,
  • Úselo para encontrar a qué dirección de correo electrónico corresponde: cuando genere el correo electrónico para cada uno de sus suscriptores, habrá generado una id diferente para cada correo electrónico.
  • Haga algunas cosas, como el registro "correo electrónico 123456 ha sido abierto" , y algunas informaciones adicionales
  • devolver el contenido de una imagen pequeña; Como un gif transparente de 1x1.


El script tracker.php sabe desde qué dirección IP se ha llamado, como cualquier otro script PHP:

$ipAddress = $_SERVER[''REMOTE_ADDR''];

Y, a partir de esta dirección IP, puede utilizar un servicio de geolocalización para saber desde qué lugar del mundo se ha abierto el correo electrónico.
Como un par de ejemplos, puede echar un vistazo a MaxMind , o IPInfoDB

Como usted sabe que id=123456 corresponde a una dirección de correo electrónico específica, esto le permite saber dónde está cada uno de sus suscriptores.