从没有API的私人GitLab下载

时间:2014-08-12 11:47:54

标签: python session authentication cookies gitlab

我需要从私人GitLab下载文件。

我已经看过这篇文章了:     Download from a GitLab private repository

但是我无法使用API​​,因为我没有下载文件所需的ID。 事实上,我需要通过他们的HTTP原始网址下载它们,例如:

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

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

如果我在成功登录后从我的Chrome浏览器中获取会话cookie,那么一切都像Python上的魅力(从文件下载角度来看),甚至卷曲。

所以,任何帮助都是为了获得这个cookie,这是一种不同的方法。要使用API​​,我首先需要在执行字符串匹配的所有repos之间努力,以便找到正确的ID。这是最后一个选择。

韩国社交协会 马可

1 个答案:

答案 0 :(得分: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'