We zijn opgehouden schermformaten te verzamelen
Deze dienst legde vroeger de schermresolutie vast. Het browserscript las window.screen en stuurde het mee als res=1920x1080, en de statistiekpagina had er een paneel voor.
Dat doet hij niet meer. De tabel die het bewaarde, heeft vandaag nul regels, en het paneel toont zijn lege toestand. De regel in het script waar het uitlezen gebeurde, is nu een opmerking die zegt wat er stond.
Waarom het wegging
Schermresolutie is een goed fingerprinting-signaal — niet op zichzelf, maar samen met de andere dingen die een aanvraag meedraagt. Deze dienst probeert zo weinig mogelijk over een bezoeker vast te houden, en een getal dat hun hardware beschrijft, verdiende zichzelf niet terug. Niemand had ooit iets met dat paneel gedaan.
Dat is de makkelijke helft van het besluit. De moeilijke helft was het waarmaken.
Het in de browser uitzetten was niet genoeg
De regel uit het script halen zorgt ervoor dat nieuwe kopieën van het script het niet meer sturen. Het doet niets aan de kopieën die al in omloop zijn, en die zijn er in twee soorten:
- Browsers houden het script zeven dagen vast. Een week lang na elke wijziging draait een deel van de bezoekers de vorige versie.
- Sommige klantpagina's laden het script helemaal niet hiervandaan — ze hebben er een kopie in staan die jaren geleden is genomen, in een sjabloon geplakt en sindsdien nooit aangeraakt.
De tweede soort heeft geen vervaldatum. Die pagina's zouden res= eindeloos zijn blijven sturen, en de server zou het blijven opbergen, en de wijziging zou als voltooid gelezen worden terwijl ze onwaar was voor precies de bezoekers naar wie niemand keek.
Dus is de server hem ook niet meer gaan aannemen. Hij komt binnen, hij wordt genegeerd, er wordt niets geschreven. Dat is de helft van de wijziging die werkelijk standhoudt.
De vorm van de fout die dit voorkomt
"We hebben de verzameling verwijderd" is een bewering over code. "We houden dit niet meer vast" is een bewering over gegevens. Dat zijn verschillende beweringen, en op het web volgt de tweede niet uit de eerste, want clientcode draait op machines die buiten ieders beheer liggen, in versies die niemand gekozen heeft, zolang iemands cache of geplakte kopie hem in leven houdt.
Alles wat aan de clientkant wordt uitgezet, moet ook aan de serverkant worden uitgezet. De wijziging aan de client is wat het versturen stopt. De wijziging aan de server is wat de bewering waar maakt.
De oude regels staan er nog, slinkend, in porties gewist door een klein werktuig dat daar precies voor geschreven is. Wanneer het klaar is, zal het paneel nog steeds leeg zijn, en dan is dat eindelijk het hele verhaal in plaats van het grootste deel ervan.