Я часто подключаюсь к сети, которая открыта, но требует использования аутентификации по ключу перед использованием на веб-странице. Можно ли автоматизировать аутентификацию с помощью скрипта?
Какая забавная проблема.
Хотя я уверен, что ответ Ондрюка, вероятно, сработает, я немного против того, чтобы что-то, зависящее от настольного программного обеспечения, управляло доступностью сети.
Я бы предложил вам поиграть с библиотекой Python's Mechanize . Вы можете установить его из репозиториев через:
sudo apt-get install python-mechanize
Затем получите сценарии. Вы должны начать с выяснения структуры страницы, которую вы отправляете. Вам необходимо найти, куда вы отправляете форму и какие поля необходимо заполнить, чтобы отправить. Когда вы это знаете, это действительно так просто, как просто написать небольшой анализатор и отправитель форм. Mechanize делает всю тяжелую работу. Вот быстрый пример, адаптированный из их документов на формах :
import sys
from mechanize import ParseResponse, urlopen, urljoin
# replace this with the actual login page
# you'll need to do some research
uri = "http://theloginpage.com/"
response = urlopen(uri)
forms = ParseResponse(response, backwards_compat=False)
form = forms[0]
print form
form["username"] = "your username"
form["username"] = "password"
# form.click() returns a mechanize.Request object
# (see HTMLForm.click.__doc__ if you want to use only the forms support, and
# not the rest of mechanize)
print urlopen(form.click()).read()
В зависимости от того, как работает их система, этого может быть достаточно. Возможно, вам придется связать некоторые файлы cookie, чтобы сохранить сеанс, пока они включают соединение, но технически говоря, нет никаких аргументов, почему они должны этого требовать.
Тогда вам просто нужно привязать это к сетевой системе, чтобы она вызывалась. Загрузка из /etc/network/if-up.d
должна работать, но я предлагаю вам поставить код перед префиксом, чтобы убедиться, что вы действительно находитесь в той точке доступа, для которой работает ваш логин.
В зависимости от типа имеющегося портала, вы можете пройти проверку подлинности с помощью запроса POST, отправленного с помощью Wget (используйте Tamper Data , чтобы узнать, какие данные необходимо отправить) или с помощью [ 114] Сценарий iMacros в Firefox.
Вы можете добавить скрипт в /etc/network/if-up.d
, чтобы он запускался каждый раз, когда устанавливается сетевое соединение. Прежде чем что-либо делать, попросите сценарий проверить, в какой сети вы работаете iwconfig
, и обязательно запустите команды, используя sudo -u yourusername
, чтобы не запускать веб-браузер от имени пользователя root.