Я видел такую услугу, как spypig.com, размещающую небольшое изображение в электронном письме и отслеживание, когда оно открывается и откуда. Они отслеживают город, страну, IP-адрес и т. Д. Как это делается?
В основном, в теге HTML вашего письма будет <img>
который будет выглядеть так:
<img src="http://www.yoursite.com/tracker.php?id=123456" alt="" />
Когда кто-то читает его почту, с включенными изображениями, клиент электронной почты отправит запрос на tracker.php
, чтобы загрузить изображение, передав ему id=123456
в качестве параметра.
Этот скрипт tracker.php
будет на вашем сервере, и, когда он будет вызван, он будет:
id
, id
для каждого сообщения электронной почты. Сценарий tracker.php
знает, с какого IP-адреса он был вызван – как и любой другой скрипт PHP:
$ipAddress = $_SERVER['REMOTE_ADDR'];
И, начиная с этого IP-адреса, вы можете использовать услугу геолокации, чтобы узнать, откуда в мире было открыто электронное письмо.
Как несколько примеров, вы можете взглянуть на MaxMind или IPInfoDB
Как вы знаете, id=123456
соответствует одному конкретному адресу электронной почты, это позволяет узнать, где находится каждый из ваших подписчиков.
В первой части вопроса, что я сделал, было возвращено изображение из файла php. Помимо возврата изображения (он может быть прозрачным png 1×1 пикселя) записывает всю информацию в базу данных. Таким образом, когда вызывается php-файл, вы знаете, что изображение загружено, т.е. прочитано электронное письмо. Проблема в том, что многие современные клиенты не загружают изображения автоматически. Это не позволяет делать то, что вы пытаетесь сделать, в целях конфиденциальности.
Во второй части есть несколько веб-сервисов геолокации, где вы отправляете IP-адрес и получаете геолокацию. Вы можете сделать это в php-файле, который возвращает изображение размером 1×1. Вот хороший поток об этом на этом сайте: рекомендации веб-службы геолокации
1. Поместите трекер iamge на E-mail
<img src="http://www.yoursite.com/tracker.php?eid=123456&uid=123" alt="" width="1px" height="1px">
Его работа очень проста. Как только ваша почта открыта, изображение трекера отправит запрос на tracker.php для загрузки изображения. Мы получаем данные о форме данных пользовательских данных и рассмотрим, как читается.
Примечание. Не используйте display: none; свойство скрывать ваши изображения, оно может фильтровать по алгоритму спама. И не помещайте никаких кодов javasript, он также блокирует спам-фильтр
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("https://freegeoip.net/json/$PublicIP"); $json = json_decode($json ,true); $country = $json['country_name']; $region= $json['region_name']; $city = $json['city']; ?>
Я искал подсказку, чтобы скрыть изображение, самый простой способ:
<img src="http://www.yoursite.com/tracker.php?id=123456" alt="" width="1" height="1" border="0">
чтобы завершить блестящее объяснение Паскаля.