# 3.13 Change detection. Monitoriza cambios en una web

[![changedetection-logo.png](https://libros.catedu.es/uploads/images/gallery/2023-03/scaled-1680-/changedetection-logo.png)](https://libros.catedu.es/uploads/images/gallery/2023-03/changedetection-logo.png)

*Imagen obtenida de https://changedetection.io/*

## Esta herramienta sirve para...

que se nos notifique cuando una determinada web (o parte de una web) cambie. Es especialmente útil cuando queremos, por ejemplo, enterarnos de una nueva noticia que aparezca en la web del colegio de nuestros hijos/as o cuando estamos esperando una calificación de un proceso selectivo y no queremos estar accediendo continuamente a la página web a comprobarlo. Este servicio se encarga de monitorizar por nosotros/as la web que le indiquemos y avisarnos si hay cambios.

## Web de proyecto y otros enlaces de interés

Web del proyecto: [https://changedetection.io/](https://changedetection.io/)

Repositorio del proyecto: [https://github.com/dgtlmoon/changedetection.io](https://github.com/dgtlmoon/changedetection.io)

## Despliegue

Como en ocasiones anteriores vamos a hacer con docker-compose para ello accedemos al terminal y escribimos

```bash
cd $HOME
mkdir change-detection
cd change-detection
nano docker-compose.yml
```

y dentro del fichero escribiremos el siguiente contenido

```yaml
version: '3.2'
services:
    changedetection:
      image: ghcr.io/dgtlmoon/changedetection.io
      container_name: changedetection
      hostname: changedetection
      volumes:
        - changedetection-data:/datastore
      ports:
        - 5000:5000
      restart: unless-stopped
volumes:
  changedetection-data:

```

como en ocasiones anteriores, para guardar los cambios pulsaremos control + x y cuando nos pregunte aceptaremos. Una vez volvamos a estar en el terminal, escribiremos `docker compose up -d` para lanzar los servicios ubicados dentro del fichero docker-compose. Veremos algo similar a:

[![changedetection-deploy.png](https://libros.catedu.es/uploads/images/gallery/2023-03/scaled-1680-/changedetection-deploy.png)](https://libros.catedu.es/uploads/images/gallery/2023-03/changedetection-deploy.png)

*Elaboración propia*

Si accedéis en vuestro navegador a la IP de la raspberry y al puerto que hemos establecido (5000). En mi caso sería http://192.168.0.201:5000 deberíais ver algo como:

[![changedetection-dashboard.png](https://libros.catedu.es/uploads/images/gallery/2023-03/scaled-1680-/changedetection-dashboard.png)](https://libros.catedu.es/uploads/images/gallery/2023-03/changedetection-dashboard.png)

*Elaboración propia*

## Funcionamiento

El funcionamiento es tremendamente sencillo. Por ejemplo, para borrar las 2 páginas webs que vienen monitorizadas por defecto únicamente deberemos marcar los checkboz que aparecen a su izquierda y marcar `delete`.

Si queremos añadir una nueva página a monitorizar es suficiente con introducir una url en el recuadro superior y pulsar `Watch`. Si introducimos una url y pulsamos en `Edit > Watch` entonces tendremos acceso a una pantalla como la siguiente

[![changedetection-create.png](https://libros.catedu.es/uploads/images/gallery/2023-03/scaled-1680-/changedetection-create.png)](https://libros.catedu.es/uploads/images/gallery/2023-03/changedetection-create.png)

*Elaboración propia*

en la cual podremos establecer la frecuencia de comprobaciones o las notificaciones a recibir de esta web en concreto.

Si lo preferimos también podemos acceder a la configuración global en el menú superior en la opción de Settings que nos dará acceso a una configuración general de nuestro servicio como vemos a continuación

[![changedetection-settings.png](https://libros.catedu.es/uploads/images/gallery/2023-03/scaled-1680-/changedetection-settings.png)](https://libros.catedu.es/uploads/images/gallery/2023-03/changedetection-settings.png)

*Elaboración propia*

<p class="callout warning">Si estableces un chequeo demasiado constante de una página web puede que la web en cuestión te bloquee el acceso a la misma al considerar que estás atacando la web. Sufrirías un *baneo*.</p>