Форум сайта python.su
Здравствуйте, пытаюсь с помощью 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)
Офлайн
Вы POST должны слать на login в ответ сервер шлет 303 с location куда надо перейти (/home), потом уже на него можете перейти через GET
Офлайн
Попробовал отправлять пост на http://192.168.0.116/login.html
А получать http://192.168.0.116/home.html
В равно получаю страницу авторизации
Мне кажется, что я вообще не то делаю, можешь POST запрос можно как то подробнее сформировать, исходя их тех данных, которые я вижу в браузере получил?
Офлайн
Сделал так (на айпи не смотрите, у меня много телефонов):
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)
Офлайн
Вам бы почитать, что происходит во время авторизации между клиентом и сервером.
Модель поведения почти всегда везде разная и чтобы не писать 100500 скриптов для разных сайтов, люди придумали api. Если его нет, советую использовать другой транспорт, если это ip телефон. (telnet,ssh,snmp,scp,etc…)
Офлайн