Комментарии 20
Да, стоило упомянуть, что речь идет о штатной прошивке. OpenWRT решает проблему с командной строкой. Но не на все устройства есть OpenWRT. В данном случае речь идет об общем подходе к управлению через WEB.
В последних версиях устройств (v12 или v13), на заводской прошивке, есть какой-то отклик на SSH порту. Был весьма удивлён этим событием, однако, устройство было у меня не долго (просили просто настроить WiFI). Было-бы интересно узнать, появился там SSH нормальный или нет.
Поставить OpenWRT и не парится? Или это для слабаков?
Так было бы проще, но не интересно
Вы правы относительно наличия OpenWRT, но, на самом деле, TP-Link — это лишь частный пример. Быть может, у вашего холодильника, чайника или пылесоса есть WEB-интерфейс, а значит им можно попробовать управлять с помощью Python requests и автоматизировать, автоматизировать и еще раз автоматизировать…
а где живет ваш бот? сервер дома?
Да, он живет на одноплатной машине Odroid C2 с ОС Ubuntu и включен в LAN маршрутизатора, а управляю я им с помощью телеграма.
Кстати, приведенные в статье Python запросы будут работать и через интернет в случае наличия открытого доступа к маршрутизатору по белому IP. С точки зрения HTTP запросов неважно работать через WAN или через LAN.
Кстати, приведенные в статье Python запросы будут работать и через интернет в случае наличия открытого доступа к маршрутизатору по белому IP. С точки зрения HTTP запросов неважно работать через WAN или через LAN.
ну это тогда ничем не лучше открытого доступа к роутеру. телеграмм тем и лучше, что может работать в режиме поллинга и не светиться наружу
Спасибо, возьму на вооружение. Пользуюсь автоматической перезагрузкой роутера еженощно в 1:05 — чтобы срабатывал хайвей на билайне, только bash скриптами, с отчетами в телеграмм. Вопрос на вскидку а если вместо 'Cookie': auth_token} использовать обертку with requests.Session() as s: s.get(url) — тут же идет сохранение сессии или я ошибаюсь?
Как-то сложновато использовать wireshark, просто чтобы посмотреть запросы браузера. Можно было в самом браузере открыть devtools и скопировать нужные данные.
Наверное, я слишком привязан к Wireshark еще со времен Ethereal…
Да, конечно, вы правы. Devtools браузера проще. Спасибо!
Да, конечно, вы правы. Devtools браузера проще. Спасибо!
Не в данном случае, но в других — приходится пользоватся сниферами т.к. хромниумы не видят(иногда) form data в POST запросах и даже мозилла, не всегда показывает, на сколько я понял это из-за джава скриптов, которые все это делают на страничке за тебя (в смысле отправляют запрос).
Занятная статья.
Я сам делал очень похожее несколько лет назад. Устройством, правда, был не роутер, а две Nanostation Loco M5, собранные в мост. Мне нужно было выводить уровень сигнала и скорость линка в дашборд, и я сделал примерно так же — питоноскрипты, ползающие по вебу.
Пара замечаний(было больше, но про девтулс уже написали 8):
- Код. Он ужасен. Функции, возвращающие либо строку с ошибкой, либо id,
break
послеreturn
и прочее. Однако, добавлю конструктива — если вам не пофиг, то по качеству кода я могу накидать замечаний в гитхаб или какой-то другой сервис, если код вы выложите туда. - Вы ошибаетесь, считая, что не храните пароль в открытом виде. То есть, сам-то пароль, конечно, да. Но у вас в открытом виде лежит строка, которая позволяет авторизоваться на веб-интерфейсе роутера. Это не то, чтобы плохо — вам в любом случае пришлось бы либо хранить что-то, либо требовать ввода от пользователя, я лишь хочу указать на ошибку в тексте.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Как программно управлять WiFi маршрутизатором TP-Link с помощью Python requests