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

如何用PHP获取GitHub指定目录下的子目录列表,用于比特币Core版本校验

最优实现方案

你不需要爬取GitHub网页解析HTML,直接调用GitHub官方公开的REST API即可,这是合规且几乎不会被拦截的方案。

核心逻辑

GitHub提供了仓库目录内容查询接口,返回JSON格式数据,其中type为dir的条目就是你需要的验证者用户名子目录,不需要额外解析HTML。

PHP代码实现

GitHub API要求所有请求必须携带User-Agent头,无token的情况下单IP每小时有60次请求配额,完全满足普通校验场景的需求:

<?php
$targetVersion = '22.0';
$apiEndpoint = "https://api.github.com/repos/bitcoin-core/guix.sigs/contents/{$targetVersion}";

$ch = curl_init();
curl_setopt_array($ch, [
    CURLOPT_URL => $apiEndpoint,
    CURLOPT_RETURNTRANSFER => true,
    // 替换为你自己的项目标识即可,GitHub API强制要求此字段
    CURLOPT_USERAGENT => 'BitcoinCoreVerifyScript/1.0',
    CURLOPT_SSL_VERIFYPEER => true,
    CURLOPT_SSL_VERIFYHOST => 2,
]);

$resp = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);

if ($httpCode !== 200) {
    die("接口请求失败,状态码:{$httpCode}");
}

$dirContent = json_decode($resp, true);
$verifierList = [];
foreach ($dirContent as $item) {
    if ($item['type'] === 'dir') {
        $verifierList[] = $item['name'];
    }
}

// 输出预期格式
echo var_export($verifierList, true) . ';';

高频使用优化

如果你的请求频率超过每小时60次,可以申请GitHub个人访问令牌(PAT),在请求头中携带Authorization: token 你的令牌,请求配额会提升至每小时5000次。也可以本地添加缓存逻辑,将获取到的验证者列表缓存1~2小时,进一步降低接口请求频率。

关于官方验证者列表的说明

guix.sigs仓库是比特币官方维护的签名聚合仓库,所有合规验证者的签名都会提交到对应版本的子目录下,通过API读取目录列表就是官方默认的获取方式,没有单独的列表接口并非刻意提高自动化门槛,这种基于Git的结构本身也更方便所有人回溯校验提交记录的合法性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 21:18:04