Sorvegliante di pagina
Alcune pagine cambiano senza avvisare: il listino di un fornitore, i termini di un servizio, la documentazione di uno strumento che usi. Questo scaffolding le tiene d’occhio per te. Le guarda a ogni giro, salva l’ultima versione vista, e quando il contenuto cambia ti dice in poche righe cosa è successo: quale riga è sparita, quale è comparsa, quale prezzo si è mosso.
È un file Node solo, senza dipendenze. Lo stato (l’ultima versione di ogni pagina) sta in un file locale, così al giro dopo il confronto è con quello che aveva visto prima.
Scarica lo script: sorvegliante-pagina.mjs
Farlo girare (subito, senza rete né costi)
Serve solo Node 20 o superiore. Il primo giro si fa a vuoto, su due versioni di un finto listino incluse nello script:
node sorvegliante-pagina.mjs --prova
Vedi il diff tra il «prima» e il «dopo»: il prezzo dell’hosting che sale, l’assistenza che cambia, il traffico che diventa illimitato. Poi puntalo su pagine vere:
node sorvegliante-pagina.mjs https://una-pagina.example https://altra.example
La prima volta registra e basta (non ha niente con cui confrontare). Rilancialo domani, e ti segnala le differenze. Un giro al giorno, magari da un lavoro pianificato, ed è un sorvegliante che non dorme.
Cosa guardare nel codice
Lo script è corto e commentato. Tre punti. Lo stato è esplicito, un file JSON leggibile: puoi aprirlo e vedere l’ultima versione di ogni pagina, niente magia nascosta. Il diff è deterministico, riga per riga: mostra cosa è stato tolto e cosa aggiunto, ed è volutamente semplice perché per accorgersi di un cambiamento basta e avanza. E la prima volta non inventa: se non ha una versione precedente, lo dice e registra, invece di fingere un confronto.
Adattarlo al tuo caso
Le modifiche tipiche: filtrare la parte di pagina che ti interessa (spesso vuoi sorvegliare solo la sezione prezzi, non l’intero sito, e basta restringere il testo estratto prima del confronto); aggiungere un avviso vero (una mail, un messaggio) quando qualcosa cambia, al posto della stampa a schermo; e, se vuoi il riassunto «in una riga» più curato, passare il diff a un modello, tenendo però il confronto deterministico come base che non dipende da nessuna chiave.
Romperlo apposta
Dagli una pagina che cambia a ogni caricamento (una con un orologio o un contenuto casuale) e guarda come segnala «cambiamenti» che non ti interessano: capirai perché filtrare la parte giusta è metà del lavoro. Dagli un indirizzo che non risponde e vedi come lo salta senza fermarsi. È lo stesso principio di monitoraggio della lezione «Automatizzare da un capo all’altro»: un occhio che guarda al posto tuo, ma che dichiara cosa vede e cosa no.