Подтвердить что ты не робот

Отслеживание электронной почты с помощью PHP и изображений

Я видел такую ​​услугу, как spypig.com, размещающую небольшое изображение в электронном письме и отслеживание, когда оно открывается и откуда. Они отслеживают город, страну, IP-адрес и т.д. Как это делается?

  • Как мы узнаем, когда почта открыта? И как изображение генерируется?
  • Как определяется IP-адрес и как можно узнать местоположение из это?
4b9b3361

Ответ 1

В принципе, в теге HTML вашего письма будет тег <img>, который будет выглядеть так:

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

Когда кто-то читает почту, с включенными изображениями, клиент электронной почты отправит запрос на tracker.php, чтобы загрузить изображение, передав его id=123456 в качестве параметра.


Этот tracker.php script будет на вашем сервере, и при вызове он будет:

  • Проверьте параметр id,
  • Используйте его, чтобы найти, на какой адрес электронной почты он соответствует - при создании электронной почты для каждого из ваших подписчиков вы создадите id по-разному для каждого сообщения электронной почты.
  • Сделайте несколько вещей - например, журнал "email 123456 был открыт" и некоторые дополнительные сведения
  • возвращает содержимое небольшого изображения; как прозрачный gif 1x1.


tracker.php script знает, с какого IP-адреса он был вызван - как и любой другой PHP script:

$ipAddress = $_SERVER['REMOTE_ADDR'];

И, начиная с этого IP-адреса, вы можете использовать службу геолокации, чтобы узнать, откуда в мире было открыто электронное письмо.
В качестве примера можно привести MaxMind или IPInfoDB

Как вы знаете, id=123456 соответствует одному конкретному адресу электронной почты, это позволяет узнать, где находятся каждый из ваших подписчиков.

Ответ 2

1. Поместите изображение трекера на E-mail

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

Его работа очень проста. После того, как ваша почта открыта, это изображение трекера отправляет запрос на сервер, из этого запроса мы можем получить информацию, создав URL-адрес изображения с идентификатором пользователя, а также посчитав, что почта прочитана пользователь.

Примечание: не используйте дисплей: нет; свойство для скрытия ваших изображений, оно может фильтровать по алгоритму спама. И не размещайте никакие коды JavaScript, он также блокирует спам-фильтр

2. На tracker.php

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

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

3. IP-адрес получают с помощью следующей функции.

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. Расположение:

Расположение определяется любыми службами геолокации, вы можете использовать поисковик GeoLocation с открытым исходным кодом, например nekudo,freegeoip.

например

<?php
$json  = file_get_contents("http://ipinfo.io/$PublicIP/geo");
$json  =  json_decode($json ,true);
$country =  $json['country_name'];
$region= $json['region_name'];
$city = $json['city'];
?>

Ответ 3

Что касается первой части вопроса, то, что я сделал, вернул изображение из файла PHP. Помимо возврата изображения (это может быть прозрачный png размером 1x1), запись всей информации в базу данных. Таким образом, когда вызывается PHP файл, вы знаете, что изображение было загружено, т.е. письмо прочитано. Проблема в том, что многие современные клиенты не загружают изображения автоматически. Это делается для того, чтобы не допускать того, что вы пытаетесь сделать, из соображений конфиденциальности.

Во второй части есть несколько веб-сервисов геолокации, где вы отправляете IP и получаете геолокацию. Вы можете сделать это в файле PHP, который возвращает изображение размером 1x1 пиксель. Вот хорошая ветка об этом на этом сайте: Рекомендации веб-службы геолокации

Ответ 4

Я искал подсказку, чтобы скрыть изображение, самый простой способ:

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

чтобы завершить блестящее объяснение Паскаля.