Articoli approfonditi sulla tecnologia che plasma il futuro.

Il web perde la memoria: combattere il decadimento digitale

Ogni anno il web perde milioni di pagine. Ecco come il link rot minaccia la storia digitale e cosa possono fare gli sviluppatori.

Libri su scaffali infiniti che si dissolvono in pixel luminosi in una sala di biblioteca buia

Nel 2014, una ricercatrice del clima di nome Dr.ssa Maria Chen pubblicò un dataset rivoluzionario sullo scioglimento dei ghiacci artici. Lo ospitò sui server della sua università, lo linkò in tre articoli sottoposti a peer review e lo condivise in una dozzina di mailing list accademiche. Nel 2019 l'università migrò la propria infrastruttura web. L'URL si ruppe. Il dataset scomparve. Nessun backup esisteva in alcun archivio pubblico. Cinque anni di lavoro sul campo, ridotti a un errore 404.

La storia di Chen non è insolita. È la norma. Il web sta perdendo la memoria a un ritmo impressionante, e la maggior parte di noi se ne accorge solo quando ha bisogno di qualcosa che non c'è più.

Link Rot e la lenta erosione della storia del web

I ricercatori la chiamano link rot: il processo lento e inesorabile con cui gli URL smettono di funzionare. Una ricerca del Pew Research Center ha rilevato che circa il 38 percento delle pagine web del 2013 era diventato inaccessibile nel giro di un decennio. Non è un errore di arrotondamento. Parliamo di più di un terzo della conoscenza registrata sul web di un singolo anno, andata persa.

Le cause sono banali. Le aziende si fondono e cambiano nome. Le fatture di hosting non vengono pagate. I sistemi di gestione dei contenuti vengono sostituiti. I governi ristrutturano i siti dopo le elezioni. L'autore di un blog muore e nessuno rinnova il dominio. Nessuno di questi eventi sembra catastrofico da solo. Ma si sommano. Anno dopo anno, il web si lascia alle spalle il proprio passato come pelle morta.

E le conseguenze non sono astratte. Dei tribunali hanno citato URL nelle sentenze scoprendo poi, mesi dopo, che non esistevano più. I giornalisti hanno perso materiale di fonti. Intere comunità online, con le loro conversazioni, battute interne, opere creative e conoscenza collaborativa, sono state cancellate da un giorno all'altro quando una piattaforma ha deciso di cambiare rotta o chiudere. Ricordate Vine? Google+? Il GeoCities originale? Ogni chiusura ha cancellato un pezzo di storia culturale che non potrà mai essere ricostruito del tutto.

Perché archiviare il web sta diventando più difficile, non più facile

Si potrebbe pensare che stiamo migliorando. Lo spazio di archiviazione costa poco. La banda è abbondante. Abbiamo strumenti di archiviazione maturi e organizzazioni dedicate alla conservazione. Perché allora il problema peggiora?

Due forze stanno convergendo. La prima è tecnica. Il web moderno è molto più difficile da archiviare delle pagine HTML statiche dei primi tempi di Internet. Le single-page application generano i contenuti interamente in JavaScript. I siti guidati da API non hanno un URL stabile da catturare. Paywall, barriere di autenticazione e flussi di contenuti personalizzati creano pagine che appaiono diverse a ogni visitatore, inclusi i crawler di archiviazione.

La seconda forza è politica. L'esplosione dei large language model ha scatenato una reazione contro il web crawling. Editori e proprietari di siti, preoccupati che i propri contenuti vengano usati per addestrare sistemi di IA senza permesso, hanno messo in campo misure di blocco aggressive. Stanno aggiornando i file robots.txt, implementando sistemi di rilevamento dei bot e bloccando interi intervalli di IP associati al data harvesting.

Ecco il danno collaterale: queste misure raramente distinguono tra un crawler commerciale per l'IA e uno di archiviazione. L'Internet Archive, con la Wayback Machine, rispetta robots.txt. Quando un sito blocca indiscriminatamente tutti i bot, anche i crawler di archiviazione restano fuori. Il proprietario vuole impedire l'addestramento delle IA. Ciò che ottiene davvero è assicurarsi che nessuna traccia storica dei suoi contenuti sopravviva.

