Вы не делаете тот же запрос.Переключатель -d
для curl
отправляет данные POST , а не заголовок авторизации.Из документации curl
:
-d, --data <data>
(HTTP) Отправляет указанные данные в POST-запросе на HTTP-сервер так же, как браузер, когдапользователь заполнил форму HTML и нажимает кнопку отправки.Это приведет к тому, что curl передаст данные на сервер с использованием application-type / x-www-form-urlencoded.
Вы используете запрос GET, а не POST.Отправьте имя пользователя и пароль в аргументе data
, здесь можно использовать словарь, чтобы иметь requests
дескриптор, кодирующий его в отформатированное тело запроса application/x-www-form-urlencoded
:
session = requests.Session()
session.verify = False
login_info = {'username': 'username', 'password': 'password'}
r = session.post('https://<url-here>:4343/v1/api/login', data=login_info)
В общем, документация API, котораяиспользует curl
примеры командной строки, рассчитанные на минимальное знакомство с этим инструментом, всегда стоит прочитать curl
manpage , чтобы понять, что делают переключатели, а также иметь минимальное понимание заголовков HTTPи лайки.
Если сомневаетесь, используйте curl
и requests
, чтобы отправить запрос на тестовый сайт httpbin.org и сравнить результаты.Здесь использование конечной точки /anything
с curl
дает:
$ curl --insecure -c "aruba-cookie-jar" -d "username=username&password=password" https://httpbin.org/anything
{
"args": {},
"data": "",
"files": {},
"form": {
"password": "password",
"username": "username"
},
"headers": {
"Accept": "*/*",
"Content-Length": "35",
"Content-Type": "application/x-www-form-urlencoded",
"Host": "httpbin.org",
"User-Agent": "curl/7.54.0"
},
"json": null,
"method": "POST",
"origin": "...",
"url": "https://httpbin.org/anything"
}
, в то время как ваш request
код выводит:
>>> import requests
>>> session.verify = False
>>> r = session.get('https://httpbin.org/anything', auth=('username', 'password'))
/.../lib/python3.8/site-packages/urllib3/connectionpool.py:842: InsecureRequestWarning: Unverified HTTPS request is being made. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.io/en/latest/advanced-usage.html#ssl-warnings
warnings.warn((
>>> print(r.text)
{
"args": {},
"data": "",
"files": {},
"form": {},
"headers": {
"Accept": "*/*",
"Accept-Encoding": "gzip, deflate",
"Authorization": "Basic dXNlcm5hbWU6cGFzc3dvcmQ=",
"Host": "httpbin.org",
"User-Agent": "python-requests/2.21.0"
},
"json": null,
"method": "GET",
"origin": "...",
"url": "https://httpbin.org/anything"
}
, который, как мы надеемся, составитПонятнее, в чем здесь различия.