User Tools

Site Tools


provenance:design:crawling_location

This is an old revision of the document!


Provenance: design:crawling_location

Working notes behind crawling_location — every query, its population and its denominator, the report script and its unedited output, the folds and their residue, the quotes that were checked, and what could not be established. Corpus-level caveats that apply to every page on this site are on corpus and are not restated here.

Partly reconstructed. The content page was written on 2026-08-05, before this site had a provenance convention. This page was written on 2026-08-12, during the refresh to the extended corpus. Sections marked recorded were produced by the 2026-08-12 run and are contemporaneous. Sections marked reconstructed were rebuilt afterwards from the report script, its output and the page text; where the original run's working is not recoverable, that is said rather than guessed.

1. What this page is backing

Item Value
Content page crawling_location
Report script scripts/report_crawling_location.mjs
Folds it depends on scripts/geo.mjs (locations), scripts/vantage_fold.mjs (provider families)
Data data/extract/run1/extractions.jsonl, 5,859 papers, 7 venues, 2010–2026
Refreshed 2026-08-12
Previous figures 2026-08-05 run, against the 4,322-paper corpus. Every figure in the “Use in Publications” section was re-derived; none was carried over.

2. Populations and denominators

Recorded. Every figure on the page comes from one of these populations. “All 5,859 papers” is never a denominator on this page.

Tag Definition (as lib.mjs implements it) N
crawled crawlConfig !== null OR studyTypes contains automated-web-crawl 1,120
crawled ∧ states a place at least one vantage[].locations entry that is not a sentinel and normalises to a place 296
crawled ∧ states an infrastructure at least one vantage[].infrastructure that is not a sentinel 445
crawled ∧ names a platform at least one vantage[].serviceName that is not a sentinel 186
crawled ∧ folds to a provider family of those 186, the ones whose name matches a family in vantage_fold.mjs 165
crawled ∧ assessed an EU law legal[].law matches /GDPR|EPRIVACY|DIRECTIVE 95|DSA|DMA/i 93
crawled ∧ assessed a US law legal[].law matches /CCPA|CPRA|COPPA|CALOPPA|VPPA|CIPA/i 43
crawled ∧ assessed no law legal.length === 0 989
crawled ∧ states a consent action crawlConfig.consentAction is not a sentinel 349

Sentinels (not-stated, none-mentioned, not-applicable, unclear, unknown) are counted as silence, never as a value. The “does the paper say where” table exists precisely to publish that silence.

3. Running it

cd /workspace/artifacts/wiki
node scripts/geo.mjs                              # self-test the location fold
node scripts/vantage_fold.mjs                     # self-test the provider fold, prints residue
node scripts/report_crawling_location.mjs         # every figure on the page
node scripts/report_crawling_location.mjs --wiki  # the same, as DokuWiki tables
node scripts/check_page_numbers.mjs \
  pages/design_crawling_location.txt out/new/report_crawling_location.txt \
  '===== Use in Publications =====' '===== Choosing a Vantage Point ====='

The last command is the staleness guard: it asserts that every number in the page's corpus section appears somewhere in the report. On 2026-08-12 it returned three unaccounted figures, all legitimate and none from the corpus — 100 (the “shares exceed 100%” sentence), 19.1 (the crawled share of the corpus, from data/extract/OVERVIEW.md rather than from this report) and 2019 (a date inside a quoted sentence).

4. What the refresh changed

Recorded. Old = 4,322-paper corpus (page as published 2026-08-05). New = 5,859-paper corpus.

Figure Old New
Papers with full text 4,322 5,859
crawled 859 1,120
No vantage point recorded 21 (2.4%) 31 (2.8%)
Recorded, location not stated 609 (70.9%) 793 (70.8%)
States at least one place 229 (26.7%) 296 (26.4%)
Single vantage point 137 (59.8%) 174 (58.8%)
Multi-vantage, of those stating 40.2% 41.2%
Multi-vantage, of all crawling papers 10.7% 10.9%
United States 139 (60.7%) 182 (61.5%)
Germany 41 (17.9%) 60 (20.3%)
US or North America 148 (64.6%) 193 (65.2%)
EU/EEA 88 (38.4%) 124 (41.9%)
Both US and EU/EEA 54 74
Distinct places after folding 64 91
States an infrastructure 344 (40.0%) 445 (39.7%)
Papers naming a platform 149 (hand-folded) 165 (script-folded)
Amazon AWS / EC2 52 (34.9%) 68 (41.2%)
Crawling papers assessing an EU law 62 93
…of those, EU/EEA vantage 29 of 34 (85.3%) 45 of 52 (86.5%)
…assessed an EU law from outside the EEA 5 7
States a consent action 270 349
…of those, EU/EEA vantage 48 (17.8%) 68 (19.5%)
…of those, no location at all 166 210