Bloccare i crawler di archiviazione per impedire lo scraping dell'IA è come dare fuoco a una biblioteca per impedire a qualcuno di fotocopiare un libro. L'intento è comprensibile. Il danno collaterale alla memoria storica è enorme.

Internet Archive: sotto pressione ma ancora essenziale

L'Internet Archive è la cosa più vicina a una biblioteca pubblica che il web abbia. La sua Wayback Machine ha archiviato oltre 800 miliardi di pagine web dal 1996. È un numero sbalorditivo, che però rappresenta solo una frazione di quanto è stato pubblicato online.

L'organizzazione ha affrontato seri ostacoli. Le battaglie legali sul programma di prestito di Open Library hanno assorbito risorse e attenzione. L'effetto dissuasivo più ampio sul lavoro di conservazione digitale è stato reale: altre istituzioni hanno osservato quelle cause e sono diventate più caute su cosa archiviare.

Ma la sfida più grande è semplicemente la scala. Il web cresce più velocemente di quanto qualsiasi singola organizzazione riesca a catturarlo. E il passaggio verso applicazioni dinamiche e pesanti in JavaScript significa che il crawling tradizionale cattura sempre meno di ciò che gli utenti vedono davvero. Un crawler che scarica l'HTML grezzo di un'app React ottiene un div vuoto e un bundle di JavaScript, non l'articolo, non le immagini, non gli elementi interattivi.

  • Le applicazioni renderizzate lato client richiedono browser headless per catturare istantanee significative
  • I contenuti guidati da API spesso non hanno un URL stabile e scansionabile
  • I contenuti multimediali — video, podcast, visualizzazioni interattive — richiedono approcci di conservazione specializzati
  • La crescita dei contenuti web supera di gran lunga la capacità di crawling di qualsiasi singola organizzazione
  • L'incertezza legale rende le istituzioni riluttanti ad archiviare in modo aggressivo

Non è un motivo per rinunciare agli archivi centralizzati. È un motivo per smettere di affidarsi solo a quelli.

Strumenti di archiviazione web self-hosted che ogni sviluppatore dovrebbe conoscere

La buona notizia: non serve essere un'istituzione per archiviare il web. Un ecosistema crescente di strumenti open source rende pratico per singoli e piccoli team gestire una propria infrastruttura di archiviazione. Alcuni di questi strumenti sono sorprendentemente potenti.

ArchiveBox è il punto di riferimento per l'uso personale. È uno strumento self-hosted che prende URL e li salva in più formati — HTML, PDF, screenshot, WARC e altro. Forniscigli i segnalibri del browser, un feed RSS o una semplice lista di URL in testo, e costruirà un archivio locale consultabile. L'installazione richiede pochi minuti:

# Set up ArchiveBox with Docker
docker pull archivebox/archivebox
mkdir -p ~/web-archive && cd ~/web-archive
docker run -v $PWD:/data -it archivebox/archivebox init --setup
# Archive some URLs
docker run -v $PWD:/data -it archivebox/archivebox add \
'https://example.com/important-report' \
'https://example.org/research-dataset'
# Launch the web UI to browse your archive
docker run -v $PWD:/data -p 8000:8000 archivebox/archivebox server 0.0.0.0:8000

Per catturare siti pesanti in JavaScript, Webrecorder adotta un approccio diverso. Invece di fare crawling, registra la tua sessione reale del browser — ogni richiesta di rete, ogni elemento caricato dinamicamente, ogni interazione. Il risultato è una cattura ad alta fedeltà salvata in formato WARC o WACZ, riproducibile nel browser con ReplayWeb.page. È la differenza tra fotografare un edificio e creare un tour 3D completo.

Browsertrix, dello stesso progetto Webrecorder, porta questo approccio su larga scala. È un sistema di crawling cloud-native che usa istanze reali del browser per renderizzare e catturare le pagine. Università, biblioteche e agenzie governative lo usano per gestire programmi di archiviazione istituzionale. Se devi archiviare migliaia di pagine con rendering JavaScript completo, Browsertrix è lo strumento giusto.

Come integrare la conservazione nel tuo flusso di sviluppo

Non serve gestire un sistema di archiviazione completo per fare la differenza. Piccole decisioni su come costruisci e distribuisci i siti hanno un impatto enorme sulla possibilità di conservarne i contenuti. Ecco cosa conta davvero.

