Как ввести информацию для входа на сайт из командной строки Linux


25

Мое подключение к интернету обеспечивается университетом. Он защищен комбинацией имени пользователя и пароля. Это означает, что когда я запускаю свой компьютер, мне нужно запустить веб-браузер и открыть произвольный веб-сайт. Затем я перенаправлен на страницу, которая (среди прочего) содержит две формы. В них я должен ввести имя пользователя и пароль. Мне удалось сделать это с Firefox (который может сохранить пароль), а также с помощью ссылок (который загружается быстрее и из командной строки).

Есть ли способ автоматизировать процесс входа в систему с помощью bash-скрипта? Это позволило бы выполнить вход при загрузке, чтобы он уже был там, когда я запускаю X-сервер.


1
Вы могли бы быть в состоянии вызвать сценарий входа в систему из формы в ACTIONатрибуте с curlнепосредственно.
Тердон

Многие университеты также предлагают сеть, в которой используется «Аутентификация предприятия» (т. Е. Используется имя пользователя / пароль для самого сетевого подключения вместо ожидания доступа к странице с запросом учетных данных). Возможность хранить такие сетевые учетные данные встроена в ОС. Это также намного более безопасно, потому что это означает, что другим будет сложнее отслеживать ваше соединение. Если ваш университет поддерживает это, вы должны перейти на это.
Моше Кац

Также нам поможет, если вы можете привести (анонимный) пример URL-адреса, на который вы перенаправляетесь при входе в систему. (Анонимный здесь означает, что вы должны удалить свой MAC-адрес и / или IP-адрес из URL-адреса, если они есть, но оставьте все остальное, включая название университета.)
Моше Кац

Ответы:


16

Вы можете попробовать это с помощью curl , вы можете просто использовать curl, как это, для входа на веб-страницу:

curl --user name:password http://somesite.com -v 

Вы можете передать данные на сайт, как это из ответа Stackoverflow

    curl -b cookies.txt -c cookies.txt --data "Username=xx&Password=xx&Login=Login" [urlthatyour form submits]

вам нужны куки, если вы хотите сделать еще один запрос скручивания после входа в систему. Идентификатор сеанса в куки поможет авторизовать следующий запрос скручивания.

Если вы не хотите куки, вы можете использовать

curl --data "Username=xx&Password=xx&Login=Login" [url that your form submits]

Вы можете дополнительно обратиться сюда для специальных команд


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

@Tim добавил, как передавать данные, обычно вам нужно выяснить, к какой странице запрашивается страница (или значение действия страницы).
BlueBerry - Vignesh4303

Это звучало так, как будто это могло сработать, но, к сожалению, это не сработало. При взгляде на вывод curl видно, что Usernameполе правильно заполнено правильным значением, а Passwordполе нет (это может быть правильным в качестве меры безопасности). Я не уверен, была ли кнопка отправки на самом деле сработала. Имеет ли значение какое значение передается Login?
Тим

5

Наконец-то я нашел способ автоматического входа с помощью elinks. Это работает, и это даже легко настроить!

Необходимо установить два варианта. Это можно сделать, добавив следующие строки ~/.elinks/elinks.conf(если файл не существует, создайте его) или изменив значения в соответствующих позициях в диалоговом окне параметров elinks:

    # Save username and password for later use
set document.browse.forms.show_formhist = 1
    # Do not ask for confirmation before a form is submitted
set document.browse.forms.confirm_submit = 0

Шаги для сценариев автологина тогда:

  • Установите эти два варианта
  • Откройте страницу входа elinks, заполните формы и отправьте их.
  • Выберите, чтобы запомнить имя и пароль для дальнейшего использования.
  • Закрыть elinks
  • Бег elinks -auto-submit http://somesite.com

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

Я на самом деле использую timeout 1m elinks -auto-submit http://somesite.com &, чтобы у меня не было процесса elinks на холостом ходу в фоновом режиме.


3

Простой способ написать это с помощью Selenium .

Вы можете использовать их плагин Firefox «Test Recorder», чтобы записать тест своего входа в сеть, а затем воспроизвести тест.


0

Да, есть очень простой способ войти в интернет вашего университета. Вы можете использовать веб-браузер Lynx , который представляет собой текстовый браузер, разработанный для использования на терминале. Итак, вот путь:

$ echo "username=myname&password=mypassword" | lynx "url of the form" -post_data

где ' username ' - это имя поля, соответствующего имени пользователя в форме, а ' password ' - это имя поля, соответствующего полю пароля, а ' myname ' и ' mypassword ' - соответствующие значения, которые необходимо заполнить форма. Вы можете найти имя поля, используя «Проверка элемента» в любом браузере. Я попытался с curl, как указано в ответе BlueBerry - Vignesh4303, но не сработало.


0

Вы можете получить дополнение для вашего браузера, которое будет автоматически входить на веб-сайты с сохраненными паролями. Я использовал AutoAuth с Firefox. Затем вы входите один раз и сохраняете свои учетные данные, затем пишете скрипт, который просто

#!/bin/bash
firefox https://website address goes here

После выполнения, он пойдет и автоматический вход. Я пробовал с несколькими сайтами, и это работало хорошо.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.