大多数网络数据关注的是当下:今天的价格、今天的排名、今天的页面。但许多问题需要追溯过去。竞争对手的定价页面在三年里是如何变化的?某个政策页面是何时新增某条条款的?某个网站在改版前是什么样子?对于需要收集网络数据的团队来说,网络存档往往是唯一还能找到这些答案的地方。
最大的存档是互联网档案馆(Internet Archive)的 Wayback Machine。本指南将介绍它保存了什么、如何查询它、它的数据在哪些方面存在不足,以及为什么访问正变得越来越困难。
Wayback Machine 保存了什么
2025年10月22日,互联网档案馆庆祝其通过 Wayback Machine 可访问的”已保存一万亿个网页”。其基础设施团队在2026年的一次演讲中提到,目前的采集速度约为每天8亿个页面,整个档案馆所有馆藏的独特数据总量超过210 PB。
关于这个数字有两点需要说明。首先,这里的”页面”指的是一次抓取,因此一个热门 URL 可能出现成千上万次。其次,档案馆并未公布它保存了多少个独特的 URL,所以这一万亿更多反映的是对部分页面的深度覆盖,而非对整个网络的广度覆盖。
相比之下,Common Crawl 在2026年8月的抓取中保存了21.4亿个页面,并可公开批量下载。这两者回答的是不同的问题:Common Crawl 是每月一次的广泛样本,而 Wayback Machine 是对特定 URL 的长期历史记录。我们关于 Common Crawl 的指南介绍了这类数据集何时已经足够使用。
如何查询它
Wayback Machine 提供了两种有文档说明的编程访问接口。
| 接口 | 返回内容 | 适用场景 |
|---|---|---|
| CDX Server API | 每次抓取一行记录:URL 键、时间戳、原始 URL、MIME 类型、状态码、内容摘要、长度 | 列出和筛选抓取记录 |
| Availability API | 距某个日期最近的单次抓取 | 在某个时间点检查某个 URL |
大部分工作由 CDX API 完成。它可以按状态码或 MIME 类型筛选,合并相邻的重复项,并对大量结果进行分页;其文档建议在批量查询时使用分页。最能省事的技巧是按内容摘要进行合并,这样你只会看到页面内容实际发生变化的抓取记录。
import time
import requests
UA = "research-pipeline/1.0 (data-team@example.com)"
def captures(url, start="2020", end="2026"):
params = {
"url": url,
"output": "json",
"fl": "timestamp,original,statuscode,digest",
"filter": "statuscode:200",
"collapse": "digest", # keep only captures where the content changed
"from": start,
"to": end,
}
r = requests.get("https://web.archive.org/cdx/search/cdx",
params=params, headers={"User-Agent": UA}, timeout=60)
r.raise_for_status()
rows = r.json()
return [dict(zip(rows[0], row)) for row in rows[1:]]
def fetch(capture):
# id_ returns the archived bytes without the Wayback banner or rewritten links
url = f"https://web.archive.org/web/{capture['timestamp']}id_/{capture['original']}"
time.sleep(5) # one request at a time, with a pause
return requests.get(url, headers={"User-Agent": UA}, timeout=60)
for c in captures("example.com/pricing"):
print(c["timestamp"], c["digest"])
从 CDX 列表入手,确定你真正需要哪些抓取记录,然后只获取那些记录。一份包含2,000次抓取的列表,合并后往往只剩下几十个不同的版本。
覆盖范围的不足之处
一个存档只能保存它所抓取到的内容,而抓取本身是不均衡的。
- 并非所有内容都被存档。 一项针对来自多个来源的 URL 的研究估计,有35%到90%的网络内容至少有一份存档副本,具体比例取决于所用样本,并且被存档频率超过每月一次的 URL 不超过31.3%。
- 网络内容在持续消失。 皮尤研究中心(Pew Research)在2024年发现,2013年存在过的页面中有38%在现今的网络上已无法访问。对其中许多页面而言,如果存在的话,存档副本就是仅剩的记录。
- 覆盖范围因国家而异。 长期以来的研究发现,存档覆盖范围因国家和语言而异,各国国家级网络档案馆通常对本国域名的覆盖更好。
- JavaScript 会隐藏内容。 一项针对存档页面的研究发现,JavaScript 导致了52.7%的嵌入资源缺失。单页应用、由脚本加载的价格信息,以及隐藏在同意弹窗后面的内容,往往会缺失或显示为空。
因此,存档中缺失某项内容并不能证明它从未存在过。应将存档覆盖范围视为一种样本,并将采样缺口与数据一并记录下来。
质量方面的不足之处
即便某次抓取存在,也未必能反映访客当时所看到的内容。
同一页面内部的时间错位。 一个页面的 HTML、图片、脚本和样式表往往是在不同时间被抓取的。一项针对15个存档库中82,425个存档页面的研究发现,只有38.7%在时间上是一致的,而同时满足一致且完整的页面仅约五分之一,即17.9%。
偏离主题的抓取内容。 某个 URL 的历史记录中可能包含停放域名、错误页面和被劫持的内容。一项研究发现,在其抽样的抓取历史中有24%存在偏离主题的页面。
无声的错误。 状态码为200的抓取记录仍可能是一个拦截页面、同意弹窗或软性404页面。我们在实时抓取中的无声失败一文中建议的检查方法同样适用于此:要验证内容本身,而不仅仅是状态码。
就分析而言,这意味着应在各版本之间比较文本和结构化字段,而不是截图,并将抓取时间戳与每个提取出的值一并保存。我们关于变更检测的指南介绍了如何在不被噪音淹没的情况下对版本进行比对。
为什么访问正变得越来越困难
有两股压力正在压缩存档所能提供的内容。
网站正在把存档拒之门外。 2025年8月,Reddit 开始限制 Wayback Machine 的访问权限,理由是有 AI 公司通过该存档抓取了其数据。到2026年1月,Nieman Lab 发现,在九个国家的1,167家新闻网站中,有241家至少禁止了互联网档案馆的其中一个爬虫访问。《纽约时报》表示:“我们正在阻止互联网档案馆的机器人访问《纽约时报》。“档案馆自己的常见问题解答(FAQ)指出,出版商无法具体指出是哪家 AI 公司通过它进行抓取,但无论如何,这些覆盖缺口是真实存在的。
档案馆正在自我防护。 2026年9月,互联网档案馆表示 Wayback Machine 曾”遭受一波又一波的高流量自动化访问”,该机构已经部署了防护措施,被拦截的请求会收到429错误。其 FAQ 写道:“我们使用速率限制、过滤和监控手段来防止滥用访问”,以及”Wayback Machine 是为人类读者而建的。”
档案馆是一家非营利性图书馆,此前也曾因大量流量涌入而被迫下线。正是重度使用者的存在,才使得这些防护措施成为必要。
如何恰当地使用存档
- 查询索引,而非页面本身。 使用 CDX API 找到你需要的抓取记录,按摘要合并,只获取最必要的内容。
- 放慢速度,表明身份。 一次只发出一个请求,中间留出停顿,并使用具有描述性的 User-Agent。对于大型项目,应事先联系档案馆。
- 查看其他存档库。 通过 Memento 标准可以访问的国家图书馆及其他存档库,能够填补缺口。
- 记录数据来源。 将抓取时间戳、原始 URL 和摘要与每个值一并保存,正如我们在AI 训练流程中的数据溯源一文中所描述的那样。
- 报告缺口。 说明有多少个 URL 没有抓取记录,或没有可用的抓取记录,以便读者判断结果的可靠性。
代理适合用在哪里,又不适合用在哪里
不要使用代理来规避 Wayback Machine 的限制。它是一家承担公共使命的图书馆,其防护措施正是因为大量自动化流量而设立的,而通过轮换 IP 来躲避429错误,恰恰正是它所要防范的行为。如果你的项目所需超出了礼貌访问所允许的范围,请联系档案馆。
住宅代理用于不同的任务:按照今天本地访客所看到的样子来采集实时网络内容。许多历史数据集正是从这里开始建立的。如果你现在就从你所关心的市场中,采集下你所关心的页面,日后就不必依赖别人的存档了。
结论
Wayback Machine 是网络历史上最深厚的记录,而 CDX API 使得实际使用它成为可能。但它的覆盖范围只是一种样本,其抓取内容可能混杂着不同的时间点,而且越来越多的网站正在将它拒之门外。查询索引、少量获取、验证所得内容、记录每个值的来源,并将这个存档当作它本来就是的那种共享公共资源来对待。
来源与参考资料
- Internet Archive, one trillion web pages archived (2025年10月22日): blog.archive.org
- Jonah Edwards, Internet Archive materials update, Designing Storage Architectures meeting (2026年): digitalpreservation.gov
- Wayback CDX Server API documentation: github.com
- Wayback Machine APIs: archive.org
- RFC 7089, HTTP Framework for Time-Based Access to Resource States (Memento): rfc-editor.org
- Common Crawl, August 2026 crawl archive: commoncrawl.org
- Ainsworth et al., How much of the web is archived?: arxiv.org
- Pew Research Center, When online content disappears (2024年5月17日): pewresearch.org
- AlSum et al., profiling web archive coverage: arxiv.org
- Brunelle et al., the impact of JavaScript on archivability (2016年): doi.org
- Ainsworth, Nelson and Van de Sompel, temporal coherence of archived pages (2015年): ws-dl.blogspot.com
- AlNoamany, Weigle and Nelson, detecting off-topic pages in web archives (2016年): doi.org
- Nieman Lab, News publishers limit Internet Archive access (2026年1月28日): niemanlab.org
- Engadget, Reddit restricts the Wayback Machine (2025年8月): engadget.com
- Internet Archive, An update on Wayback Machine access (2026年9月15日): blog.archive.org
- Internet Archive, FAQ on publishers blocking the Wayback Machine: help.archive.org