Primo, progetta pensando all'archiviabilità. Usa URL stabili e leggibili. Non legare la struttura degli URL a ID di database o token di sessione. Assicurati che i contenuti critici siano presenti nella risposta HTML iniziale, non caricati interamente via JavaScript lato client dopo il caricamento della pagina. Se stai costruendo una single-page app, prevedi un rendering lato server o la generazione statica come fallback. Non sono solo buone pratiche per l'archiviazione. Lo sono anche per la SEO, l'accessibilità e le prestazioni.

Secondo, sii chirurgico con robots.txt. Se vuoi bloccare i crawler che addestrano le IA, bloccali per nome. Non mettere un telo su tutti i bot che visitano il tuo sito.

# robots.txt — block AI crawlers, welcome archival bots
# Explicitly allow archival crawlers
User-agent: ia_archiver
Allow: /
User-agent: archive.org_bot
Allow: /
# Block specific AI training crawlers
User-agent: GPTBot
Disallow: /
User-agent: Google-Extended
Disallow: /
User-agent: CCBot
Disallow: /
User-agent: anthropic-ai
Disallow: /
User-agent: ClaudeBot
Disallow: /
# Default: allow everything else
User-agent: *
Allow: /

Non è un sistema perfetto — le stringhe user agent possono essere falsificate — ma è uno sforzo in buona fede che lascia aperta la porta alla conservazione legittima, chiudendola all'addestramento non desiderato.

Terzo, automatizza l'invio degli archivi. Ogni volta che pubblichi qualcosa, inviala alla Wayback Machine. Bastano poche righe di codice e può essere integrato in qualsiasi pipeline CI/CD o hook post-pubblicazione:

import requests
import time
def archive_url(url: str, retries: int = 3) -> str:
"""Submit a URL to the Wayback Machine's Save Page Now endpoint."""
save_url = f"https://web.archive.org/save/{url}"
for attempt in range(retries):
try:
resp = requests.get(save_url, timeout=30)
if resp.status_code == 200:
location = resp.headers.get("Content-Location", resp.url)
return f"Archived: https://web.archive.org{location}"
except requests.RequestException:
if attempt < retries - 1:
time.sleep(2 ** attempt)
return f"Failed to archive {url} after {retries} attempts"
# Wire this into your publish script
new_post = "https://yourblog.com/posts/new-article"
print(archive_url(new_post))

La logica di retry conta. L'endpoint di salvataggio della Wayback Machine è spesso sotto pressione e i fallimenti temporanei sono comuni. Un po' di resilienza aiuta molto.

Capire WARC: il formato file alla base degli archivi web

Se vuoi lavorare con gli archivi web, devi capire WARC. È il formato di file standard ISO usato dall'Internet Archive, da Webrecorder e dalla maggior parte degli strumenti di archiviazione seri. Pensa a un file WARC come a una registrazione completa di ogni richiesta e risposta HTTP coinvolta nel caricamento di una pagina: l'HTML, i fogli di stile, gli script, le immagini, le chiamate API. Tutto.

È questa completezza che rende possibile la riproduzione. Un file WARC non si limita a memorizzare l'HTML grezzo: conserva l'intero contesto necessario per ricostruire la pagina com'era al momento della cattura. Ecco come leggerne uno a livello programmatico:

from warcio.archiveiterator import ArchiveIterator
def inspect_warc(filepath: str):
"""List all HTTP responses captured in a WARC file."""
with open(filepath, "rb") as stream:
for record in ArchiveIterator(stream):
if record.rec_type == "response":
url = record.rec_headers.get_header("WARC-Target-URI")
status = record.http_headers.get_statuscode()
content_type = record.http_headers.get_header("Content-Type")
print(f"[{status}] {url} ({content_type})")
inspect_warc("my-archive.warc.gz")

Il nuovo formato WACZ si basa su WARC aggiungendo un indice e un livello di metadati all'interno di un contenitore ZIP. Il vantaggio pratico è enorme: i file WACZ si aprono direttamente nel browser con ReplayWeb.page, senza bisogno di infrastruttura server. Puoi inviare via email un file WACZ e il destinatario può navigare subito il sito archiviato. È questo tipo di accesso a basso attrito che rende la conservazione davvero utile, non solo tecnicamente possibile.

