wake-up-neo.com

E-Mail mit verfolgen PHP und Bild

Ich habe gesehen, dass der Dienst wie spypig.com ein kleines Bild in der E-Mail platziert und verfolgt, wann und von wo aus es geöffnet wird. Sie verfolgen Stadt, Land, IP-Adresse usw. Wie wird das gemacht?

  1. Woher wissen wir, wann die Mail geöffnet ist? Und wie entsteht das Bild ?
  2. Wie wird die IP-Adresse ermittelt und wie kann der Standort von Daran ermittelt werden?
20
esafwan

Im HTML-Text Ihrer E-Mail wird grundsätzlich ein <img>-Tag angezeigt, das folgendermaßen aussehen würde:

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

Wenn jemand seine E-Mails mit aktivierten Bildern liest, sendet der E-Mail-Client eine Anfrage an tracker.php, um das Bild zu laden, wobei es id=123456 als Parameter übergeben wird.


Dieses tracker.php-Skript wird sich auf Ihrem Server befinden. Wenn es aufgerufen wird, wird es:

  • Überprüfen Sie den Parameter id
  • Verwenden Sie diese Option, um herauszufinden, zu welcher E-Mail-Adresse sie gehört. Wenn Sie die E-Mail für jeden Ihrer Abonnenten generieren, haben Sie eine id für jede E-Mail erstellt.
  • Machen Sie ein paar Sachen - wie log "E-Mail 123456 wurde geöffnet" , und einige zusätzliche Informationen
  • den Inhalt eines kleinen Bildes zurückgeben; wie ein 1x1 transparentes gif.


Das tracker.php-Skript weiß, von welcher IP-Adresse es aufgerufen wurde - wie jedes andere PHP-Skript:

$ipAddress = $_SERVER['REMOTE_ADDR'];

Ausgehend von dieser IP-Adresse können Sie einen Geolocation-Dienst verwenden, um herauszufinden, wo auf der Welt die E-Mail geöffnet wurde.
Als ein paar Beispiele können Sie einen Blick auf MaxMind oder IPInfoDB werfen.

Da Sie wissen, dass id=123456 einer bestimmten E-Mail-Adresse entspricht, können Sie herausfinden, wo sich jeder Ihrer Abonnenten befindet.

50
Pascal MARTIN

1. Platziere das Tracker-Bild bei der E-Mail

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

Die Arbeit ist sehr einfach. Sobald Ihre E-Mail geöffnet ist, sendet das Tracker-Bild die Anforderung an den Server. Von dieser Anforderung können wir Informationen abrufen, indem Sie die Bild-URL mit der Benutzer-ID erstellen. Außerdem wird berücksichtigt, dass die E-Mail vom Benutzer gelesen wird.

Hinweis: Anzeige nicht verwenden: keine; Diese Eigenschaft zum Ausblenden Ihrer Bilder kann nach Spam-Algorithmen gefiltert werden. Geben Sie keine Javascript-Codes ein, da dies auch den Spam-Filter blockiert 

2. Auf der tracker.php

<?php
header("Content-Type: image/jpeg"); // it will return image 
readfile("img.jpg");

dbfunction(); // place your db code
?>

3. Die IP-Adresse wird von der folgenden Funktion abgerufen.

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. Ort:

Der Standort wird von jedem Geolocation-Dienst abgerufen. Sie können den Open-Source-GeoLocation-Finder wie nekudo , freegeoip verwenden.

zum Beispiel

<?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'];
?>
8
NaveenDA

Beim ersten Teil der Frage habe ich das Bild aus einer PHP-Datei zurückgegeben. Abgesehen von der Rückgabe eines Bildes (es kann ein 1x1-Pixel-transparentes png sein), werden alle Informationen in der Datenbank protokolliert. Auf diese Weise wissen Sie, wenn die PHP-Datei aufgerufen wird, dass das Bild geladen wurde, d. H. Die E-Mail wurde gelesen. Das Problem ist, dass viele moderne Kunden Bilder nicht automatisch laden. Dies ist aus Gründen des Datenschutzes nicht die Art von Sache, die Sie zu tun versuchen.

Im zweiten Teil gibt es mehrere Geolocation-Webdienste, bei denen Sie eine IP-Adresse angeben und die Geolocation erhalten. Sie können dies in der PHP-Datei tun, die das 1x1-Pixelbild zurückgibt. Hier ist ein guter Thread auf dieser Site: Geolocation-Webserviceempfehlungen

2
Elad Lachmi

Ich suchte nach einem Tipp, um das Bild zu verbergen. Der einfachste Weg scheint zu sein: 

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

um die brillante Erklärung von Pascal zu vervollständigen.

0