无API从私有GitLab下载

2 投票
1 回答
2842 浏览
提问于 2025-04-18 16:59

我需要从一个私有的GitLab下载文件。

我之前看到过这个帖子: 从GitLab私有仓库下载

但是我不能使用API,因为我没有下载文件所需的ID。实际上,我需要通过它们的HTTP原始链接来下载文件,比如:

http://gitlab.private.com/group/repo_name/raw/master/diagrams/test.plantuml

由于我开启了身份验证,每次我尝试以编程方式访问某些内容时,都会被重定向到登录页面。我写了一个Python脚本来模拟登录过程,获取authenticity_token和_gitlab_session cookie,但还是不行。

如果我在成功登录后从Chrome浏览器中抓取一个会话cookie,所有操作(从下载文件的角度来看)在Python和curl中都能顺利进行。

所以,任何帮助我获取这个cookie的方法,或者其他不同的解决方案都非常感谢。要使用API,我首先需要在所有仓库中进行字符串匹配,以便找到正确的ID。这是最后的选择。

谢谢 Marco

1 个回答

0

首先,从你的设置页面生成一个个人访问令牌:/profile/personal_access_tokens。确保它具有read_repository的权限。

然后你可以用两种方法之一来使用这个令牌,把PRIVATETOKEN替换成你获得的令牌:

  1. 在你的请求中添加一个Private-Token的头部。例如:

    curl --header "Private-Token: PRIVATETOKEN" http://gitlab.private.com/group/repo_name/raw/master/diagrams/test.plantuml
    
  2. 在你的请求中添加一个private_token的查询字符串。例如:

    curl 'http://gitlab.private.com/group/repo_name/raw/master/diagrams/test.plantuml?private_token=PRIVATETOKEN'
    

撰写回答