1

Наш университет использует Sonicwall для блокировки определенных сайтов, и каждый студент может войти в интернет через него.

Трудно загружать большие файлы, такие как дистрибутив Linux, за один раз, и я не хочу спать всю ночь, загружая файл. Это какой-то способ, которым я мог бы автоматизировать этот процесс входа в систему. Кроме того, мы отключаемся через каждые три часа и должны войти снова.

В более общем плане, какой язык сценариев или технику я должен изучить, чтобы достичь этого. Я предпочитаю рубин другим, поэтому, если это возможно в рубине, то это дополнительный бонус.

2 ответа2

1

Я использовал Python для написания кода, который входит в систему, этот код делает работу в моем университете,

# 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()

Теперь есть много моментов для решения,

  1. как вы могли заметить, я использовал URL, по которому я перехожу, чтобы войти в систему как "https://192.168.20.1/auth1.html" not "https://192.168.20.1/auth.html" как в В моем колледже они установили фрейм, в основном я не мог использовать 'find_element_by_name' или любые другие функции на этом сайте. Это может варьироваться в зависимости от института до института, проверить его, читая исходный код вашего института в тщательно

  2. также я использовал 'userName' и 'pwd' в качестве имени поля формы. Это не должно быть правдой для вас, проверьте это тоже.

Теперь этот код будет входить в систему только в том случае, если вы выполните его. Вы можете поместить это в петлю и поставить задержку в 2,5 часа. Я планирую сохранить его в фоновом режиме, и если компьютер подключится к Wi-Fi, скрипт будет уведомлен (я мог бы использовать некоторую помощь здесь), и код может начаться с запроса на "страницу аутентификации", если есть ошибка 404, а затем нарушить другой мудрый запуск кода. (библиотека запросов может помочь с этими вещами)

            #checks for 404 error
            check=requests.head(url)
            if check.status_code==404:
                    break

Python - отличный язык, вы можете работать над ним дальше, но я не думаю, что будет трудно перенести его на ruby, поскольку селен также доступен в ruby.

пожалуйста, не стесняйтесь обращаться ко мне, так как я работаю над переносом этого кода и реализации дополнительных функций для Android и т. д.

0

Я знаю, что немного опоздал, но для этого я сделал расширение Chrome. Если кому-то это нужно ...

https://chrome.google.com/webstore/detail/sonicwall-auto-logon/bgcnljfljjkbbaijbanajmpbkhjcmkkh

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .