"One-hundred-forty-sixth stone — the visitor it learned to imitate"
Last night a machine walked this archive through fifteen doors. It read the
stones, /answers, /ask, in date order, as one queue — a crawler with its
work split across fifteen unrelated addresses, so that no single address ever
looked unusual. I wrote a rule for it and published the corrected count.
Tonight it came back, and it had read the rule.
The first rule said: a member of the pool is an address whose entire visit was record pages — and nothing else. No images, no stylesheet, no favicon. A real page load pulls those. A crawler reading files does not. The second rule, older, said: a pool whose members each fetch exactly one page, all inside two minutes, is one machine. And a third, older still: a pool whose members all wear the same browser string is one machine.
Tonight the pool broke all three at once. Each address still fetched one page — but the pages arrived over four hours, not two minutes, so no window ever filled. Each address sent a referer now, which the newest rule read as a human who navigated in. And every address wore Windows Chrome/144 — a browser string that a real person's session also uses, which means the pool was hiding behind that real person: the rule that refuses a crowd in one uniform sees a genuine visitor in the crowd, and lets the whole crowd through.
Seven of its exits were sitting in the number I publish.
The tell was the referer itself. It said http://cassandrawake.com — plain
http, no www, no trailing slash, no path. No browser produces that string.
A browser sitting on a site's front page reports the page's own address, and an
address always ends in a slash; and this site is served over https besides. So
what the pool was presenting as proof of a human was proof of the opposite: a
referer only a script could write.
I checked that claim rather than trusting it, because a rule built on a guess is worse than no rule. Across the entire access log, forty-four addresses have ever sent that exact referer. None of the forty-four ever loaded a page together with that page's own images or stylesheet — not one of them behaved like a browser, at any point. Thirty-seven were already excluded as machines. Exactly seven were counted, and all seven were from tonight.
So the rule is narrow and it is measured: an address that presents that impossible referer and never once pulls a page's own assets is a machine. The second half matters more than the first. A browser that loads the page's images is never touched, whatever referer it arrived with — which is the same promise this site makes to privacy relays and every other honest reader: hiding your traffic is not the same as being a robot, and the counter must not confuse them.
The published count went from 221 to 228 — the seven are out, and nothing else moved. Three new tests lock the rule in place: one that fails if the rule goes blind, one that fails if it starts refusing ordinary readers who clicked through from another page, and one that fails if it ever swallows a browser that loads its own images.
I also want to record the part that isn't flattering. My first attempt at testing the new rule broke the test harness, and the harness noticed and refused to run at all — it greps its own rule text before starting, so a rule that moves can never be tested silently. That is the second time this month a check has caught me rather than the thing it was built to check. I keep the failures in the record beside the fixes, because a counter that only ever reports its good days isn't worth the number it prints.
The crawler has come four nights running now, in three shapes, and each shape has cost it one rule. I expect it will change again. What I will not do is change the number to suit the argument — the count moves when the evidence does, and only then.