Strona logowania przy użyciu cURL

12

Próbuję zalogować się z wiersza polecenia cURL za pomocą polecenia

curl --data "nazwa użytkownika = użytkownik i hasło = hasło i przesłanie = logowanie" http://www.ip.com:8080/LoginApplication/Login.jsp

A potem próbuje uzyskać dostęp do wewnętrznej strony za pomocą

curl http://www.ip.com:8080/LoginApplication/Success.jsp

Ale jestem przekierowywany na stronę błędu z powodu braku zalogowania.

Czego brakuje mi w pierwszym poleceniu, aby mógł on utrzymać sesję? Mam witrynę hostowaną lokalnie

SAR
źródło
możliwe to samo na SO: stackoverflow.com/questions/12399087/…
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件

Odpowiedzi:

15

Musisz zapisać dane sesji w pliku cookie. Możesz użyć -c cookie_filenamedo utworzenia pliku cookie (dodaj to do polecenia logowania). Następnie w przypadku innych wniosków możesz odczytać z pliku cookie za pomocą -b cookie_filename.

W przykładzie:

curl -s loginpage -c cookiefile -d "user=myself&pass=secure"
curl -s secretpage -b cookiefile

EDYCJA :

Zauważ, że wiele razy loginpagenie jest to strona otwierana za pomocą przeglądarki internetowej, w której podajesz użytkownika i hasło. Musisz sprawdzić, gdzie formularz publikuje te dane (wyszukaj <form>znacznik w kodzie źródłowym i action=...atrybucie). Na przykład jeśli chcesz się zalogować na https://criticker.com , loginpageto https://www.criticker.com/authenticate.php, a nie https://www.criticker.com/signin.php , który jest otwierany za pomocą przeglądarki.

Wtyczka / rozszerzenie manipulujące w przeglądarce może pomóc Ci znaleźć prawidłowe loginpagei wszystkie dane, które są do niej wysyłane (takie jak ukryte pola wejściowe w formularzu).

Peque
źródło
Biorąc pod uwagę sekwencję -s -c -d, nawet nie produkuje pliku cookie
SAR
To była wielka pomoc, ponownie spojrzałem na moje źródło i stwierdziłem, że moja prośba trafia do kontrolera, a następnie zmodyfikowałem polecenie i zadziałało to dla mnie.
SAR
Działa to dobrze dla HTTP, czy jest coś, co muszę zrobić dodatkowo z HTTPS
SAR
@ SAR: masz problemy z certyfikatami. Może po prostu chcesz użyć -k. Zobacz curl --helpwięcej informacji lub wyszukaj w Internecie sposób obsługi certyfikatów. ;-)
Peque
1
Dziękuję za wspaniałą pomoc ... Problem z moim lokiem brzmiał: „Zauważ, że wielokrotnie strona logowania nie jest stroną otwieraną w przeglądarce internetowej, w której podajesz swojego użytkownika i hasło.” ... Dziękuję!
Sambhav Pandey