0

我尝试使用以下代码:

import re
import sys
import requests
import gitlab


URL = 'https://gitlab.com'
SIGN_IN_URL = 'https://gitlab.com/users/sign_in'
LOGIN_URL = 'https://gitlab.com/users/sign_in'

session = requests.Session()

sign_in_page = str(session.get(SIGN_IN_URL).content)
for l in sign_in_page.split('\n'):
    m = re.search('name="authenticity_token" value="([^"]+)"', l)
    if m:
        break

token = None
if m:
    token = m.group(1)

if not token:
    print('Unable to find the authenticity token')
    sys.exit(1)

data = {'user[login]': 'username/email',
        'user[password]': 'password',
        'authenticity_token': token}
r = session.post(LOGIN_URL, data=data)
if r.status_code != 200:
    print('Failed to log in')
    sys.exit(1)
print(token)
gl = gitlab.Gitlab(URL, api_version=4, session=session)
print(gl)

projects = gl.projects.list()
print(projects)
for project in projects:
    print(project.name)
    #print(project)
    if project.name=="test":
        project_id=project.id
        print(project_id)

此代码是提供使用电子邮件/用户名和密码进行身份验证的替代方法,但即使这似乎不再起作用,在我收到的项目列表中gl.projects.list()似乎以某种方式提供了对现有项目的最新提交列表或在 GitLab 的公共领域创建的最新项目,Gitlab.com

输出:

LONG_TOKEN(not stated for security reasons obviously)
<gitlab.Gitlab object at 0x040CEFB8>
[<Project id:17536916>, <Project id:17536906>, <Project id:17536895>, <Project id:17536893>, <Project id:17536892>, <Project id:17536888>, <Project id:17536868>, <Project id:17536849>, <Project id:17536831>, <Project id:17536816>, <Project id:17536805>, <Project id:17536798>, <Project id:17536783>, <Project id:17536782>, <Project id:17536774>, <Project id:17536771>, <Project id:17536767>, <Project id:17536741>, <Project id:17536735>, <Project id:17536734>]
skip-ci-unmergeable
Gleichstromtechnik-Ausarbeitung
rdma-core
csvconv
MultiCloud Crypto 
g-force-printer-service
Thai_Project
UE4_SwitchFliashLight
Aplikasi TimeTable
wiki-git
Desarmar Cubo
packages_apps_GoogleCameraPort
Lower Backpain Jaramillo
sagrera_bot
Covid-19-curves-graphic-social
school_task
ya
Biobot
wiki-git
11

尽管您无法访问因此返回的存储库。

即使data变量中没有提供适当的身份验证详细信息,此结果也有效,这很奇怪。

因此,我想知道我是否仍然可以通过以某种方式修改上述代码来使用用户名和密码进行身份验证,并且我还想了解为什么我的代码会提供上述这种特殊结果。

以上代码参考:https ://gist.github.com/gpocentek/bd4c3fbf8a6ce226ebddc4aad6b46c0a

任何有关此事的帮助将不胜感激!谢谢!

4

0 回答 0