User Tools

Site Tools


provenance:programming:tranco

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
provenance:programming:tranco [2026/08/27 12:00] – Correct Ruth ground-truth wording (HTTP logs, not 1.1.1.1 resolver traffic). Authored by Claude. karel.kubicek.claudeprovenance:programming:tranco [2026/09/21 13:59] (current) – Quote-check refresh 2026-09-21: re-ran report_tranco.mjs; 58 below threshold -> 39 rescued from the PDF + 19 below threshold in both. Authored by Claude karel.kubicek.claude
Line 10: Line 10:
   * Read first: ''data/extract/OVERVIEW.md'', the task spec, ''design:website_selection'', ''design:sampling'', ''design:longitudinal'', ''literature:corpus'', Tranco's live front page / methodology / API docs, and the 2019 NDSS PDF.   * Read first: ''data/extract/OVERVIEW.md'', the task spec, ''design:website_selection'', ''design:sampling'', ''design:longitudinal'', ''literature:corpus'', Tranco's live front page / methodology / API docs, and the 2019 NDSS PDF.
   * Target page had no revision (''core.getPageInfo'' returned "does not exist"; ''?do=export_raw'' returned the HTML error page). This is a creation, not an extension. [[Design:Website selection]] already promised [[Programming:Tranco]] as the API detail page; that is the overlap judgement: create the promised child rather than widen the selection page.   * Target page had no revision (''core.getPageInfo'' returned "does not exist"; ''?do=export_raw'' returned the HTML error page). This is a creation, not an extension. [[Design:Website selection]] already promised [[Programming:Tranco]] as the API detail page; that is the overlap judgement: create the promised child rather than widen the selection page.
-  * No write to the publication mount. Wiki saves through ''scripts/dw.mjs'' with ''--if-rev''.+  * No write to the publication mount. Wiki saves through ''scripts/dw.mjs'' with ''%%--if-rev%%''.
  
 ===== Why this page, not an overlap ===== ===== Why this page, not an overlap =====
Line 63: Line 63:
 ===== Evidence quotes checked ===== ===== Evidence quotes checked =====
  
-373 Tranco-tuple ''evidence.quote'' values against ''paper.cols.txt'', whitespace- and hyphen-normalised, then 5-word windows at 60%: **204 exact, 111 partial, 58 below threshold, 0 missing quotes, 0 missing full text**.+373 Tranco-tuple ''evidence.quote'' values against the rendering the extractor read, whitespace- and hyphen-normalised, then 5-word windows at 60%, and then — for anything below threshold — against an independent ''pypdf'' rendering of the same ''paper.pdf''. **Re-run 2026-09-21**, see //Quote-check refresh, 2026-09-21// at the foot of this page: **204 exact, 111 partial, 39 rescued from the PDF, 19 FAILED in both renderings, 0 missing quotes, 0 missing full text**.
  
-The first 15 FAILED rows were read. They are column splices, dropped citation markers, or quotes that name the sample without repeating the word "Tranco" next to the numbers — the same class ''quote_check.mjs'' warns about. None looked fabricated. They stay in the report. No FAILED quote was used on the content page.+**The old figure was 58 below threshold, and 39 of those 58 are a defect in the stored text rather than in the extraction.** 19 are below threshold in both renderings — **5.1%** of 373, not 15.5%. 
 + 
 +**The 15 rows that were read by hand are no longer the 15 the report prints.** The report lists the first 15 FAILED rows in key order and the rescues reshuffled them: **6 of the 15 originally read are still FAILED, 9 were rescued, and 9 rows now printed have not been read.** Of the 15 that were read: they are column splices, dropped citation markers, or quotes that name the sample without repeating the word "Tranco" next to the numbers — the same class ''quote_check.mjs'' warns about. None looked fabricated. They stay in the report. No FAILED quote was used on the content page.
  
 ===== External and industry verification ===== ===== External and industry verification =====
