Control de accesos a paginas web con informe a bot de Telegram
Presentación
El presente proyecto fue revisado y modificado en virtud que @D_L_Dijkman, a quien desde ya se lo agradezco del canal Universal Telegram Bot Library me hizo notar el riesgo de seguridad que implica dejar visible el token del bot de telegram en la version original diseñada en html, por lo que la misma ha sido modificada y ahora pongo a consideración una nueva version en php
Este proyecto busca tener control permanente y on line sobre los accesos a nuestras paginas web
Consiste un una funcion onload colocada en un script al final del body que llama al archivo mensaje php y le envia el titulo la pagina y un archivo mensaje.php que lee la ip del visitante y envia un mensaje al bot de Telegram avisando del acceso
A los efectos de su implementacion se debe colocar el archivo mensaje.php en un directorio del servidor donde esta alojada nuestra pagina web y copiar en la ultima parte del "<body>" de la pagina que se desea controlar el script que esta mas adelante.
En el archivo mensaje.php debera modificarse el Token BOT de Telegram que se obtener de Botfather y el ID de chat que se obtiene con @myidbot.
Sobre la creación y manejo de Bot de Telegram si bien existen infinidad de paginas y tutoriales yo uso la siguiente página Cómo crear un chatbot en Telegram
En el script debera colocarse la ruta del archivo mensaje.php y el titulo de la pagina o nombre que quiera que se envie en el mensaje a Telegram
Código
Archivo mensaje.php
<?php
$texto = $_POST [ 'texto' ];
function getVisitorIp()
{
// Recogemos la IP de la cabecera de la conexión
if (!empty($_SERVER['HTTP_CLIENT_IP']))
{
$ipAdress = $_SERVER['HTTP_CLIENT_IP'];
}
// Caso en que la IP llega a través de un Proxy
elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR']))
{
$ipAdress = $_SERVER['HTTP_X_FORWARDED_FOR'];
}
// Caso en que la IP lleva a través de la cabecera de conexión remota
else
{
$ipAdress = $_SERVER['REMOTE_ADDR'];
}
return $ipAdress;
}
# Ruta para la API de Telegram
$path = "https://api.telegram.org/bot0000000000:AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA";
# Leemos los datos que se envian
$update = json_decode(file_get_contents("php://input"), TRUE);
# identificamos el Chat Id
$chatId = "11111111111111";
file_get_contents($path."/sendmessage?chat_id=".$chatId."&text=" . date("F j, Y, g:i a") . " la IP " . getVisitorIp() . " Ingresó la pagina " . $texto);
?>
Script a agregar al final del "<body>" de la pagina que se desea controlar
<script>
window.onload=function() {
const data = new URLSearchParams("texto= (Titulo de la paǵina que se controla)");
fetch('https://(ruta del archivo)/mensaje.php',{
method: 'POST',
body: data
})
}
</script>