Авторизация скриптом
Материал из campus.mephi.ru
(Различия между версиями)
Xakep666 (Обсуждение | вклад) м (Исправлены опечатки и экранирование кавычек) |
Xakep666 (Обсуждение | вклад) (Исправления в скрипте) |
||
(1 промежуточная версия не показана) | |||
Строка 1: | Строка 1: | ||
'''Метод работает в любой *nix системе, при условии наличия wget с поддержкой ssl. Метод крайне рекомендуется применять, если вы используете "домашний" (soho) роутер, так как он дает наибольшую скорость доступа в сравнении с vpn (любого типа) и proxy. Такой роутер при возможности рекомендуется прошить под OpenWRT[https://openwrt.org/].''' | '''Метод работает в любой *nix системе, при условии наличия wget с поддержкой ssl. Метод крайне рекомендуется применять, если вы используете "домашний" (soho) роутер, так как он дает наибольшую скорость доступа в сравнении с vpn (любого типа) и proxy. Такой роутер при возможности рекомендуется прошить под OpenWRT[https://openwrt.org/].''' | ||
+ | |||
+ | Скрипт эмулирует отправку логина и пароля в веб-форму, так что можно использовать не только wget. Для авторизации нужно отправить POST-запрос вида: | ||
+ | <pre style="font-size: medium"> | ||
+ | login="вашлогин"&password="вашпароль"&cmd=login | ||
+ | </pre> | ||
+ | Для деавторизации: | ||
+ | <pre style="font-size: medium"> | ||
+ | cmd=logout | ||
+ | </pre> | ||
Собственно скрипт: | Собственно скрипт: | ||
Строка 16: | Строка 25: | ||
wget_loadcookie="wget -O - -q --no-check-certificate --load-cookies=\"$COOKIE\"" | wget_loadcookie="wget -O - -q --no-check-certificate --load-cookies=\"$COOKIE\"" | ||
post_data="login=$LOGIN&password=$PASSWORD&cmd=login" | post_data="login=$LOGIN&password=$PASSWORD&cmd=login" | ||
- | + | cmd="$wget_savecookie --post-data=\"$post_data\" $host" | |
is_authorized=$($wget_loadcookie $host | grep \"value=\'logout\'\") | is_authorized=$($wget_loadcookie $host | grep \"value=\'logout\'\") | ||
#если не авторизованы, переменная будет пустой | #если не авторизованы, переменная будет пустой | ||
if [ -z "$is_authorized" ]; then | if [ -z "$is_authorized" ]; then | ||
- | 	 | + | 	evaluated=$(eval $cmd) |
+ | 	login=$(echo $evaluated | grep -oE [0-9]{6}) | ||
	$LOGGER Authorized with login $login | 	$LOGGER Authorized with login $login | ||
else | else |
Текущая версия на 00:06, 18 февраля 2016
Метод работает в любой *nix системе, при условии наличия wget с поддержкой ssl. Метод крайне рекомендуется применять, если вы используете "домашний" (soho) роутер, так как он дает наибольшую скорость доступа в сравнении с vpn (любого типа) и proxy. Такой роутер при возможности рекомендуется прошить под OpenWRT[1].
Скрипт эмулирует отправку логина и пароля в веб-форму, так что можно использовать не только wget. Для авторизации нужно отправить POST-запрос вида:
login="вашлогин"&password="вашпароль"&cmd=login
Для деавторизации:
cmd=logout
Собственно скрипт:
#!/bin/sh #Настройки LOGIN="вашлогин" PASSWORD="вашпароль" LOGGER="echo" #для OpenWRT рекомендуется logger COOKIE="/tmp/acookie" #cookie файл #переменные для работы скрипта host="https://wifi.mephi.ru" wget_savecookie="wget -O - -q --no-check-certificate --save-cookies=\"$COOKIE\"" wget_loadcookie="wget -O - -q --no-check-certificate --load-cookies=\"$COOKIE\"" post_data="login=$LOGIN&password=$PASSWORD&cmd=login" cmd="$wget_savecookie --post-data=\"$post_data\" $host" is_authorized=$($wget_loadcookie $host | grep \"value=\'logout\'\") #если не авторизованы, переменная будет пустой if [ -z "$is_authorized" ]; then evaluated=$(eval $cmd) login=$(echo $evaluated | grep -oE [0-9]{6}) $LOGGER Authorized with login $login else $LOGGER Already authorized fi
Его можно выполнять из cron или настроить запуск при подключении к wi-fi.