Авторизация скриптом

Материал из campus.mephi.ru

(Различия между версиями)
Перейти к: навигация, поиск
м (Исправлены опечатки и экранирование кавычек)
(Исправления в скрипте)
 
(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
-
&#9;login=$($wget_savecookie --post-data=\"$post_data\" $host | grep -oE [0-9]{6})
+
&#9;evaluated=$(eval $cmd)
 +
&#9;login=$(echo $evaluated | grep -oE [0-9]{6})
&#9;$LOGGER Authorized with login $login
&#9;$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.