bots/spiders 克隆 public git 存储库吗?

Do bots/spiders clone public git repositories?

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

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

存储库 Git 中心页面中的 "Clone or download" 按钮提供了存储库的 URL。如果您将 URL 与网络浏览器一起使用,您将获得可以在浏览器中看到的 HTML 页面。网络蜘蛛也接收到相同的页面。

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

为了使用此协议,Git 客户端基于存储库的基础 URL 构建 URLs 并在此 URLs 上提交 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

第一个称为 "dumb" 协议(Github 不再支持),第二个称为 "smart" 协议。 "dumb" 一种适用于文本消息,"smart" 一种适用于二进制字符串块和自定义 HTTP headers.

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

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

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

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

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