使用Curl从GitHub下载Zip文件失败的解决方法咨询
解决Curl下载GitHub ZIP文件仅得到小文件的问题
这种情况我太熟了——你下载到的根本不是目标ZIP包,而是GitHub跳转页面的HTML代码!原因很简单:浏览器会自动处理重定向,但curl默认不会,而GitHub的“下载ZIP”链接通常会先跳转到实际的文件存储地址。
下面是具体的解决步骤:
第一步:确认你用的是正确的ZIP直链
别直接复制浏览器地址栏的仓库网页链接,正确的做法是:
- 打开GitHub仓库主页,点击顶部的「Code」按钮
- 在弹出的菜单里,复制「Download ZIP」对应的链接(一般格式是
https://github.com/<用户名>/<仓库名>/archive/refs/heads/<分支名>.zip,比如main分支就是main.zip)
第二步:用带重定向参数的Curl命令下载
给curl加上-L参数,让它自动跟随GitHub的重定向请求,再用-O参数保留原文件名:
curl -L -O "你复制的正确ZIP直链"
举个实际例子,如果是octocat/Hello-World仓库的main分支ZIP包,命令就是:
curl -L -O "https://github.com/octocat/Hello-World/archive/refs/heads/main.zip"
额外情况:私有仓库的下载
如果是私有仓库,你需要用个人访问令牌(PAT)做认证,命令改成这样:
curl -L -u <你的GitHub用户名>:<你的个人访问令牌> -O "私有仓库的ZIP直链"
验证重定向(可选)
如果你不确定链接是否有重定向,可以先用-I参数查看响应头:
curl -I "你的ZIP链接"
如果输出里看到HTTP/2 302这类状态码,就说明必须加-L参数才能拿到真实文件。
要是担心网络不稳定,还可以加上--retry 3参数让curl自动重试3次:
curl -L --retry 3 -O "你的ZIP直链"
内容的提问来源于stack exchange,提问作者user8864088




