CURL, aby uzyskać dostęp do strony, która wymaga logowania z innej strony
Mam 2 Strony: xyz.com/a
i xyz.com/b
. Dostęp do xyz.com/b
Mogę uzyskać tylko wtedy, gdy najpierw zaloguję się do xyz.com/a
. Jeśli uzyskasz dostęp do xyz.com/b
bez przechodzenia przez inne, po prostu dostaję odmowę dostępu (brak przekierowania do logowania) przez przeglądarkę. Po zalogowaniu się w xyz.com/a
, Mogę uzyskać dostęp do drugiego.
Moim problemem jest zrobienie tego za pomocą polecenia curl. Mogę zalogować się pomyślnie do xyz.com/a
za pomocą curl, ale potem spróbuj {[8] } i uzyskam odmowę dostępu.
Używam:
curl --user user:pass https://xyz.com/a #works ok
curl https://xyz.com/b #doesn't work
I ' ve próbowałem użyć drugiej linii z & bez części użytkownik / hasło i nadal nie działa. Obie strony używają tego samego CA, więc to nie problem. Jakieś sugestie? Dzięki
4 answers
Strona internetowa prawdopodobnie używa plików cookie do przechowywania informacji o sesji. When you run
curl --user user:pass https://xyz.com/a #works ok
curl https://xyz.com/b #doesn't work
curl
jest prowadzony dwukrotnie, w dwóch oddzielnych sesjach. Tak więc po uruchomieniu drugiego polecenia pliki cookie ustawione przez pierwsze polecenie nie są dostępne; to tak, jakbyś zalogował się do strony a
w jednej sesji przeglądarki i próbował uzyskać dostęp do strony b
w innej.
To, co musisz zrobić, to zapisać Pliki cookie utworzone przez pierwsze polecenie:
curl --user user:pass --cookie-jar ./somefile https://xyz.com/a
A następnie przeczytaj je z powrotem podczas uruchamiania drugiego:
curl --cookie ./somefile https://xyz.com/b
Alternatywnie możesz spróbować pobrać oba pliki za pomocą tego samego polecenia, które myślę, że użyje tych samych plików cookie.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-09-13 03:53:18
Możesz również zalogować się przez przeglądarkę i uzyskać polecenie ze wszystkimi nagłówkami, w tym Plikami cookie:
Otwórz zakładkę Sieć narzędzi programistycznych, Zaloguj się, Przejdź do potrzebnej strony, użyj "Kopiuj jako cURL".
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-02-03 16:30:14
Po jakimś googlowaniu znalazłem to:
curl -c cookie.txt -d "LoginName=someuser" -d "password=somepass" https://oursite/a
curl -b cookie.txt https://oursite/b
Nie mam pojęcia, czy to zadziała, ale może cię to poprowadzić we właściwym kierunku.Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-09-13 03:45:52
Moja odpowiedź to mod kilku wcześniejszych odpowiedzi od @ JoeMills i @user.
-
Pobierz
cURL
polecenie logowania do serwera:- załaduj stronę logowania dla strony internetowej i otwórz Panel sieci narzędzi programistycznych
- w Firefoksie kliknij prawym przyciskiem myszy stronę, wybierz "Inspect Element (Q)" i kliknij kartę Sieć
- przejdź do formularza logowania, wpisz nazwę użytkownika, hasło i zaloguj się
- po zalogowaniu wróć do Panelu sieci i przewiń do góry, aby znaleźć POST wejście. Kliknij prawym przyciskiem myszy i wybierz Kopiuj -> Kopiuj jako CURL
- Wklej to do edytora tekstu i spróbuj tego w wierszu polecenia, aby sprawdzić, czy to działa
- możliwe, że niektóre witryny mają hartowanie, które zablokuje tego typu spoofing logowania, który wymagałby więcej kroków poniżej, aby ominąć.
- załaduj stronę logowania dla strony internetowej i otwórz Panel sieci narzędzi programistycznych
-
Zmodyfikuj polecenie cURL, aby móc zapisać plik cookie sesji po zalogowaniu
- Usuń wpis
-H 'Cookie: <somestuff>'
- Dodaj po
curl
na początku-c login_cookie.txt
- spróbuj uruchomić zaktualizowaną komendę curl, a otrzymasz nowy plik
'login_cookie.txt'
w tym samym folderze
- Usuń wpis
-
Wywołanie nowej strony internetowej przy użyciu tego nowego pliku cookie, który wymaga zalogowania się
curl -b login_cookie.txt <url_that_requires_log_in>
Próbowałem tego na Ubuntu 20.04 i działa jak urok.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-07-15 19:05:39