You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用PHP的cURL获取archive.org指定域名的快照数量?

获取Archive.org域名快照数量的PHP方案

可以通过PHP的cURL获取该数值,但直接抓取目标页面的静态HTML不行——因为快照数量是页面加载后通过JavaScript动态拉取数据生成的,file_get_contents和普通cURL请求只能拿到初始静态源码,自然获取不到。

推荐两种可行方案:

方案一:使用Wayback Machine官方API(推荐)

Wayback Machine提供了CDX Server API,可直接查询指定域名的所有快照记录,统计数量即可。这种方式比抓页面更稳定,不受页面结构变化影响。

PHP cURL代码示例

<?php
$targetDomain = 'google.com';
// 调用CDX API获取所有快照的时间戳(仅返回时间戳字段以减少数据量)
$apiEndpoint = "https://web.archive.org/cdx/search/cdx?url={$targetDomain}&output=json&fl=timestamp";

// 初始化cURL
$ch = curl_init($apiEndpoint);
// 设置选项:返回结果而非直接输出,跟随重定向,模拟浏览器UA
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36');

// 执行请求
$response = curl_exec($ch);
curl_close($ch);

if ($response) {
    $snapshotData = json_decode($response, true);
    if (is_array($snapshotData) && count($snapshotData) > 0) {
        // 数组第一个元素是表头,所以总数量是数组长度减1
        $snapshotCount = count($snapshotData) - 1;
        echo "该域名快照数量:{$snapshotCount}";
    } else {
        echo "未找到该域名的快照记录";
    }
} else {
    echo "API请求失败,请检查网络或域名格式";
}
?>

方案二:抓取动态渲染后的页面(不推荐)

如果一定要通过抓取目标页面获取数值,需要借助能执行JavaScript的无头浏览器工具(如Puppeteer),PHP可通过调用Node.js脚本间接实现。但这种方式依赖额外工具,且页面结构变更会导致解析失效,仅作为备选。

大致步骤

  1. 安装Node.js和Puppeteer
  2. 编写Node.js脚本,用Puppeteer打开目标页面,提取快照数量
  3. 在PHP中通过exec()或shell_exec()调用该脚本,获取返回结果

内容的提问来源于stack exchange,提问作者daniele

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 08:05:22