Ś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?
- skąd wiemy, kiedy Poczta jest otwarta? A jak wygląda obraz / align = "left" /
- Jak wykrywany jest adres IP i jak można poznać lokalizację z to?
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.
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'];
?>
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
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.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