Как программно войти в сеть типа «точка доступа»?

8

Я часто подключаюсь к сети, которая открыта, но требует использования аутентификации по ключу перед использованием на веб-странице. Можно ли автоматизировать аутентификацию с помощью скрипта?

Вадим Перетокин
источник

Ответы:

5

Какая забавная проблема.

Хотя я уверен, что ответ Ондрюка, вероятно, сработает, я немного против того, чтобы что-то, зависящее от настольного программного обеспечения, управляло доступностью сети.

Я бы посоветовал вам поиграть с библиотекой 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должна работать, но я предлагаю вам поставить код перед префиксом, чтобы убедиться, что вы действительно находитесь в той точке доступа, для которой работает ваш логин.

Оли
источник
Чудесно, я не знал о механизации. Я взволнован, чтобы попробовать это.
rndrük
2

В зависимости от типа имеющегося портала, вы можете пройти аутентификацию с помощью POST-запроса, отправленного с помощью Wget (используйте Tamper Data, чтобы узнать, какие данные необходимо отправить) или с помощью сценария iMacros в Firefox.

Вы можете добавить скрипт, чтобы /etc/network/if-up.dон запускался каждый раз, когда устанавливается сетевое соединение. iwconfigПрежде чем что-то делать, попросите сценарий проверить, в какой сети вы находитесь , и обязательно запустите команды, sudo -u yourusernameчтобы не запускать веб-браузер с правами root.

ændrük
источник