Automatize o login através do Sonicwall

1

Nossa universidade usa o Sonicwall para bloquear determinados sites e cada aluno pode acessar a Internet através dele.

É difícil fazer o download de arquivos grandes como uma distribuição linux iso de uma só vez e não quero ficar acordado a noite toda fazendo o download de um arquivo. É a sua alguma maneira pela qual eu poderia automatizar este processo de registro. Também nos desconectamos a cada três horas e precisamos fazer o login novamente.

Mais geralmente, qual linguagem ou técnica de script devo aprender para conseguir isso. Eu prefiro o rubi sobre os outros, se é possível em rubi, então é um bônus adicional.

    
por nikhil 31.08.2011 / 16:28

2 respostas

1

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,

  1. 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

  2. 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.

    
por 21.07.2014 / 13:32
0

Eu sei que estou um pouco atrasado, mas fiz uma extensão do Chrome para isso. Se alguém precisar ...

link

    
por 25.11.2014 / 22:52