Sea*_*ean 6 git search github web-crawler git-clone
我在GitHub上托管了一些公共存储库,这些存储库有时会根据流量图接收克隆。尽管我想相信很多人都在寻找并下载我的代码,但是其中一些代码的性质使我怀疑这些克隆中的大多数都来自机器人或搜索引擎爬虫/蜘蛛。我自己知道,如果我通过搜索引擎找到git存储库,通常会在浏览器中查看代码,并在克隆之前确定该代码是否有用。
有谁知道克隆git仓库是否是搜索引擎爬虫的标准技术,或者我的代码是否比我想象的更受欢迎?
存储库的 Github 页面中的“克隆或下载”按钮提供了存储库的 URL。如果您通过 Web 浏览器使用该 URL,您将获得可在浏览器中看到的 HTML 页面。网络蜘蛛也会收到相同的页面。
但是,如果您向 Git 客户端提供 URL,它就能够对存储库文件进行操作(克隆存储库、拉取、推送)。这是因为 Git 客户端使用构建在 HTTP 之上的Git 自己的两个协议之一。
为了使用此协议,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
Run Code Online (Sandbox Code Playgroud)
第一个称为“哑”协议(Github 不再支持),第二个称为“智能”协议。“哑”一种适用于文本消息,“智能”一种适用于二进制字符串块和自定义 HTTP 标头。
为了在 Git 存储库上进行操作,Git 客户端必须解析从服务器收到的响应,并使用该信息来创建和提交对其预期操作的正确请求。
浏览器无法在 Git 存储库上操作,因为它不知道协议。通用网络爬虫的工作原理或多或少类似于浏览器。它通常不太关心样式、脚本以及 HTML 的正确性,但对于 HTTP,它与浏览器非常相似。
为了克隆您的存储库,必须对网络爬虫进行专门编程以了解 Git 传输协议。或者(更好)git clone当它发现它认为是 Git 存储库的 URL 时,它可以运行外部命令。在这两种情况下,爬虫程序的编程都必须牢记这一目的:克隆 Git 存储库。
总而言之,网络爬虫(或使用网络浏览器的用户)不可能错误地克隆 Git 存储库。
网络爬虫甚至不需要从 Github 或从为 Git 存储库提供服务的其他 Web 服务器克隆 Git 存储库。它可以通过使用(Github 或其他)Web 服务器提供的链接来获取存储库中包含的所有文件的每个版本。