Cómo "tracear" visitas al blog con Telegram

Por si no lo he dicho antes, mi blog es un "static site". Básicamente es un conjunto de páginas HTML (más imágenes, css, etc) preconstruido previamente de tal forma que no necesito base de datos ni un servidor especial para visualizarlo.

Mi blog está alojado en un plan Shared en DreamHost pero al ser todo generado previamente, en principio podría usar casi cualquier alojamiento básico.

Para el tema de estadísticas (a todos nos gusta saber si nos leen para qué engañarnos) tiro del viejo sistema que analiza los logs de acceso. DreamHost lo provee con un sólo click pero casi todos los alojamientos lo tienen de una forma u otra porque es más viejo que el hilo negro y no requiere de grandes recursos por su parte.

En mi plan con DreamHost también está incluido el alojamiento de PHP que en dos palabras serían ficheros que se ejecutan en el servidor cuando los pides y que se "salida" se envía a tu navegador. PHP también es más viejo que el hilo negro y suele ser incluido en casi todos los planes de hosting. Por eso es tan popular, por ejemplo, WordPress (el cual me parece un monstruo que ha crecido de tal forma que es una burrada usarlo para un blog)

Así qe aprovechando esta funcionalidad le he añadido un pequeño PHP a mi blog para que me envíe una notificación a un canal de Telegram privado cuando un usuario accede al blog

ping.php
<?php
$apiToken = 'TU_API_TOKEN';

$json = file_get_contents('php://input');
$body = json_decode($json);

$data = [
    'chat_id' => 'TU_CHAT',
    'text' => "un usuario esta leyendo $json"
];

$response = file_get_contents("http://api.telegram.org/bot$apiToken/sendMessage?" . http_build_query($data) );

Y en el static site le incluyo un pequeño javascript, que invoca a ping.php en cada página que me interesa "tracear"

api.js
$( document ).ready(function() {
    var obj = {
        url:window.location.href
    };
    $.ajax({
        url: '/ping.php',
        type: 'post',
        dataType: 'json',
        contentType: 'application/json',
        data: JSON.stringify(obj)
    });
});

De esta forma recibo un aviso cada vez que leéis una entrada en el blog pero sin recolectar información acerca de navegador, origen, sesion ni nada parecido

Este texto ha sido escrito por un humano

This post was written by a human

2019 - 2024 | Mixed with Bootstrap | Baked with JBake v2.6.7 | Terminos Terminos y Privacidad