Отправка данных посетителя в telegram.

На днях пришла идея сделать скрипт, при открытии которого мне будут приходить уведомления в телеграмм с данными о посетителя сайта.

Само собой, всё будем писать на PHP.

На будет нужно следующее:

  1. IP адрес посетителя
  2. Язык браузера
  3. User Agents
  4. Операционная система
  5. Страна
  6. Город
  7. Компания, которой принадлежит IP
  8. Провайдер, которой принадлежит IP
  9. Координаты, по котором можно найти провайдера (широта\долгота)
  10. Ширина\Высота  экрана устройства.

И так, чтобы узнать IP нужен вот такой код:

<?php
echo $_SERVER["REMOTE_ADDR"];
?>

Чтобы узнать язык браузера, нам нужен следующий код:

<?php
echo substr($_SERVER['HTTP_ACCEPT_LANGUAGE'],0,2);
?>

Для получения user agents будем использовать следующий код:

<?php
echo $_SERVER['HTTP_USER_AGENT'] ;
?>

Чтобы определить операционную систему, например будем использовать следующий код:

<?php
$firefox = "Firefox";
$opera = "Opera";
$chrome = "Chrome";
$explorer = "Internet Explorer";
$safari = "Safari";
$edit_b = "unknown";
$user_agent = $_SERVER["HTTP_USER_AGENT"];
if (strpos($user_agent, "Firefox") !== false) $osystem = "$firefox";
elseif (strpos($user_agent, "Opera") !== false) $osystem = "$opera";
elseif (strpos($user_agent, "Chrome") !== false) $osystem = "$chrome";
elseif (strpos($user_agent, "MSIE") !== false) $osystem = "$explorer";
elseif (strpos($user_agent, "Safari") !== false) $osystem = "$safari";
else $osystem = "$edit_b";
$win = "Windows";
$linux = "Linux";
$ios = "iOS";
$edit_b = "unknown";
$user_agent = getenv("HTTP_USER_AGENT");
if (strpos($user_agent, "Windows") !== false) $browser = "$win";
elseif (strpos($user_agent, "Linux") !== false) $browser = "$linux";
elseif (strpos($user_agent, "iOS") !== false) $browser = "$ios";
else $browser = "$edit_b";
echo "browser= $browser 
system= $osystem";
?>

Чтобы получить всё остальное, воспользуемся сервисом ipwhois.io. С помощью данного сервиса можно получить много чего интересного, как раз то что нам нужно. Изучив документацию, будем простым способом вытягивать нужную инфу через curl с помощью system. И так, вывести страну IP:

<?php
$contry = system("curl -s 'http://free.ipwhois.io/json/$iphome?lang=ru' | jq '.country'");
echo $contry ;
?>

Вывести город IP:

<?php
$city = system("curl -s 'http://free.ipwhois.io/json/$iphome?lang=ru' | jq '.city'");
echo $city ;
?>

Вывести компанию и провайдера, которым принадлежит IP:

<?php
$org = system("curl -s 'http://free.ipwhois.io/json/$iphome?lang=ru' | jq '.isp'");
$prov = system("curl -s 'http://free.ipwhois.io/json/$iphome?lang=ru' | jq '.org'");
echo "Компания: $org ";
echo "Провайдер: $prov ";
?>

Координаты, по котором можно найти провайдера (широта\долгота), получаем вот так:

<?php
$lat = system("curl -s 'http://free.ipwhois.io/json/$iphome?lang=ru' | jq '.latitude'");
$lon = system("curl -s 'http://free.ipwhois.io/json/$iphome?lang=ru' | jq '.longitude'");
echo " Широта: $lat <br />
Долгота: $lon ";
?>

А размеры экрана устройства можем получить так:

<?php
if (isset($_GET['width']) AND isset($_GET['height'])) {
echo "Ширина экрана устройства: <b>". $_GET['width'] ."</b><br />\n";
echo "Высота экрана устройства: <b>". $_GET['height'] ."</b><br />\n";
} else {
echo "<script language='javascript'>\n";
echo " location.href=\"${_SERVER['SCRIPT_NAME']}?${_SERVER['QUERY_STRING']}"
. "&width=\" + screen.width + \"&height=\" + screen.height;\n";
echo "</script>\n";
exit();
}
?>

Теперь, собираем всё полученные результаты в едино:

$write="\r\n<code>==========================================</code>
<b>ПОСЕТИТЕЛЬ </b>\r\n
<b>IP:</b> <code>$iphome</code>
<b>Язык браузера:</b><code>$lang</code>
<code>$lang_brow</code>
<code>$user_agents</code>
<b>OS:</b> <code>$os_version</code>
<b>Страна:</b> <code>$contry </code>
<b>Город:</b> <code>$city </code>
<b>Компания, которой принадлежит IP:</b> <code>$org</code>
<b>Провайдер, которой принадлежит IP:</b> <code>$prov</code>
<code>$AboutGuest->is_mobile $AboutGuest->mobile</code>
<b>Координаты, по котором можно найти провайдера:</b>
<b>Широта:</b> <code>$lat</code>
<b>Долгота:</b> <code>$lon</code>
<b>Ширина экрана устройства:</b><code> ". $_GET['width'] ."</code>
<b>Высота экрана устройства:</b><code> ". $_GET['height'] ."</code>
<code>==========================================</code>\r\n
";

Теперь нужно создать бота, получить токен и узнать наш ID. Создать бота можно через бота @BotFather, а узнать ID можно через бота @MyTelegramID_bot

Теперь, когда у нас есть токен и наш ID, пишем следующий код:

define('TELEGRAM_TOKEN', 'ТОКЕН БОТА');
define('TELEGRAM_CHATID', 'ВАШ ИД');
message_to_telegram("$write");
function message_to_telegram($text)
{
    $ch = curl_init();
    curl_setopt_array(
        $ch,
        array(
            CURLOPT_URL => 'https://api.telegram.org/bot' . TELEGRAM_TOKEN . '/sendMessage',
            CURLOPT_POST => TRUE,
            CURLOPT_RETURNTRANSFER => TRUE,
            CURLOPT_TIMEOUT => 10,
            CURLOPT_POSTFIELDS => array(
                'chat_id' => TELEGRAM_CHATID,
                'text' => $text,
		'parse_mode' => 'HTML',
            ),
        )
    );
    curl_exec($ch);
}

Заменяем «ТОКЕН БОТА» на токен бота и «ВАШ ИД» на Ваш ID. Сохраняем всё в один файл и готово. Откройте данную страницу и проверьте, пришло ли сообщение от Вашего созданного бота.

Результат будет примерно такой:

Готовый скрипт можно сказать по ссылке 

Оставьте ответ