我如何以编程方式确定 Github 目录页面中所有当前存在的目录?

Posted

技术标签:

【中文标题】我如何以编程方式确定 Github 目录页面中所有当前存在的目录?【英文标题】:How would I programmatically determine all the currently existing dirs in a Github dir page? 【发布时间】:2021-11-17 06:44:30 【问题描述】:

我有这个:https://github.com/bitcoin-core/guix.sigs/tree/main/22.0

php 中,我试图获取该目录中所有子目录的列表,因为它在给定时刻存在。据我所知,他们有时会删除并添加(甚至重命名)现有的。换句话说:[ '0xb10c', 'CoinForensics', 'Emzy', ... ];

最好的方法是什么?

我真的必须 cURL 获取网页(Github/Microsoft 喜欢阻止我的机器人),然后尝试从 html 代码的绝对集群中解析出来吗?

他们真的不提供这个“独立验证者”列表作为某种计算机可解析的列表吗?

我的最终目标是能够获取他们对当前版本的 Bitcoin Core 的所有验证,例如:https://raw.githubusercontent.com/bitcoin-core/guix.sigs/main/22.0/fanquake/all.SHA256SUMS,并将其与 BitcoinCore.org 上的“官方”验证进行比较,他们都没有'不匹配,我不会安装新的更新。为了能够做到这一点,我需要知道“用户”列表来构建要获取的 URL。

我不明白为什么他们似乎总是积极地让一个步骤变得不可能或几乎不可能自动化,即使在高度技术和安全相关的环境中,这毫无意义。我真的希望我遗漏了一些明显的东西。

【问题讨论】:

你能不能只比较raw.githubusercontent.com/bitcoin-core/guix.sigs/main/22.0/…和bitcoincore.org/bin/bitcoin-core-22.0/SHA256SUMS之间的哈希值? 你为什么要抓取网页界面而不是仅仅使用 git 来检查 repo? @waterloomatt 嗯? @Sammitch “使用 git”? 【参考方案1】:

最好的选择可能是在本地稀疏地克隆远程存储库,然后扫描本地文件系统以查找目录更改。

执行以下操作一次以设置稀疏克隆:

git init guix.sigs
cd guix.sigs
git remote add -f origin https://github.com/bitcoin-core/guix.sigs
git config core.sparseCheckout true
echo "22.0/" >>.git/info/sparse-checkout

现在在每次“运行”开始时执行以下操作,以查看哪些目录已更新:

git pull origin main

然后您可以在guix.sigs/22.0 中查看任何更改。

【讨论】:

所以我需要安装软件:git? 是的 - github 是一个 git 存储库,为了方便起见,它恰好有一个 Web 前端。如果您想对 github 存储库中的文件/代码执行任何编程操作,则不要通过 Web 界面进行。

以上是关于我如何以编程方式确定 Github 目录页面中所有当前存在的目录?的主要内容,如果未能解决你的问题,请参考以下文章

如何以编程方式确定浏览器窗口的当前缩放级别? [复制]

如何根据 X、Y 坐标以编程方式确定表单上字段的选项卡索引?

asp.net 成员资格 - 如何以编程方式确定用户是不是在角色中

如何以编程方式在 asp 页面中进行 301 重定向?

如何以编程方式重命名 AWS Glue 目录中的列名

如何以编程方式确定推送通知状态?