Jak wprowadzić dane logowania do strony internetowej z wiersza poleceń systemu Linux

25

Moje połączenie internetowe zapewnia uniwersytet. Jest chroniony kombinacją nazwy użytkownika / hasła. Oznacza to, że kiedy uruchamiam komputer, muszę uruchomić przeglądarkę internetową i otworzyć dowolną stronę internetową. Następnie jestem przekierowywany na stronę, która (między innymi) zawiera dwie formy. W tych muszę podać nazwę użytkownika i hasło. Udało mi się to zrobić za pomocą Firefoxa (który może zapisać hasło), a także linków (które ładują się szybciej i z wiersza poleceń).

Czy jest jakiś sposób na zautomatyzowanie procesu logowania przy użyciu skryptu bash? Pozwoliłoby to na zalogowanie się podczas rozruchu, aby był już dostępny podczas uruchamiania serwera X.

Tim
źródło
1
Państwo może być w stanie wywołać skrypt logowania z formularza w ACTIONatrybucie z curlbezpośrednio.
terdon
Wiele uniwersytetów oferuje również sieć, która korzysta z „Enterprise Authentication” (tj. Używa nazwy użytkownika / hasła dla samego połączenia sieciowego, zamiast czekać, aż spróbujesz uzyskać dostęp do strony z prośbą o poświadczenia). Możliwość przechowywania takich poświadczeń sieciowych jest wbudowana w system operacyjny. Jest również o wiele bardziej bezpieczny, ponieważ oznacza, że ​​innym jest trudniej szpiegować twoje połączenie. Jeśli twój uniwersytet to obsługuje, powinieneś się na to przełączyć.
Moshe Katz
Pomoże nam to również podać (anonimowy) przykład adresu URL, do którego następuje przekierowanie podczas logowania. (Anonimowa tutaj oznacza, że ​​należy usunąć adres MAC i / lub adres IP z adresu URL, jeśli są tam dostępne, ale zostaw wszystko inne, łącznie z nazwą uniwersytetu.)
Moshe Katz,

Odpowiedzi:

16

Możesz to wypróbować za pomocą curl , możesz po prostu użyć curl w taki sposób, aby zalogować się na stronie internetowej:

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

Możesz przekazać dane do strony internetowej w ten sposób z odpowiedzi Stackoverflow

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

potrzebujesz plików cookie, jeśli chcesz zalogować się ponownie po zalogowaniu. Identyfikator sesji w plikach cookie pomoże autoryzować kolejne żądanie curl.

Jeśli nie chcesz plików cookie, możesz ich użyć

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

Można dodatkowo patrz tutaj dla Polecenia specjalne

BlueBerry - Vignesh4303
źródło
1
Nie mogę teraz tego wypróbować, ale spodziewam się, że zadziała to tylko wtedy, gdy pojawi się okno dialogowe z pytaniem o hasło podczas otwierania strony. W moim przypadku są tylko dwie formy. Jeden dla nazwy i jeden dla hasła. Zmienię pytanie, aby to wyjaśnić.
Tim
@Tim dodał, jak przekazywać dane, normalnie musisz dowiedzieć się, do której strony żąda strona (lub jaka jest wartość akcji strony).
BlueBerry - Vignesh4303
Brzmiało to tak, jakby mogło działać, ale niestety nie. Patrząc na wynik curl sugeruje, że Usernamepole jest poprawnie wypełnione prawidłową wartością, ale Passwordpole nie jest (może to być poprawne ze względów bezpieczeństwa). Nie jestem pewien, czy przycisk przesłania został rzeczywiście uruchomiony. Czy ma znaczenie, do jakiej wartości jest przekazywany Login?
Tim
5

W końcu znalazłem sposób na automatyczne logowanie przy użyciu elinks. Działa, a nawet jest łatwy do skonfigurowania!

Należy ustawić dwie opcje. Można to zrobić, dodając następujące wiersze ~/.elinks/elinks.conf(jeśli pliku nie ma, utwórz go) lub zmieniając wartości w odpowiednich pozycjach w oknie dialogowym opcji w 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

Kroki dla autologiny skryptowej to:

  • Ustaw te dwie opcje
  • Otwórz stronę logowania elinks, wypełnij formularze i prześlij je.
  • Wybierz, aby zapamiętać nazwę i hasło do późniejszego wykorzystania.
  • Zamknij elinks
  • Biegać elinks -auto-submit http://somesite.com

To ostatnie polecenie powinno wykonać automatyczne logowanie bez dalszej interakcji użytkownika.

Właściwie to używam timeout 1m elinks -auto-submit http://somesite.com &, aby cały czas nie działał proces jałowego bieguna.

Tim
źródło
3

Prostym sposobem na napisanie skryptu jest Selenium .

Możesz użyć ich wtyczki „Test Recorder” Firefoksa, aby zarejestrować test zalogowania się do sieci, a następnie odtworzyć test.

Moshe Katz
źródło
0

Tak, istnieje bardzo prosty sposób na zalogowanie się do Internetu twojej uczelni. Możesz użyć przeglądarki internetowej „ Lynx ”, która jest przeglądarką tekstową zaprojektowaną do użycia na terminalu. Oto sposób:

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

gdzie „ nazwa użytkownika ” to nazwa pola odpowiadającego nazwie użytkownika w formularzu, a „ hasło ” to nazwa pola odpowiadającego polu hasła, a „ myname ” i „ mypassword ” to odpowiednie wartości, które należy wypełnić formularz. Nazwę pola można znaleźć, używając „Inspect Element” w dowolnej przeglądarce. Próbowałem z curl, jak wskazano w odpowiedzi BlueBerry - Vignesh4303, ale nie działało.

Kushagra Sharma
źródło
0

Możesz uzyskać dodatek do przeglądarki, który będzie automatycznie logował się na stronach internetowych z zapisanymi hasłami. Użyłem AutoAuth z Firefoksem. Następnie zaloguj się raz i zapisz swoje dane uwierzytelniające, a następnie napisz skrypt, który właśnie ma

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

Po uruchomieniu nastąpi automatyczne logowanie. Próbowałem z wieloma witrynami i działało to dobrze.

myfavoritenoisemaker
źródło