Como inserir informações de login para um site na linha de comando do linux

25

Minha conexão com a internet é fornecida pela universidade. É protegido por uma combinação de nome de usuário / senha. Isso significa que, quando eu inicio o computador, tenho que iniciar um navegador da web e abrir um site arbitrário. Em seguida, sou redirecionado para uma página que (entre outras coisas) contém dois formulários. Nestes eu tenho que inserir nome de usuário e senha. Consegui fazer isso com o Firefox (que pode salvar a senha) e também com links (que carregam mais rapidamente e na linha de comando).

Existe alguma maneira de automatizar o processo de login usando um script bash? Isso permitiria fazer o login durante a inicialização, para que ele já esteja lá quando inicio o servidor X.

Tim
fonte
1
Você pode chamar o script de login diretamente do ACTIONatributo do formulário curl.
terdon
Muitas universidades também oferecem uma rede que usa "Enterprise Authentication" (por exemplo, usando um nome de usuário / senha para a conexão de rede em si, em vez de esperar até você tentar acessar uma página para solicitar credenciais). A capacidade de armazenar essas credenciais de rede é criada no sistema operacional. Também é muito mais seguro, porque significa que é mais difícil para outros bisbilhotar sua conexão. Se a sua universidade apoia isso, você deve mudar para ela.
Moshe Katz
Também nos ajudaria se você pudesse dar um exemplo (anônimo) da URL para a qual você é redirecionado ao fazer login. (Anonimizado aqui significa que você deve remover seu endereço MAC e / ou endereço IP da URL, se houver, mas deixe todo o resto, inclusive o nome da Universidade.)
Moshe Katz

Respostas:

16

Você pode experimentá-lo com curl , pode simplesmente usar o curl como este para acessar a página da web:

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

Você pode passar dados para um site como este na resposta do Stackoverflow

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

você precisará de cookies se desejar fazer outra solicitação de ondulação após o login. o ID da sessão nos cookies ajudará na próxima solicitação de ondulação autorizada.

Se você não quiser cookies, pode usar

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

Você também pode consultar aqui os comandos especiais

BlueBerry - Vignesh4303
fonte
1
Não estou conseguindo tentar isso agora, mas espero que isso funcione apenas quando houver uma caixa de diálogo solicitando a senha ao abrir o site. No meu caso, existem apenas duas formas. Um para o nome e outro para a senha. Vou mudar a questão para tornar isso mais claro.
Tim
A @Tim adicionou como passar dados, normalmente Você precisaria descobrir para qual página a página solicita (ou o valor da ação da página).
precisa saber é o seguinte
Parecia que poderia funcionar, mas infelizmente não funcionou. Ao olhar para a saída de curvatura, sugere que o Usernamecampo esteja corretamente preenchido com o valor correto, mas o Passwordcampo não está (isso pode estar correto como medida de segurança). Não tenho certeza se o botão enviar foi realmente acionado. Importa para qual valor é passado Login?
Tim
5

Finalmente encontrei uma maneira de fazer login automaticamente usando elinks. Funciona e é ainda fácil de configurar!

Duas opções precisam ser definidas. Isso pode ser feito adicionando as seguintes linhas ~/.elinks/elinks.conf(se o arquivo não estiver lá, crie uma) ou alterando os valores nas respectivas posições na caixa de diálogo de opções 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

As etapas para um login automático com script são:

  • Defina essas duas opções
  • Abra a página de login elinks, preencha os formulários e envie-os.
  • Escolha lembrar o nome e a senha para uso posterior.
  • Fechar elinks
  • Corre elinks -auto-submit http://somesite.com

O último comando deve executar o logon automático sem mais interação do usuário.

Na verdade timeout 1m elinks -auto-submit http://somesite.com &, eu uso , para que eu não tenha um processo de elinks ociosos sendo executado em segundo plano o tempo todo.

Tim
fonte
3

Uma maneira simples de escrever isso é com o Selenium .

Você pode usar o plug-in "Test Recorder" do Firefox para gravar um teste efetuando login na rede e depois reproduzir o teste.

Moshe Katz
fonte
0

Sim, existe uma maneira muito simples de acessar a Internet da sua universidade. Você pode usar o navegador ' Lynx ', que é um navegador baseado em texto, projetado para uso no terminal. Então, aqui está o caminho:

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

onde ' nome de usuário ' é o nome do campo correspondente ao nome de usuário no formulário e ' senha ' é o nome do campo correspondente ao campo de senha e ' meu nome ' e ' minha senha ' são os valores correspondentes a serem preenchidos a forma. Você pode encontrar o nome do campo usando 'Inspect Element' em qualquer navegador. Eu tentei com curl como indicado na resposta por BlueBerry - Vignesh4303, mas não funcionou.

Kushagra Sharma
fonte
0

Você pode obter um complemento para o seu navegador, que fará logon automático em sites com senhas salvas. Eu usei o AutoAuth com o Firefox. Então você faz o login uma vez e salva suas credenciais, depois escreve um script que possui apenas

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

Quando executado, ele fará o login automático. Eu tentei com vários sites e funcionou bem.

myfavoritenoisemaker
fonte