Авторизация скриптом
Материал из campus.mephi.ru
(Различия между версиями)
Xakep666 (Обсуждение | вклад) (Новая страница: «'''Метод работает в любой *nix системе, при условии наличия wget с поддержкой ssl. Метод крайне ре...») |
Xakep666 (Обсуждение | вклад) (Исправления в скрипте) |
||
(2 промежуточные версии не показаны) | |||
Строка 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> | ||
Собственно скрипт: | Собственно скрипт: | ||
Строка 13: | Строка 22: | ||
#переменные для работы скрипта | #переменные для работы скрипта | ||
host="https://wifi.mephi.ru" | host="https://wifi.mephi.ru" | ||
- | wget_savecookie="wget -O - -q --no- | + | wget_savecookie="wget -O - -q --no-check-certificate --save-cookies=\"$COOKIE\"" |
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& | + | 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 | ||
Строка 27: | Строка 37: | ||
</pre> | </pre> | ||
- | Его можно выполнять из cron или настроить запуск при подключении к wi-fi | + | Его можно выполнять из cron или настроить запуск при подключении к wi-fi. |
Текущая версия на 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.