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

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

Перейти к: навигация, поиск

Метод работает в любой *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.