авторизация через https по средствам логина и пароля (в консоли)

Модератор: Модераторы разделов

Ответить
Аватара пользователя
Stauffenberg
Сообщения: 2042
Статус: ☮ PEACE ☮
ОС: открытая и свободная

авторизация через https по средствам логина и пароля

Сообщение Stauffenberg »

Всем привет.

Такая задача: залогиниться на web-странице через https (из консоли).
Есть логин и пароль, которые я могу ввести через браузер, но понятия не имею как их использовать (через тот же openssl) в консоли.

Язык программирования - bash или C.

Благодарен за любые советы.
Labor omnia vincit

"Debugging is twice as hard as writing the code in the first place.
Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it.” (Brian Kernighan)
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20795
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: авторизация через https по средствам логина и пароля

Сообщение Bizdelnick »

curl в помощь.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
Stauffenberg
Сообщения: 2042
Статус: ☮ PEACE ☮
ОС: открытая и свободная

Re: авторизация через https по средствам логина и пароля

Сообщение Stauffenberg »

Bizdelnick писал(а):
18.11.2015 13:43
curl в помощь.

Спасибо. Это было первое, что я попробовал.

По какой причине с его помощью все равно невозможно залогиниться? Какие-нибудь js или редиректы или еще что-нибудь?
Labor omnia vincit

"Debugging is twice as hard as writing the code in the first place.
Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it.” (Brian Kernighan)
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20795
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: авторизация через https по средствам логина и пароля

Сообщение Bizdelnick »

Ну это уж надо смотреть в отладчике браузера, какие он запросы отправляет, и пытаться воспроизвести всё в точности.
А как проверяете, удалось ли залогиниться?
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
Stauffenberg
Сообщения: 2042
Статус: ☮ PEACE ☮
ОС: открытая и свободная

Re: авторизация через https по средствам логина и пароля

Сообщение Stauffenberg »

Bizdelnick писал(а):
18.11.2015 16:57
А как проверяете, удалось ли залогиниться?

Curl возвращает мне html код. Я вижу, что там тоже самое, что и в браузере, когда не получилось залогиниться.
Labor omnia vincit

"Debugging is twice as hard as writing the code in the first place.
Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it.” (Brian Kernighan)
Спасибо сказали:
Аватара пользователя
serzh-z
Бывший модератор
Сообщения: 8259
Статус: Маньяк
ОС: Arch, Fedora, Ubuntu
Контактная информация:

Re: авторизация через https по средствам логина и пароля

Сообщение serzh-z »

Stauffenberg
Если у сайта нет HTTP-аутентификации, то нужно разбирать код страницы и смотреть на то, какую (и как) она шлёт форму.
Спасибо сказали:
Аватара пользователя
SLEDopit
Модератор
Сообщения: 4823
Статус: фанат консоли (=
ОС: GNU/Debian, RHEL

Re: авторизация через https по средствам логина и пароля

Сообщение SLEDopit »

Stauffenberg писал(а):
18.11.2015 13:39
Язык программирования - bash или C.
А чем обусловлен такой выбор?
Питон нельзя? С ним там всё гораздо удобнее. Особенно, если потом придётся парсить содержимое странички.
UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity. © Dennis Ritchie
The more you believe you don't do mistakes, the more bugs are in your code.
Спасибо сказали:
Аватара пользователя
Stauffenberg
Сообщения: 2042
Статус: ☮ PEACE ☮
ОС: открытая и свободная

Re: авторизация через https по средствам логина и пароля

Сообщение Stauffenberg »

SLEDopit писал(а):
18.11.2015 18:07
Stauffenberg писал(а):
18.11.2015 13:39
Язык программирования - bash или C.
А чем обусловлен такой выбор?
Питон нельзя? С ним там всё гораздо удобнее. Особенно, если потом придётся парсить содержимое странички.

Можно (с этого я начал), но там какая-то морковка в CentOS 6.7:

Код: Выделить всё

$ python
Python 2.6.6 (r266:84292, Jul 23 2015, 15:22:56)
[GCC 4.4.7 20120313 (Red Hat 4.4.7-11)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> from http.client import HTTPSConnection
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named http.client


Интернета нет (pip отпадает). Все, что подходило по запросу python ssl, установил... (http.client вообще-то должен входить в "ядро" python, т.е. ничего для этого доустанавливать не нужно)
Поэтому переметнулся на openssl и curl. Они должны уметь создавать такие соедининия и авторизоваться (логиниться), но и тут засада...
Labor omnia vincit

"Debugging is twice as hard as writing the code in the first place.
Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it.” (Brian Kernighan)
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20795
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: авторизация через https по средствам логина и пароля

Сообщение Bizdelnick »

Stauffenberg писал(а):
18.11.2015 18:15
Поэтому переметнулся на openssl и curl. Они должны уметь создавать такие соедининия и логиниться, но и тут засада...

Да в чём засада-то? Запрос сформировать не можете правильный? Так это от выбора инструмента не зависит, на чём ни пиши — пока не подберёшь всё, что хочет получить сервер, не залогинишься.
И openssl (в смысле — бинарник) тут на фиг не нужен.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
SLEDopit
Модератор
Сообщения: 4823
Статус: фанат консоли (=
ОС: GNU/Debian, RHEL

Re: авторизация через https по средствам логина и пароля

Сообщение SLEDopit »

Stauffenberg писал(а):
18.11.2015 18:15
ImportError: No module named http.client
А python-requests стоит?
Stauffenberg писал(а):
18.11.2015 18:15
http.client вообще-то должен входить в "ядро" python, т.е. ничего для этого доустанавливать не нужно
емнип, в ядро оно входит в третьей ветке. во второй - нет.
UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity. © Dennis Ritchie
The more you believe you don't do mistakes, the more bugs are in your code.
Спасибо сказали:
Аватара пользователя
Stauffenberg
Сообщения: 2042
Статус: ☮ PEACE ☮
ОС: открытая и свободная

Re: авторизация через https по средствам логина и пароля

Сообщение Stauffenberg »

Bizdelnick писал(а):
18.11.2015 18:26
Запрос сформировать не можете правильный?

Похоже на то, хотя... перепробывал уже наверное все перечисленные на stackoverflow :)

Например:
curl --user LOGIN:PASSWORD https://URL
или так:
curl https://USER:PASSWORD@URL

SLEDopit писал(а):
18.11.2015 18:39
Stauffenberg писал(а):
18.11.2015 18:15
ImportError: No module named http.client
А python-requests стоит?

Да, стоит.
Labor omnia vincit

"Debugging is twice as hard as writing the code in the first place.
Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it.” (Brian Kernighan)
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20795
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: авторизация через https по средствам логина и пароля

Сообщение Bizdelnick »

Stauffenberg писал(а):
18.11.2015 18:46
curl --user LOGIN:PASSWORD https://URL
или так:
curl https://USER:PASSWORD@URL

Это для HTTP-аутентификации, которой там, вероятно, нет (да и практически нигде в вебе её сейчас нет). Смотрите, что браузер шлёт. В простейшем случае там одного POST-запроса должно быть достаточно.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
Stauffenberg
Сообщения: 2042
Статус: ☮ PEACE ☮
ОС: открытая и свободная

Re: авторизация через https по средствам логина и пароля

Сообщение Stauffenberg »

Bizdelnick писал(а):
18.11.2015 18:53
Stauffenberg писал(а):
18.11.2015 18:46
curl --user LOGIN:PASSWORD https://URL
или так:
curl https://USER:PASSWORD@URL

Это для HTTP-аутентификации, которой там, вероятно, нет (да и практически нигде в вебе её сейчас нет). Смотрите, что браузер шлёт. В простейшем случае там одного POST-запроса должно быть достаточно.

Просто чтобы быть уверенным, что мы говорим об одном и том же. Вот тут пример:

$

curl --user user:pass https://xyz.com/a #works ok

Labor omnia vincit

"Debugging is twice as hard as writing the code in the first place.
Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it.” (Brian Kernighan)
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20795
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: авторизация через https по средствам логина и пароля

Сообщение Bizdelnick »

Я говорю о том, что во втором ответе:

$

$ curl -c cookie.txt -d "LoginName=someuser" -d "password=somepass" https://oursite/a $ curl -b cookie.txt https://oursite/b

То есть об аутентификации через POST-запрос, которая там скорее всего используется. Проверить это никто кроме Вас не может. Где в Вашем браузере инструменты разработчика, знаете? Как там посмотреть, какие запросы он отправляет, разберётесь?
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
Stauffenberg
Сообщения: 2042
Статус: ☮ PEACE ☮
ОС: открытая и свободная

Re: авторизация через https по средствам логина и пароля

Сообщение Stauffenberg »

Bizdelnick писал(а):
18.11.2015 19:11
Где в Вашем браузере инструменты разработчика, знаете? Как там посмотреть, какие запросы он отправляет, разберётесь?

Похоже ничего друго не остается :rolleyes:
Tcpdump мне тут не поможет.
Labor omnia vincit

"Debugging is twice as hard as writing the code in the first place.
Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it.” (Brian Kernighan)
Спасибо сказали:
Аватара пользователя
SLEDopit
Модератор
Сообщения: 4823
Статус: фанат консоли (=
ОС: GNU/Debian, RHEL

Re: авторизация через https по средствам логина и пароля

Сообщение SLEDopit »

Stauffenberg писал(а):
18.11.2015 18:46
Да, стоит.
Так это.

Код: Выделить всё

from requests import Session
url="https://domain.com/login/"

session = Session()
login_data = {'formPosted':'1', 'login_email':'me@domain.com', 'password':'pw'}  # конкретный список и названия полей можно посмотреть в коде html странички
session.post('https://localhost/login.py', login_data)  # ура, мы залогинены. но опять таки, детали реализации нужно смотреть на месте. может у тебя там и не post вовсе.

# ну а потом
result = session.get('whatever_url_is_needed')
с curl примерно так же, только с контентом работать сложнее. а в питоне, если BeautifulSoup стоит, то там вообще красота.
UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity. © Dennis Ritchie
The more you believe you don't do mistakes, the more bugs are in your code.
Спасибо сказали:
Ответить