Odpowiedzi:
Użyj flagi nagłówka lokalizacji:
curl -L <URL>
man curl
: „Gdy używane jest uwierzytelnianie, curl wysyła tylko swoje poświadczenia do początkowego hosta. <...> Zobacz także --local-trust, jak to zmienić.”
Miałem podobny problem. Zamieszczam tutaj moje rozwiązanie, ponieważ uważam, że może to pomóc jednemu z komentujących.
Dla mnie przeszkodą było to, że strona wymagała logowania, a następnie dała mi nowy adres URL za pomocą javascript. Oto, co musiałem zrobić:
curl -c cookiejar -g -O -J -L -F "j_username=yourusename" -F "j_password=yourpassword" <URL>
Pamiętaj, że j_username i j_password to nazwa pól formularza logowania do mojej witryny. Będziesz musiał otworzyć źródło strony internetowej, aby zobaczyć, jaka jest „nazwa” pola nazwy użytkownika i „nazwa” pola hasła. Następnie przechodzę do pliku HTML ze skryptem Java, w którym osadzony jest nowy adres URL. Po przeanalizowaniu tego, po prostu prześlij ponownie z nowym adresem URL:
curl -c cookiejar -g -O -J -L -F "j_username=yourusename" -F "j_password=yourpassword" <NEWURL>
Jak już wspomniano, aby podążać za przekierowaniami , możesz użyć flagi -L
lub --location
:
curl -L http://www.example.com
Ale jeśli chcesz ograniczyć liczbę przekierowań , dodaj parametr--max-redirs
--max-redirs <num>
Ustaw maksymalną dozwoloną liczbę kolejnych przekierowań. W przypadku
-L
,--location
jest używany, opcja ta może być stosowany w celu zapobiegania zwijania z następujących przekierowań „w absurdum”. Domyślnie limit jest ustawiony na 50 przekierowań. Ustaw tę opcję na -1, aby była nieograniczona. Jeśli ta opcja zostanie użyta kilka razy, zostanie użyta ostatnia.