Śledzenie wiadomości e-mail za pomocą PHP i obrazu

Widziałem serwis jak spypig.com umieszczanie małego obrazu w wiadomości e-mail i śledzenie, kiedy jest otwarty i skąd. Śledzą Miasto, Kraj, Adres IP itp. Jak to się robi?

  1. skąd wiemy, kiedy Poczta jest otwarta? A jak wygląda obraz / align = "left" /
  2. Jak wykrywany jest adres IP i jak można poznać lokalizację z to?
Author: Gumbo, 2011-03-27

4 answers

Zasadniczo w treści HTML Twojego e-maila pojawi się znacznik <img>, który będzie wyglądał następująco:

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

Kiedy ktoś czyta swoją pocztę, z włączonymi obrazkami, klient poczty e-mail wyśle prośbę do tracker.php, aby załadować obraz, podając go id=123456 jako parametr.


Ten skrypt tracker.php będzie na twoim serwerze i po wywołaniu będzie :

  • Sprawdź parametr id,
  • użyj go, aby znaleźć adres e-mail, który odpowiada -- podczas generowania e-mail dla każdego z subskrybentów, wygenerujesz id inny dla każdego e-maila.
  • zrób kilka rzeczy -- jak log "e-mail 123456 został otwarty" , i kilka dodatkowych informacji
  • zwraca zawartość małego obrazu; jak przezroczysty gif 1x1.


Skrypt tracker.php wie, z którego adresu IP został wywołany -- jak każdy inny skrypt PHP:

$ipAddress = $_SERVER['REMOTE_ADDR'];

I zaczynając od tego adresu IP, możesz użyć geolokalizacji usługa, aby dowiedzieć się, skąd na świecie e-mail został otwarty. Na przykład można przyjrzeć się MaxMind , lub IPInfoDB

Jak wiesz, że id=123456 odpowiada jednemu konkretnemu adresowi e-mail, pozwala to dowiedzieć się, gdzie jest każdy z Twoich subskrybentów.

 46
Author: Pascal MARTIN,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-03-27 09:50:47

1. Umieść tracker iamge na E-mail

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

Jego działanie jest bardzo proste, po otwarciu poczty obraz trackera wysyła żądanie do trackera.php dla obrazu do pobrania, otrzymujemy dane z formularza danych użytkownika url i uważamy, że jest odczytywany.

Uwaga: nie używaj właściwości display:none; do ukrywania obrazów, może filtrować według algorytmu spamu. I nie umieszczaj żadnych kodów javasript, blokuje również filtr antyspamowy

2. Na tropiciel.php

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

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

3. Adres ip jest pobierany przez następującą funkcję.

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

Lokalizacja jest uzyskiwana przez usługi geolokalizacyjne, możesz użyć open-source geolocation finder jak nekudo,freegeoip .

For examle

<?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'];
?>
 4
Author: NaveenDA,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-02-04 05:50:45

Odnośnie pierwszej części pytania, to co zrobiłem to zwrócenie obrazu z pliku php. Oprócz zwrócenia obrazu (może to być 1x1 piksel przezroczysty png) jest Zaloguj wszystkie informacje w bazie danych. W ten sposób, gdy plik php jest wywoływany, wiesz, że obraz został załadowany, tzn. e-mail został odczytany. Problem polega na tym, że wiele nowoczesnych klientów nie ładuje obrazów automatycznie. To nie pozwala tylko na tego rodzaju rzeczy, które próbujesz zrobić, ze względów prywatności.

O drugiej części, istnieje kilka usług internetowych geolokalizacyjnych, w których przesyłasz adres IP i uzyskasz geolokalizację. Możesz to zrobić w pliku php, który zwraca obraz 1x1 pikseli. Oto dobry wątek na ten temat na tej stronie: rekomendacje serwisu geolokalizacyjnego

 2
Author: Elad Lachmi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:03:07

Szukałem wskazówki, aby ukryć obraz, najprostszy sposób wydaje się zrobić:

<img src="http://www.yoursite.com/tracker.php?id=123456" alt="" width="1" height="1" border="0">
Aby uzupełnić genialne Wyjaśnienie Pascala.
 0
Author: Guillaume Blanco,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-09-17 13:46:22