Eu usei o python para escrever um código que faz login, esse código faz o trabalho na minha universidade,
# The selenium.webdriver module provides all the WebDriver implementations. get it online, [I got the module from here][1]
from selenium import webdriver
# The Keys class provide keys in the keyboard like RETURN, F1, ALT etc.
from selenium.webdriver.common.keys import Keys
# here, a instance of Firefox WebDriver is created. You can do it for various browsers
driver = webdriver.Firefox()
# The driver.get method will navigate to a page given by the URL.
#WebDriver will wait until the page has fully loaded (that is, the “onload” event has fired)
# before returning control to your test or script.
# It’s worth noting that if your page uses a lot of AJAX on load then WebDriver may not know when it has completely loaded. so please be patient
driver.get("https://192.168.20.1/auth1.html")
# The next line is an assertion to confirm that title has “Sonic” word in it: (not really neccesary :p)
# This is used to confirm that the webpage is the right one
assert "Sonic" in driver.title
# we use the 'name' tag to get a handle to the username and password this finds the appropriate box.
user = driver.find_element_by_name("userName")
passwd = driver.find_element_by_name("pwd")
# use the 'send_keys' function to set the "box's" values to your password and username
user.send_keys("<your username>")
passwd.send_keys("<your password>")
# we sumbit the form
passwd.send_keys(Keys.RETURN)
# we close the window after logging in, the popup which takes care of the 3 hour windows remains open.
driver.close()
Agora, há muitos pontos a serem abordados,
-
como você pode ver, usei o URL para o qual eu navego para fazer login como
"https://192.168.20.1/auth1.html" not "https://192.168.20.1/auth.html"
isso é como na minha faculdade eles têm configurar um quadro, basicamente, eu não poderia usar o 'find_element_by_name' ou qualquer dessas funções nesse site. Isso pode variar de instituto para instituto, confira lendo o código-fonte do seu instituto cuidadosamente -
também usei 'userName' e 'pwd' como o nome da caixa do formulário. Isso não tem para ser verdade para você, verifique isso também.
Agora, esse código só fará o login se você o executar. Você pode colocá-lo em um loop e colocar um atraso de 2,5 horas. Estou planejando mantê-lo funcionando em segundo plano e se o computador se conectar a um wifi, o script será notificado (eu poderia usar alguma ajuda aqui) e o código pode começar com uma solicitação para a "página de autenticação" se houver um erro 404 e, em seguida, violar o código. (solicita biblioteca pode ajudar com essas coisas)
#checks for 404 error
check=requests.head(url)
if check.status_code==404:
break
Python é uma linguagem incrível, você pode trabalhar mais nisso, mas eu não acho que será difícil portá-lo para ruby, já que o selênio está disponível em ruby também.
por favor, não hesite em contactar-me, como eu estou trabalhando em portar este código e implementar mais recursos para o Android, etc.