Привет, я живу в месте с бесплатным Wi-Fi. Хочу, чтобы мой Linux автоматически входил в систему. Ссылка для активации бесплатного Wi-Fi: http://123.123.123.123/login?dst=&username=blablabla. Wget не сработал, так как, как я понимаю, пароль преобразуется в MD5 перед отправкой. Так что, полагаю, мне нужно использовать какой-то инструмент, который может работать с md5.js. Кто-нибудь делал скрипт на bash, который решает эту задачу?
@bastibasti, у меня такая же проблема, как у тебя, но у меня не хватает навыков программирования, хотя я понимаю HTML. Не мог бы ты подробно объяснить, как ты решил эту проблему?
Я нашел решение… Selenium + python… Вот скрипт: #!/usr/bin/python import time from selenium import webdriver from selenium.webdriver.common.keys import Keys
browser = webdriver.Firefox() browser.get('YOURHOMEPAGELOGIN') # Здесь укажите свой логин страницы
elem = browser.find_elements_by_name('username') elem[1].send_keys('XXXXXX') # Здесь укажите своё имя пользователя elem = browser.find_elements_by_name('password') elem[1].send_keys('XXXXXX' + Keys.RETURN) # Здесь укажите свой пароль
browser.quit() Это работает для меня в терминале Linux с Python и Selenium. Вот шаги для установки Selenium для Python: https://pypi.python.org/pypi/selenium
Я использую такой скрипт на своём роутере DD-WRT, чтобы подключаться к местной бесплатной Wi-Fi точке доступа MIKROTIK. Скрипт также работает на любых дистрибутивах Linux! Просто переименуйте файл *.startup в *.sh. Вам нужно настроить скрипт под вашу Wi-Fi точку доступа! Для получения дополнительной информации можете связаться со мной по адресу seba.bandur(at)gmail.com. Скрипт и информация о настройке скоро будут обновлены на GitHub. Проект на GitHub: https://github.com/sbandur84/Mikrotik-FreeWiFi-AutoConnect-DDWRT-Script Основной скрипт: https://github.com/sbandur84/Mikrotik-FreeWiFi-AutoConnect-DDWRT-Script/blob/master/FreeWiFi.startup Лог-сервер показывает простую информацию о статусе подключения на порту 88 "localhost:88": https://github.com/sbandur84/Mikrotik-FreeWiFi-AutoConnect-DDWRT-Script/blob/master/FreeWiFi_LOG.startup ====================================================================================== СКРИПТ #!/bin/sh LOGIN_ROUTER="http://starse.wifipoint.net/login?username=T-C8%3AB3%3A73%3A3B%3A45%3AD3" LOGOUT="http://starse.wifipoint.net/logout" LOGIN="http://starse.wifipoint.net/login" USER=$ROUTER_USER STATUS_URL="http://starse.wifipoint.net/status" LOGIN_URL=$LOGIN_ROUTER GET_TIME_PAUSE=0 MAIN_SLEEP=60 BOOT_SLEEP=30 LOGOUT_WHEN_LEFT_S=$(($MAIN_SLEEP+5)) AQUIRE_TIME_RETRY=10 LOG_FILE="/tmp/FreeWiFi_LOG.log"
# перед первым входом поспите 60 секунд echo "$(date), BOOT OK. Ожидание $BOOT_SLEEP секунд." >> $LOG_FILE sleep $BOOT_SLEEP
LOGIN_NR=1 RUN=1
# РАСКОММЕНТИРУЙТЕ ДЛЯ ОТЛАДКИ #set -x
while [ $RUN -eq 1 ] do # ВХОД CONN_STATUS=0 R=1 echo -n "$(date), Подключение ... " >> $LOG_FILE while [ $CONN_STATUS -eq 0 ] do echo -n "$R " >> $LOG_FILE CONN_STATUS=$(wget -T 2 -q -O - "$@" "$LOGIN_URL" | grep -c "Вы вошли") if [ $CONN_STATUS -eq 0 ] then sleep 1 fi R=$((R+1)) done echo "ОК: $(date +%H:%M:%S)" >> $LOG_FILE # ВРЕМЯ ОСТАВШЕЕСЯ
# ОЖИДАНИЕ ДЛЯ NTP СЕРВЕРА TIME_NOW=$(date +%s) if [ $TIME_NOW -lt 300 ] then echo -n "$(date), NTP Время ... " >> $LOG_FILE NTP=1 while true do echo -n "$NTP " >> $LOG_FILE SEC=$(date +%s) if [ $SEC -gt 300 ] then echo "ОК: $(date +%H:%M:%S)" >> $LOG_FILE break fi NTP=$((NTP+1)) sleep 1 done fi WHOLE_START=$(date +%s) echo -n "$(date), Время входа ... " >> $LOG_FILE I=1 T=0 TIME_OK=0 while [ $TIME_OK -eq 0 ] do echo -n "$I " >> $LOG_FILE STATUS_PAGE=$(wget -T 2 -q -O - "$@" "$STATUS_URL") STA=$? # sleep $GET_TIME_PAUSE
if [ "$STATUS_PAGE" = "" ] then echo -n "PAGE_ERR " >> $LOG_FILE sleep 1 I=$((I+1)) continue fi
if [ "$MINUTES" = "" ] then echo -n "TIME_ERR " >> $LOG_FILE sleep 1 I=$((I+1)) continue fi
T=$MINUTES
if [ $T -gt 0 ] then TIME_OK=1 echo "ОК: $MINUTES минут осталось." >> $LOG_FILE I=$((I+1)) break fi if [ $I -gt $AQUIRE_TIME_RETRY ] then echo "НЕУДАЧА. Перезапуск скрипта ..." >> $LOG_FILE TIME_OK=1 sleep 1 continue 1 fi I=$((I+1)) done echo "1...5....10...15...20...25...30...35...40...45...50...55...60" >> $LOG_FILE # ОЖИДАНИЕ # РАССЧИТЫВАЕМ ВРЕМЯ S=$(($T*60)) NOW=$(date +%s) ELPASSED=$(($NOW-$WHOLE_START)) LEFT=$(($S-$ELPASSED)) while [ $LEFT -gt $LOGOUT_WHEN_LEFT_S ] do
# проверка интернет-соединения - пинг Google DNS P=$(ping -c 1 -w 2 8.8.4.4 &> /dev/null) PING_OK=$? # УСТАНАВЛИВАЕМ PING ms В 0 В СЛУЧАЕ НЕУДАЧИ if [ $PING_OK -eq 1 ] then