Как ввести информацию для входа на сайт из командной строки 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.