Archiviazione comunitaria e la rete di sicurezza dei volontari

Alcuni dei lavori di conservazione più spettacolari avvengono in modalità emergenza. Quando una piattaforma annuncia la chiusura, un gruppo di volontari chiamato ArchiveTeam si mobilita. Hanno salvato contenuti da GeoCities, Vine, Google+ e decine di servizi più piccoli. Il loro metodo è semplice: bombardare la piattaforma morente di richieste di archiviazione prima che i server si spengano, memorizzare tutto in formato WARC e caricarlo sull'Internet Archive per l'accesso pubblico.

Chiunque può contribuire. Warrior, lo strumento di ArchiveTeam, è un'appliance virtuale che esegui sul tuo hardware. Si connette ai loro server di coordinamento, prende i compiti di archiviazione e mette a disposizione la tua banda e la potenza di calcolo per qualsiasi operazione di salvataggio in corso. È l'archiviazione distribuita nella sua forma più dal basso.

Ma i salvataggi di emergenza sono l'ultima risorsa. L'obiettivo reale è rendere la conservazione una routine. Le comunità di settore si stanno facendo avanti sempre più: progetti open source che archiviano le proprie mailing list e i tracker dei problemi, gruppi del patrimonio culturale che preservano risorse nelle lingue indigene, organizzazioni giornalistiche che mantengono archivi del proprio lavoro investigativo. Gli strumenti esistono. La parte più difficile è sostenere, anno dopo anno, il coordinamento umano e i finanziamenti necessari per mandare avanti questi sforzi.

Un toolkit pratico per la conservazione digitale

Se hai letto fin qui e vuoi passare all'azione, ecco il tuo kit di partenza. Sono gli strumenti più maturi e ben mantenuti per l'archiviazione web a ogni scala.

  • ArchiveBox — archiviazione personale self-hosted. Salva le pagine in HTML, PDF, WARC e screenshot. Ideale per conservare le tue ricerche e i tuoi riferimenti.
  • Browsertrix — crawling basato su browser su scala istituzionale. Usa istanze reali del browser per il rendering JavaScript completo.
  • Webrecorder — registra la tua sessione del browser per una cattura interattiva ad alta fedeltà. Produce file WARC/WACZ.
  • ReplayWeb.page — riproduce file WARC/WACZ direttamente nel browser. Nessun server necessario.
  • SingleFile — estensione del browser che salva una pagina web completa come singolo file HTML autosufficiente. Semplicissimo.
  • warcio — libreria Python per leggere, scrivere ed elaborare file WARC a livello programmatico.
  • Heritrix — il crawler open source dell'Internet Archive. Di livello industriale, con una curva di apprendimento ripida.
  • ArchiveTeam Warrior — appliance virtuale per partecipare ai progetti di archiviazione distribuita dei volontari.
  • Wayback Machine API — accesso programmatico per inviare e recuperare pagine archiviate.
  • Conifer — servizio di archiviazione web gestito per singoli e piccoli team che non vogliono un self-hosting.

Il web non si conserverà da solo

C'è un mito diffuso secondo cui internet non dimentica mai. Non è vero. Dimentica di continuo. Il web assomiglia più a un fiume che a una biblioteca: i contenuti vi scorrono attraverso e, a meno che qualcuno non catturi deliberatamente un'istantanea, scompaiono nel momento in cui la fonte si prosciuga.

Gli sviluppatori hanno un potere insolito in questo campo. Scriviamo i file robots.txt. Progettiamo gli schemi degli URL. Scegliamo se fare il rendering lato server o lato client. Costruiamo le pipeline di deploy che, con poche righe di codice in più, potrebbero inviare ogni nuova pagina a un archivio pubblico. Non sono atti eroici. Sono piccole decisioni tecniche che determinano se la storia del web sopravviverà.

Il dataset del Dr. Chen è ancora perso. Nessun archivio lo ha catturato prima che l'URL si rompesse. Ma ogni giorno qualcuno pubblica qualcosa che conta: un'inchiesta giornalistica, un dataset scientifico, un thread di un forum della comunità che verrà citato per anni. La domanda non è se quei contenuti prima o poi scompariranno. Succederà. La domanda è se qualcuno ne avrà salvato una copia in tempo.