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