我在GitHub上托管了几个公共存储库,这些存储库偶尔会根据流量图接收克隆。虽然我想相信很多人正在找到我的代码并下载它,但其中一些代码的性质让我怀疑这些克隆是来自于机器人或搜索引擎爬虫/蜘蛛。我自己知道,如果我通过搜索引擎找到一个git存储库,我通常会用浏览器查看代码,并在克隆它之前决定它是否有用。
有没有人知道克隆git存储库是搜索引擎爬虫的标准技术,还是我的代码比我想象的更受欢迎?
发布于 2016-11-12 16:02:49
存储库的Github页面中的"Clone或download“按钮提供了存储库的URL。如果在web浏览器中使用该URL,则可以在浏览器中看到HTML页面。同样的网页也会被网络蜘蛛接收。
但是,如果您向Git客户端提供URL,它就能够对存储库文件进行操作(克隆回购、拉、推)。这是因为Git客户端使用了构建在HTTP之上的两个Git自己的协议之一。
为了使用该协议,Git客户端基于存储库的基本URL构建URL,并在此URL上提交HTTP请求。
例如,如果Git为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第一个被称为“哑”协议(不再被Github支持),第二个称为“智能”协议。“哑”处理文本消息,“智能”处理二进制字符串块和自定义HTTP报头。
为了在Git存储库上操作,Git客户端必须解析从服务器接收到的响应,并使用这些信息来创建和提交正确的操作请求。
浏览器无法在Git存储库上操作,因为它不知道协议。一个通用的网络爬虫或多或少可以像浏览器一样工作.它通常不太关心样式和脚本以及HTML的正确性,但是对于HTTP,它非常类似于浏览器。
为了克隆你的爬虫,网络爬虫必须被专门编程来理解Git传输协议。或者(更好的),当它找到一个它认为是Git存储库的URL时,它可以运行一个外部git clone命令。在这两种情况下,爬虫都必须考虑到这个目的:克隆Git存储库。
总之,web爬虫(或使用web浏览器的用户)不可能错误地克隆Git存储库。
web爬虫甚至不需要从Github或其他为Git存储库提供服务的web服务器中克隆Git存储库。它可以使用web服务器提供的链接来获取存储库中包含的所有文件的每个版本。
https://stackoverflow.com/questions/40562982
复制相似问题