Уведомления

Группа в Telegram: @pythonsu

#1 Фев. 5, 2018 10:07:46

artisstm
Зарегистрирован: 2017-12-08
Сообщения: 14
Репутация: +  0  -
Профиль   Отправить e-mail  

Авторизация

Здравствуйте, пытаюсь с помощью python3 авторизоваться на Web интерфейсе IP телефона
Для авторизации достаточно ввести пин-код
Пишу вот так

 import requests
s = requests.Session()
payload = {'password':5676'}
r = requests.post("http://192.168.0.116/home.html", data=payload)
r = s.get('http://192.168.0.116/settings_lan.html')
print(r.text)

Пост запрос из браузера (надеюсь то, что надо)
 Request URL:http://192.168.0.116/login.html
Request Method:POST
Status Code:303 See Other
Remote Address:192.168.0.116:80
Referrer Policy:no-referrer-when-downgrade
Response Headers
view source
Connection:Keep-Alive
Content-Length:686
Content-Type:text/html
Location:http://192.168.0.116/home.html
Server:C530A IP/42.243.00.000.000
Set-Cookie:key=81823548; path=/; expires=Sat, 21-12-2037 00:00:00 GMT
Request Headers
view source
Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
Accept-Encoding:gzip, deflate
Accept-Language:ru-RU,ru;q=0.9,en-US;q=0.8,en;q=0.7
Cache-Control:max-age=0
Connection:keep-alive
Content-Length:25
Content-Type:application/x-www-form-urlencoded
Cookie:_ga=GA1.4.19002057.1516603554; key=55040295
Host:192.168.0.116
Origin:http://192.168.0.116
Referer:http://192.168.0.116/login.html
Upgrade-Insecure-Requests:1
User-Agent:Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36
Form Data
view source
view URL encoded
language:23
password:5676

В общем, как правильно авторизоваться?

Отредактировано artisstm (Фев. 5, 2018 10:08:54)

Офлайн

#2 Фев. 5, 2018 14:53:21

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

Авторизация

Вы POST должны слать на login в ответ сервер шлет 303 с location куда надо перейти (/home), потом уже на него можете перейти через GET



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

#3 Фев. 7, 2018 07:30:09

artisstm
Зарегистрирован: 2017-12-08
Сообщения: 14
Репутация: +  0  -
Профиль   Отправить e-mail  

Авторизация

Попробовал отправлять пост на http://192.168.0.116/login.html
А получать http://192.168.0.116/home.html
В равно получаю страницу авторизации
Мне кажется, что я вообще не то делаю, можешь POST запрос можно как то подробнее сформировать, исходя их тех данных, которые я вижу в браузере получил?

Офлайн

#4 Фев. 7, 2018 07:48:18

artisstm
Зарегистрирован: 2017-12-08
Сообщения: 14
Репутация: +  0  -
Профиль   Отправить e-mail  

Авторизация

Сделал так (на айпи не смотрите, у меня много телефонов):

 import requests
s = requests.Session()
data = {"password":"2423", "language":"23"}
url = "http://192.168.0.157/login.html"
r = s.post(url, data=data)
r = s.get('http://192.168.0.116/settings_lan.html')
print(r.text)
В итоге все равно получаю не ту страницу, которую хочу, но при этом авторизация прошла, т.к. из браузера мне уже выдает, что кто-то другой авторизован

Офлайн

#5 Фев. 7, 2018 18:43:37

papuas
Зарегистрирован: 2015-06-19
Сообщения: 159
Репутация: +  6  -
Профиль   Отправить e-mail  

Авторизация

Вам бы почитать, что происходит во время авторизации между клиентом и сервером.
Модель поведения почти всегда везде разная и чтобы не писать 100500 скриптов для разных сайтов, люди придумали api. Если его нет, советую использовать другой транспорт, если это ip телефон. (telnet,ssh,snmp,scp,etc…)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version