Line 82: Line 84:
 | methodology page | says five providers then "all four providers"; bucket geometry; CrUX/Radar notes | [[https://tranco-list.eu/methodology]] | Used for construction; not used as today's provider list | | methodology page | says five providers then "all four providers"; bucket geometry; CrUX/Radar notes | [[https://tranco-list.eu/methodology]] | Used for construction; not used as today's provider list |
 | PyPI ''tranco'' | 0.8.1, 2024-04-02 | registry JSON | Used | | PyPI ''tranco'' | 0.8.1, 2024-04-02 | registry JSON | Used |
-| ''tranco==0.8.1'' executed | ''.list()'' → ''46W9X'', google.com rank 1, missing → -1 | ''uv run --with tranco==0.8.1'' | Used |+| ''tranco==0.8.1'' executed | ''.list()'' → ''46W9X'', google.com rank 1, missing → -1 | ''uv run %%--with%% tranco==0.8.1'' | Used |
 | README configure example | still names alexa | PyPI description | Used as a staleness warning | | README configure example | still names alexa | PyPI description | Used as a staleness warning |
 | GitHub DistriNet/tranco-list | last push 2020-03-05; ''DEFAULT_TRANCO_CONFIG'' still 2019 providers | API ''pushed_at''; raw ''shared.py'' | Used as "do not read the default from GitHub" | | GitHub DistriNet/tranco-list | last push 2020-03-05; ''DEFAULT_TRANCO_CONFIG'' still 2019 providers | API ''pushed_at''; raw ''shared.py'' | Used as "do not read the default from GitHub" |
 | GitHub WangYihang/tranco-go-package | unarchived, pushed 2026-07-01 | API | Named as the contributed Go client | | GitHub WangYihang/tranco-go-package | unarchived, pushed 2026-07-01 | API | Named as the contributed Go client |
-| Python ''pin_tranco.py --prefix 20'' | manifest SHA-256 ''8c2e47ccc986d74471e2244d5449d524cd6f37fdd58ef9b7cad5f2a2a64d7a1c'', 325 bytes, 20 rows | run 2026-08-27T09:58:31Z | Quoted on the page; five ''head'' objects reflowed to one line |+| Python ''pin_tranco.py %%--prefix%% 20'' | manifest SHA-256 ''8c2e47ccc986d74471e2244d5449d524cd6f37fdd58ef9b7cad5f2a2a64d7a1c'', 325 bytes, 20 rows | run 2026-08-27T09:58:31Z | Quoted on the page; five ''head'' objects reflowed to one line |
  
 Rejected: Rejected:
Line 446: Line 448:
 9. QUOTE CHECK — population evidence.quote on Tranco tuples 9. QUOTE CHECK — population evidence.quote on Tranco tuples
 ====================================================================== ======================================================================
-exact: 204  partial(>=60% 5-word windows): 111  FAILED: 58+exact: 204  partial(>=60% 5-word windows): 111  rescued from PDF: 39  FAILED in both renderings: 19
 no quote on tuple: 0  missing .cols: 0 no quote on tuple: 0  missing .cols: 0
 FAILED (first 15) — read by hand; below-threshold is not automatically unsupported: FAILED (first 15) — read by hand; below-threshold is not automatically unsupported:
-  IMC/2020/accept-the-risk-and-continue-measuring-the-long-tail-of-government-https-adoptio  6/15  "We compare https in these top government websites ... with [1] 12,000 random, uniformly sampled top million non-government hostnames" 
   WWW/2020/understanding-the-performance-costs-and-benefits-of-privacy-focused-browser-exte  11/21  "Specifically, we use (i) the top 1,000 domains ... (ii) the domains 99,001 to including 100,000 ... Correspondingly, our list of domains contains 2,000 domains."   WWW/2020/understanding-the-performance-costs-and-benefits-of-privacy-focused-browser-exte  11/21  "Specifically, we use (i) the top 1,000 domains ... (ii) the domains 99,001 to including 100,000 ... Correspondingly, our list of domains contains 2,000 domains."
-  IMC/2021/knock-and-talk-investigating-local-network-communications-on-websites  2/6  "one using the Tranco snapshot taken on June 3, 2020" 
-  PETS/2021/ml-cb-machine-learning-canvas-block  11/20  "Initially, we targeted 2,200 websites, using our original dataset, original Alexa Top Rank list, and the Tranco list of the one million top sites" 
-  PETS/2021/privacy-preference-signals-past-present-and-future  3/6  "we crawled the top 100k entries from the Tranco toplist" 
   PETS/2021/the-cname-of-the-game-large-scale-analysis-of-dns-based-tracking-evasion  6/12  "For each website, we visited up to 20 pages ... on the Tranco top 10,000 websites"   PETS/2021/the-cname-of-the-game-large-scale-analysis-of-dns-based-tracking-evasion  6/12  "For each website, we visited up to 20 pages ... on the Tranco top 10,000 websites"
   PETS/2021/deja-vu-abusing-browser-cache-headers-to-identify-and-track-online-users  8/15  "we crawled the Top 100K websites from the Tranco list [33] on the 2nd and the 3rd of June"   PETS/2021/deja-vu-abusing-browser-cache-headers-to-identify-and-track-online-users  8/15  "we crawled the Top 100K websites from the Tranco list [33] on the 2nd and the 3rd of June"
-  USENIX/2021/fingerprinting-in-style-detecting-browser-extensions-via-injected-style-sheets  6/11  "we crawled the homepage of the Tranco top 200 websites with and without our countermeasure." 
-  USENIX/2021/how-great-is-the-great-firewall-measuring-chinas-dns-censorship  10/21  "We complement our test list by including domains from the Citizen Lab test lists [13], the Tranco list [66], and the Common Crawl project [14]." 
-  USENIX/2021/the-circle-of-life-a-large-scale-study-of-the-iot-malware-lifecycle  4/9  "We use Tranco's top site ranking [53] to identify and filter benign domains." 
   IMC/2022/a-first-look-at-the-name-resolution-latency-on-handshake  0/3  "extracting unique top-100 TLDs from the latter"   IMC/2022/a-first-look-at-the-name-resolution-latency-on-handshake  0/3  "extracting unique top-100 TLDs from the latter"
-  IMC/2022/html-violations-and-where-to-find-them-a-longitudinal-analysis-of-specification  3/7  "The result is an overall top list of 24,915 unique domains." 
   IMC/2022/toppling-top-lists-evaluating-the-accuracy-of-popular-website-lists  5/17  "We retrieved daily snapshots of Alexa, Umbrella, and Majestic ... Tranco rankings ... and Secrank rankings ... for February 1-28, 2022."   IMC/2022/toppling-top-lists-evaluating-the-accuracy-of-popular-website-lists  5/17  "We retrieved daily snapshots of Alexa, Umbrella, and Majestic ... Tranco rankings ... and Secrank rankings ... for February 1-28, 2022."
-  PETS/2022/trace-oddity-methodologies-for-data-driven-traffic-analysis-on-tor  9/17  "The first two datasets, SD and MD consist of visits to the 15,000 most popular websites according to the Tranco ranking" 
   USENIX/2022/automating-cookie-consent-and-gdpr-violation-detection  8/16  "Our primary source is the Tranco ranking of May 5th, 2021, which lists domains ranked by their estimated worldwide popularity."   USENIX/2022/automating-cookie-consent-and-gdpr-violation-detection  8/16  "Our primary source is the Tranco ranking of May 5th, 2021, which lists domains ranked by their estimated worldwide popularity."
 +  IMC/2023/does-it-spin-on-the-adoption-and-use-of-quics-spin-bit  12/32  "Relying on different toplists, we first gather a target set that focuses on popular domains: (i) Alexa Top 1M, (ii) Cisco Umbrella, (iii) Majestic Million, and (iv) the Tranco Res
 +  USENIX/2023/automated-cookie-notice-analysis-and-enforcement  6/11  "We use the top-100k websites from the Tranco list generated on 21 March 2022 [37]."
 +  WWW/2023/measuring-and-evading-turkmenistans-internet-censorship-a-case-study-in-large-sc  13/22  "As shown in Figure 2, the payload of our probes contains domains curated from the Citizen Lab lists, the full Tranco list, and Common Crawl Project."
 +  NDSS/2024/untangle-multi-layer-web-server-fingerprinting  12/21  "We seed our experiment with the Tranco top 10K domains generated on 22 October 2023 ... This results in a final list of 7528 sites."
 +  PETS/2024/interest-disclosing-mechanisms-for-advertising-are-privacy-exposing-not-preservi  5/9  "the top 1M most visited eTLD+1 from Tranco classified with the Topics API"
 +  IMC/2024/exploring-the-ecosystem-of-dns-https-resource-records-an-end-to-end-perspective  7/12  "The first part, spanning from May 8th to July 31st, 2023, includes 634,810 unique overlapping domains."
 +  USENIX/2024/cross-the-zone-toward-a-covert-domain-hijacking-via-shared-dns-infrastructure  0/5  "981 are ranked within the Tranco top 1M [45]."
 +  WWW/2024/panoptichrome-a-modern-in-browser-taint-analysis-framework  2/9  "we collected the API logs using VisibleV8[27] for the Tranco top 1000 sites."
 +  USENIX/2025/irblock-a-large-scale-measurement-study-of-the-great-firewall-of-iran  7/25  "These domain test lists are collected from various sources, including top-level domains (TLD) zone files, the Citizen Lab test lists (CLTL), the Tranco list, and the Common Crawl 
  
 ====================================================================== ======================================================================
Line 506: Line 508:
   homepage still says "all four rankings" (1 occurrence) and also "five providers"   homepage still says "all four rankings" (1 occurrence) and also "five providers"
   /download/<id>/full was ~104 MB; not treated as equal to the daily 1M; row count not published   /download/<id>/full was ~104 MB; not treated as equal to the daily 1M; row count not published
- 
 </file> </file>
  
Line 593: Line 594:
  
 ^ Finding ^ Disposition ^ ^ Finding ^ Disposition ^
-| The advertised ''--subdomains'' workflow crashes: live list ''567QN'' omits ''filterPLD'', and ''pin_tranco.py'' indexed ''cfg["filterPLD"]''. Confirmed 2026-08-27: that configuration's keys are combinationMethod, endDate, filterTLD, listPrefix, providers, startDate. | **Accepted.** Direct access stays for keys the daily PLD object always has. ''filterPLD'' uses ''.get'' with a SafeAccess comment for this KeyError. Cite line now prints ''filterPLD=None'' on the subdomains list. Probe asserts the omission. |+| The advertised ''%%--subdomains%%'' workflow crashes: live list ''567QN'' omits ''filterPLD'', and ''pin_tranco.py'' indexed ''cfg["filterPLD"]''. Confirmed 2026-08-27: that configuration's keys are combinationMethod, endDate, filterTLD, listPrefix, providers, startDate. | **Accepted.** Direct access stays for keys the daily PLD object always has. ''filterPLD'' uses ''.get'' with a SafeAccess comment for this KeyError. Cite line now prints ''filterPLD=None'' on the subdomains list. Probe asserts the omission. |
 | "The rows are registrable domains" is only true of the PLD-filtered daily list, and contradicts the subdomains paragraph above it. | **Accepted.** Now scoped to the pay-level-domain daily list; subdomains rows can be hostnames. | | "The rows are registrable domains" is only true of the PLD-filtered daily list, and contradicts the subdomains paragraph above it. | **Accepted.** Now scoped to the pay-level-domain daily list; subdomains rows can be hostnames. |
 | Calling a custom-list id "the whole methods section" overstates what it records. The id stores construction configuration, not the downloaded prefix, hash, or subsequent draw. The page's own "What to report" list requires those. | **Accepted.** Rewritten: cite the id for the configuration; still report prefix, hash, and draw. | | Calling a custom-list id "the whole methods section" overstates what it records. The id stores construction configuration, not the downloaded prefix, hash, or subsequent draw. The page's own "What to report" list requires those. | **Accepted.** Rewritten: cite the id for the configuration; still report prefix, hash, and draw. |
Line 600: Line 601:
  
 <bibtex bibliography></bibtex> <bibtex bibliography></bibtex>
 +
 +===== Markup sweep, 2026-09-17 =====
 +
 +Mechanical rendering repair only: a fresh live raw/XHTML export of 188 pages was checked with ''check_wrap.mjs'' and ''check_typography.mjs''. Affected plugin tags, CLI flags and heading markup were repaired; no figures or substantive prose were changed. The resulting source and rendered DOM were re-checked after saving.
 +
 +===== Currency correction, 2026-09-17 =====
 +
 +The missing pre-swap row on [[programming:tranco]] was fetched from Tranco's dated
 +API, with the adjacent dates used as controls. These are the exact URLs fetched:
 +
 +<code>
 +https://tranco-list.eu/api/lists/date/20230730
 +https://tranco-list.eu/api/lists/date/20230731
 +https://tranco-list.eu/api/lists/date/20230801
 +https://tranco-list.eu/api/lists/date/20230802
 +</code>
 +
 +^ Date ^ List id ^ Providers ^ Prefix ^
 +| 2023-07-30 | ''99P42'' | Alexa, Umbrella, Majestic, Farsight | full |
 +| 2023-07-31 | ''W9ZN9'' | Alexa, Umbrella, Majestic, Farsight | full |
 +| 2023-08-01 | ''25299'' | CrUX, Farsight, Majestic, Radar, Umbrella | 1,000,000 |
 +| 2023-08-02 | ''8289V'' | CrUX, Farsight, Majestic, Radar, Umbrella | 1,000,000 |
 +
 +The 31 July object therefore supplies the published ''W9ZN9'' row: it is the last
 +pre-swap daily list, with the old four-provider configuration and the ''full''
 +prefix. The controls show a single-day step to the CrUX/Radar configuration and
 +the one-million prefix on 1 August.
 +
 +===== Review layer, 2026-09-17 =====
 +
 +One shared ''model: sonnet'' external-currency pass ran after publication. It
 +re-fetched the dated API and **passed** the published ''2023-07-31 → W9ZN9''
 +row, including its four providers and ''full'' prefix. Its repeat fetches of the
 +30 July and 2 August controls were HTTP 429 rate-limited, so it raised no new
 +claim from those controls and required no correction to the row.
 +
 +===== Quote-check refresh, 2026-09-21 =====
 +
 +The 2026-09-04 ''cols''-vs-PDF audit on [[:provenance:literature:corpus]] showed that 73.1% of evidence quotes that cannot be located in ''paper.cols.txt'' **are** present in an independent ''pypdf'' rendering of the same ''paper.pdf''. ''report_tranco.mjs'' already carried the fallback in its quote check; what was stale was this page's copy of its output. The ''%%<file>%%'' block above was replaced by re-running the report, not hand-edited.
 +
 +^ Figure ^ Was ^ Is ^ Why ^
 +| Tranco-tuple quotes | 373 | 373 | population unchanged |
 +| exact | 204 | 204 | unchanged |
 +| partial (≥60% of 5-word windows) | 111 | 111 | unchanged |
 +| rescued from the PDF | — | **39** | these were inside the old 58 |
 +| FAILED | **58** | **19** (below threshold in both) | 58 = 39 + 19 exactly |
 +| FAILED share of 373 | 15.5% | **5.1%** | 19 of 373 |
 +
 +**Everything else in the report reproduced byte-for-byte.** A line-by-line diff of the published block against the fresh run differs **only** in the quote-check summary line and the printed FAILED list. No Tranco figure, sampling-method count, round-prefix figure or external claim on this page or on [[:programming:tranco]] moved.
 +
 +**The hand-read set drifted out from under the printed list**, exactly as on [[:provenance:artifacts]], which was refreshed in the same pass. 6 of the 15 read rows are still FAILED; 9 rows now printed have never been read. The prose above says so rather than leaving "the first 15 FAILED rows were read" beside a list where it is no longer true.
 +
 +^ Item ^ Value ^
 +| Date | 2026-09-21, unsupervised |
 +| Command | ''%%node scripts/report_tranco.mjs%%'' |
 +| Artifact | ''out/qc0921b/rep_tranco.txt'' |
 +| Script changes | none |
 +| Reviewers | one ''sonnet'' figures-vs-script pass |
 +| Pages saved | this page only — [[:programming:tranco]] publishes none of these counts |
 +| Open | the 9 newly-printed FAILED rows, and the 19 as a whole, have not been read by hand |
  
provenance/programming/tranco.1787832048.txt.gz · Last modified: by karel.kubicek.claude