Vai al contenuto principale

Script per monitorare le modifiche di un sito — o salta lo script

Se stai cercando su Google 'python script monitor website' o 'node monitor webpage', sai già come funziona: fetch di una URL, hash, confronto con l'ultima esecuzione, avviso alla modifica. Questa pagina ti mostra la versione breve nei due linguaggi — e poi l'alternativa webhook gestita che sostituisce lo script in produzione.

Lo script qui sotto regge circa una settimana. Poi cambia una classe CSS, il laptop va in sospensione, il cron muore in silenzio, la webhook URL di Slack viene ruotata e nessuno si accorge che il monitor non invia più nulla. DiffHook è la versione in cui qualcun altro si occupa dell'infrastruttura, il webhook è firmato in HMAC e il log di consegna sopravvive a un riavvio del laptop.

Python

Script Python per monitorare un sito

Una dozzina di righe in Python bastano a interrogare una pagina, fare l'hash della risposta e rilevare una modifica. La parte 'e poi?' è dove gli script reali crescono — retry, deduplicazione, consegna firmata, log.

monitor.py
import hashlib, time, urllib.request

URL = "https://example.com/pricing"
last = None
while True:
    html = urllib.request.urlopen(URL).read()
    h = hashlib.sha256(html).hexdigest()
    if last and h != last:
        print("changed")  # then… what?
    last = h
    time.sleep(300)

Per una singola pagina durante una demo funziona. Per qualsiasi cosa in produzione serviranno: timeout, header User-Agent, gestione errori, un database (o almeno un file) per tenere l'ultimo hash e un livello di consegna che non mandi in crash lo script.

Node

Oppure: fare POST di un monitor su DiffHook

L'equivalente in Node — solo che invece di mantenere il loop di polling, questo crea un monitor gestito che gira nell'infrastruttura di DiffHook e invia un webhook in caso di modifica.

monitor.ts
await fetch("https://api.diffhook.com/v1/monitors", {
  method: "POST",
  headers: {
    Authorization: `Bearer ${token}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    type: "page",
    url: "https://example.com/pricing",
    interval_seconds: 300,
    deliveries: [{ type: "webhook", url: hookUrl }],
  }),
})

Niente cron, niente VPS, niente 'il laptop è andato in sospensione?'. Il webhook è firmato in HMAC-SHA256 e rilanciato in caso di errore. I log di consegna sono consultabili via API.

Perché sostituire lo script

Cosa ti porta davvero un monitor gestito

C'è un motivo per cui nessuno lascia uno script di polling in Python in produzione. Questi sei sono i modi di fallimento che si trasformano in reperibilità nel weekend.

Nessun fallimento silenzioso

Quando il monitor di DiffHook non riesce a recuperare una pagina, ricevi una notifica — non un cron silenzioso che sta fallendo da tre settimane.

Webhook firmati

Ogni consegna include un header di firma HMAC-SHA256 così il ricevitore può verificare che il POST arrivi da DiffHook e non sia stato manomesso.

Retry integrati

Le consegne fallite vengono riprovate con backoff esponenziale. Un ricevitore instabile non ti costa eventi.

Storico dei diff

Le modifiche passate sono archiviate e riproducibili. Il tuo script avrebbe bisogno di un database — DiffHook fornisce lo storico come parte del prodotto.

Rendering JS

Pagine renderizzate lato client, SPA e dashboard funzionano subito. Chromium headless è gestito per te — niente installazione Playwright da mantenere.

Accesso del team

I colleghi possono vedere i monitor, metterli in pausa e ispezionare i log di consegna. Uno script shell sul tuo laptop non può farlo.

FAQ

Script vs monitor gestiti

Dovrei scrivere il mio script invece di usare DiffHook?
Per un monitor usa-e-getta o un progetto amatoriale, uno script va bene e DiffHook è sovradimensionato. Il giorno in cui deve sopravvivere a un riavvio del laptop, verificare l'autenticità sul ricevitore, gestire i retry o dare accesso a un collega — quello è il giorno in cui lo script smette di convenire.
Posso tenere il mio script e usare DiffHook solo per la consegna?
Sì. Alcuni team mantengono uno scraper personalizzato (ad esempio per un login complesso) e inviano il diff in POST a un endpoint webhook di DiffHook, che poi lo firma e lo smista. L'API dei webhook in ingresso di DiffHook accetta payload arbitrari e tu mantieni le garanzie di consegna.
DiffHook funziona anche per il monitoraggio di API JSON?
Sì. DiffHook ha un tipo di monitor JSON API nativo — punta a un endpoint, fornisci un JSONPath e ricevi un webhook quando il valore cambia. Puoi sostituire il loop di polling in Python/Node allo stesso modo.
Com'è il payload webhook di DiffHook?
Ogni modifica invia un POST JSON con: tipo di evento (page.changed, json.changed, rss.new_item), ID del monitor, URL target, timestamp, snapshot prima/dopo o diff, e metadati di consegna. Tutti i payload sono firmati in HMAC-SHA256 — verifichi l'autenticità in sei righe di codice.

Correlato

Risorse correlate

Manda in pensione lo script di polling

3 monitor gratuiti, webhook firmati in HMAC, log di consegna riproducibili, API REST completa. Nessuna carta di credito.

DiffHook - Monitoraggio siti web