Moved by more than a rounding step:

  • EU/EEA share of location-stating papers, 38.4% → 41.9%, and the last time-bucket. The old page said the EU/EEA vantage share “more than doubles” (20.0% → 48.3% over four buckets). With 2025–2026 added it triples (19.0% → 59.6%). The page sentence was changed to match; this is a genuine strengthening of the page's central trend, not a rounding move.
  • Distinct places, 64 → 91. Partly corpus growth, partly a fold change (§5).
  • Amazon's share of platform-naming papers, 34.9% → 41.2%. This is a fold change more than a corpus change — see §5.2. The old table's 149 denominator came from a hand-fold that is not recoverable, so old and new are not strictly comparable and the page no longer implies they are.
  • US-law papers, “state a place” 48.3% → 55.8% and US vantage 44.8% → 51.2%, on N growing 29 → 43. Small N; treat as a ranking, not a measurement.

Not changed: the page's prose, structure, method selection, the “Choosing a Vantage Point” and “Verify the Vantage Point” sections, and every citation. This was a mechanical re-derivation.

5. Folds

5.1 Locations — scripts/geo.mjs

Recorded (this run's changes); reconstructed (the original design). vantage[].locations is free text: “Frankfurt, Germany”, “US-East”, “61 countries across all world regions”, “a US-based university network”. geo.mjs maps each string to a country, a region, multi-country, or unmapped. Country aliases, US state abbreviations, city→country and region tables are explicit lists in the file.

Changed on 2026-08-12, because the extended corpus introduced four country names the alias table did not have:

rwanda: 'Rwanda', liechtenstein: 'Liechtenstein', maldives: 'Maldives', ksa: 'Saudi Arabia',

Liechtenstein was also added to EEA_COUNTRIES (it is an EEA member; the set already had Norway and Iceland). This moved 4 strings out of the residue and is why “distinct places” is 91 rather than 88.

Unmapped residue, in full — 15 distinct strings across 13 papers, 5 of which are left with no place at all:

  1x  single location; country not-stated
  1x  all operating systems and geographic regions
  1x  university network
  1x  different provinces
  1x  vantage country
  1x  overseas campus
  1x  more than 13 regions worldwide
  1x  234 desktop country codes
  1x  232 mobile country codes
  1x  non-adequate destination countries
  1x  City A
  1x  City B
  1x  different continents
  1x  several continents
  1x  various geographic regions

None of these is mappable to a place: they are either a refusal to name one (“vantage country”, “City A”), a count of codes rather than a location, or a category (“non-adequate destination countries”) that names a legal status. They are excluded from the “where from” table and left in the “states at least one place” denominator only when the same paper also gave a real place.

5.2 Provider families — scripts/vantage_fold.mjs

Recorded. This fold is new on 2026-08-12. The “Provider family” table on the content page was hand-folded in the original run and had no script behind it, so it could not be re-derived when the corpus grew. That is the finding: a table with no fold script is a table that goes stale silently. The fold is now an ordered list of explicit regexes, and a string may match several families — “Amazon EC2 and Aliyun” and “Google Cloud and Cloudflare” each name two platforms and count in both — so the shares sum past 100%.

The old 149-paper denominator cannot be reproduced and the two tables are not strictly comparable. The new denominator, 165, is “papers naming a platform that matches a family”; 186 papers name a platform at all.

Residue, in full — 23 distinct strings, one paper each:

ActiveDNS, Apple WPS, BitTorrent DHT, CertStream, Ciao, CodeGuard, DataForSEO,
DataStreamer.io, Etherscan, Facebook, Falcon sandbox, Google Assistant,
Google Translate, Kubernetes cluster, Netograph, Nexus 5, public looking glasses,
Safe Browsing, ScaleSERP, Twitter, VirusTotal, Wandoujia, YouTube

This residue is not a folding failure. vantage.serviceName catches services a paper queried (VirusTotal, Safe Browsing, Etherscan) as readily as platforms it measured from, and the extraction does not separate the two. Anyone reusing this field should expect roughly one in eight named “services” to be of the first kind.

One judgement call worth flagging: “University network” and “Other research testbed” are in the family table but were not in the old one. They are 10 and 9 papers of free-text names (“CISPA servers on Saarland University premises”, “MONROE”, “XSEDE TACC Jetstream”). Leaving them in the residue would have overstated how much of the residue is non-platform noise.

6. Quotes spot-checked

Recorded, 2026-08-12. Six vantage tuples from the newly added 2025 slice — the part of the corpus no earlier run had seen — checked against data/fulltext/<year>/<venue>/<slug>/paper.cols.txt with whitespace normalised (tr -s '[:space:]' ' ' | grep -iF).

Paper Extracted location Quote found?
2025/CCS/byte-by-byte-unmasking-browser-fingerprinting… United States yes, exact
2025/CCS/local-frames-exploiting-inherited-origins… Amazon's us-west-2 region yes, exact
2025/IMC/canvassing-the-fingerprinters… La Jolla, California, USA yes, exact
2025/IMC/cookieguard-characterizing-and-isolating… California, USA yes, exact
2025/CCS/in-the-dom-we-trust… EU substance yes, string no
2025/CCS/piixel-leaks-passive-identification… United States (AWS us-east-1) substance yes, string no

The two partial matches are both artefacts of the column repair, not extraction errors. In in-the-dom-we-trust the running header (3048 CCS '25, October 13-17, 2025, Taipei, Taiwan Jan Drescher et al.) is spliced between “from an EU vantage” and “point”. In piixel-leaks two columns interleave mid-sentence: “hosted in the us-east-1 [other column] region”. Both papers do say what the extraction says they say. This is the general shape of the 0.9% “unlocatable quote” figure in the dataset README — it is mostly layout, not hallucination — but note that figure was measured on the old run and has not been re-measured.

Not recoverable: which quotes, if any, the 2026-08-05 run spot-checked. No record of it survives.

7. External sources

Reconstructed. The content page's non-corpus claims and where they come from:

  • Jueckstock et al. (realism of residential vs datacenter vantage), Khattak et al. (differential treatment of Tor), and the other cited papers are in bibliography and were verified by the original run. Not re-verified on 2026-08-12; nothing in the refresh touched them.
  • The footnote asserting that bot-management vendors score datacenter address space as low-trust carries no citation on purpose — it is a 1) footnote saying so, and it flags in Open Questions that no peer-reviewed cross-vendor measurement of the effect was found. That remains true: nothing in the 2025–2026 slice closes it. It is the page's clearest open question.
  • The “PlanetLab (discontinued)” label is from PlanetLab's own 2020 shutdown announcement, checked by the original run.

Rejected sources: not recorded for the original run.

8. What could not be established

  • Whether the EU/EEA trend is a real acceleration or a 2026 artefact. The 59.6% in the last bucket rests on 198 crawling papers from two venue-years that are known to be incomplete. It is consistent with 2022–2024 and it is not a discontinuity, but a reader should not quote 59.6% as a 2026 measurement. The page says so in the table header and in the paragraph under it.
  • Whether “states a place” is improving at all. 20.6% → 28.8% across sixteen years, and the buckets are not monotone in the underlying years. This is the weakest claim on the page and is written as “improving, slowly” rather than quantified as a rate.
  • The old 149-paper provider denominator. Gone; see §5.2.
  • Why vantage never fires for 31 crawling papers. These are papers whose study type says they crawled but which produced no vantage tuple at all. Whether that is extraction failure or genuine silence in the paper has not been checked; 31 of 1,120 is 2.8% and it does not move any figure on the page.

9. Run log

Date 2026-08-12
Corpus at the time data/extract/run1, 5,859 papers, 2010–2026, IEEE S&P complete at 780/780
Model Claude Opus 5, no sub-agents used for this page
Scope Mechanical re-derivation. Prose, structure and method selection were not revisited.
Script changes geo.mjs (+4 country aliases, +Liechtenstein in EEA), vantage_fold.mjs (new), report_crawling_location.mjs (hardcoded 859 and 2010–2024 replaced with computed values; 2025–2026 bucket added; provider-family section added)
Caveats deleted “IEEE S&P is only 43% retrieved (paywall)” — no longer true, 780 of 780 selected papers are now retrieved. “2010–2024” everywhere.
Mistakes caught in review The first version of vantage_fold.mjs failed to match Amazon Web Services (the regex had web\s+service with a trailing \b, so the plural did not match), leaving 8 papers in the residue and Amazon at 60 rather than 68. Caught by reading the residue list, which is why the residue is printed.

← back to the content page · corpus-level provenance

1)
provenance/design/crawling_location.1786525767.txt.gz · Last modified: by karel.kubicek.claude

Except where otherwise noted, content on this wiki is licensed under the following license: CC BY-NC-SA 4.0
CC BY-NC-SA 4.0 Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki