Mam 2 strony: xyz.com/a
i xyz.com/b
. Mam dostęp tylko xyz.com/b
wtedy i tylko wtedy, gdy xyz.com/a
najpierw się zaloguję. Jeśli uzyskuję dostęp xyz.com/b
bez przechodzenia przez drugą stronę, po prostu otrzymuję odmowę dostępu (brak przekierowania do logowania) za pośrednictwem przeglądarki. Po zalogowaniu się xyz.com/a
mam dostęp do drugiego.
Mój problem polega na tym, że robię to za pomocą polecenia curl. Mogę pomyślnie zalogować się do programu xyz.com/a
curl, ale wtedy próbuję xyx.com/b
uzyskać odmowę dostępu.
Używam następujących:
curl --user user:pass https://xyz.com/a #works ok
curl https://xyz.com/b #doesn't work
Próbowałem użyć drugiej linii z & bez części użytkownika / hasło i nadal nie działa. Obie strony używają tego samego urzędu certyfikacji, więc nie stanowi to problemu. Jakieś sugestie? Dzięki
somefile
zawiera parametr ścieżki (/a
w tym przypadku) i nie jest przekazywany do drugiego połączenia. Jeśli edytuję plik cookie w pliku i wstawię tylko ukośnik, to działa (plik cookie jest przekazywany do drugiego połączenia). Czy wiesz, czy można zapobiec przechowywaniu ścieżki w pliku cookie?Możesz również zalogować się przez przeglądarkę i otrzymać polecenie ze wszystkimi nagłówkami, w tym plikami cookie:
Otwórz kartę Sieć w Narzędziach dla programistów, zaloguj się, przejdź do potrzebnej strony, użyj opcji „Kopiuj jako cURL”.
źródło
Po pewnym googlowaniu znalazłem to:
Nie mam pojęcia, czy to zadziała, ale może poprowadzić cię we właściwym kierunku.
źródło
Moja odpowiedź to modyfikacja niektórych wcześniejszych odpowiedzi od @JoeMills i @user.
Uzyskaj
cURL
polecenie zalogowania się do serwera:Zmodyfikuj polecenie cURL, aby móc zapisać plik cookie sesji po zalogowaniu
-H 'Cookie: <somestuff>'
curl
na początku-c login_cookie.txt
'login_cookie.txt'
w tym samym folderzeWywołaj nową stronę internetową za pomocą tego nowego pliku cookie, która wymaga zalogowania
curl -b login_cookie.txt <url_that_requires_log_in>
Wypróbowałem to na Ubuntu 20.04 i działa jak urok.
źródło