Невозможно пройти аутентификацию в GitLab с помощью имени пользователя и пароля с помощью запросов Python

Я использую следующий код python, предоставленный в качестве альтернативы уже не существующему использованию имени пользователя и пароля в библиотеке python-gitlab, которая действует как оболочка над GitLab REST API для входа в GitLab:

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 = session.get(SIGN_IN_URL).content
# Next line in the code causes the error described below!
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]': 'login_or_email',
        'user[password]': 'SECRET',
        'authenticity_token': token}
r = session.post(LOGIN_URL, data=data)
if r.status_code != 200:
    print('Failed to log in')
    sys.exit(1)

gl = gitlab.Gitlab(URL, api_version=4, session=session)

В строке 16 я получаю следующий код ошибки:

Traceback (most recent call last):
  File "C:/Users/saurav/AppData/Local/Programs/Python/Python38-32/gitlab_auth_code.py", line 16, in <module>
    for l in sign_in_page.split('\n'):
TypeError: a bytes-like object is required, not 'str'

Кажется, есть некоторая проблема с использованием '\n'символ для следующей строки. Как мне исправить эту ошибку? Этот код фактически представлен в официальной документации python-gitlab как обходной путь с использованием запросов python, и я считаю, что он должен работать: https://gist.github.com/gpocentek/bd4c3fbf8a6ce226ebddc4aad6b46c0a

Любая помощь могла бы быть полезна!

0 ответов

Другие вопросы по тегам