Найти - Пользователи
Полная версия: Авторизация
Начало » Python для новичков » Авторизация
1
artisstm
Здравствуйте, пытаюсь с помощью 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

В общем, как правильно авторизоваться?
JOHN_16
Вы POST должны слать на login в ответ сервер шлет 303 с location куда надо перейти (/home), потом уже на него можете перейти через GET
artisstm
Попробовал отправлять пост на http://192.168.0.116/login.html
А получать http://192.168.0.116/home.html
В равно получаю страницу авторизации
Мне кажется, что я вообще не то делаю, можешь POST запрос можно как то подробнее сформировать, исходя их тех данных, которые я вижу в браузере получил?
artisstm
Сделал так (на айпи не смотрите, у меня много телефонов):
 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)
В итоге все равно получаю не ту страницу, которую хочу, но при этом авторизация прошла, т.к. из браузера мне уже выдает, что кто-то другой авторизован

papuas
Вам бы почитать, что происходит во время авторизации между клиентом и сервером.
Модель поведения почти всегда везде разная и чтобы не писать 100500 скриптов для разных сайтов, люди придумали api. Если его нет, советую использовать другой транспорт, если это ip телефон. (telnet,ssh,snmp,scp,etc…)
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB