gpt4 book ai didi

git - 机器人/蜘蛛会克隆公共(public) git 存储库吗?

转载 作者:太空狗 更新时间:2023-10-29 13:42:46 25 4
gpt4 key购买 nike

我在 GitHub 上托管了一些公共(public)存储库,这些存储库偶尔会根据流量图接收克隆。虽然我愿意相信很多人都在寻找我的代码并下载它,但其中一些代码的性质让我怀疑这些克隆中的大多数来自机器人或搜索引擎爬虫/蜘蛛。我自己知道,如果我通过搜索引擎找到一个 git 存储库,我通常会用我的浏览器查看代码并在克隆它之前决定它是否有用。

有谁知道克隆 git 存储库是否是搜索引擎爬虫的标准技术,或者我的代码是否比我想象的更受欢迎?

最佳答案

存储库 Github 页面中的“克隆或下载”按钮提供了存储库的 URL。如果您在 Web 浏览器中使用该 URL,您将获得可以在浏览器中看到的 HTML 页面。网络蜘蛛也会收到相同的页面。

但是,如果您将 URL 提供给 Git 客户端,它就能够对存储库文件进行操作(克隆存储库、 pull 、推送)。这是因为 Git 客户端使用了两个 Git's own protocols 之一。建立在 HTTP 之上。

为了使用该协议(protocol),Git 客户端基于存储库的基本 URL 构建 URL,并在该 URL 上提交 HTTP 请求。

例如,如果 Git URL 是 https://github.com/axiac/code-golf.git,Git 客户端会尝试以下两个请求之一以查找更多信息关于存储库的内部结构:

GET https://github.com/axiac/code-golf.git/info/refs HTTP/1.0

GET https://github.com/axiac/code-golf.git/info/refs?service=git-upload-pack HTTP/1.0

第一个称为“哑”协议(protocol)(Github 不再支持),第二个称为“智能”协议(protocol)。 “愚蠢”的适用于文本消息,“智能”的适用于二进制字符串 block 和自定义 HTTP header 。

为了在 Git 存储库上运行,Git 客户端必须解析从服务器接收到的响应,并使用该信息创建和提交正确的请求以执行其预期的操作。

浏览器无法在 Git 存储库上运行,因为它不知道协议(protocol)。多用途网络爬虫的工作方式或多或少类似于浏览器。它通常不太关心样式和脚本以及 HTML 的正确性,但对于 HTTP,它与浏览器非常相似。

为了克隆您的存储库,必须对网络爬虫进行专门编程以理解 Git 传输协议(protocol)。或者(更好)它可以在找到它认为是 Git 存储库 URL 的 URL 时运行外部 git clone 命令。在这两种情况下,爬虫程序都必须牢记这一目的:克隆 Git 存储库。

总而言之,网络爬虫(或使用网络浏览器的用户)不可能错误地克隆 Git 存储库。

网络爬虫甚至不需要从 Github 或其他提供 Git 存储库的网络服务器克隆 Git 存储库。它可以通过使用(Github 或其他)网络服务器提供的链接获取存储库中包含的所有文件的每个版本。

关于git - 机器人/蜘蛛会克隆公共(public) git 存储库吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40562982/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com