Czy istnieje sposób śledzenia przekierowań za pomocą wiersza polecenia cURL?

456

Wiem, że w skrypcie php:

curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);

będzie podążał za przekierowaniami. Czy istnieje sposób śledzenia przekierowań za pomocą wiersza polecenia cURL?

LDN
źródło

Odpowiedzi:

761

Użyj flagi nagłówka lokalizacji:

curl -L <URL>

Nathan Kuchta
źródło
1
Nie działa to również z uwierzytelnianiem w Google w celu uzyskania dostępu do arkuszy kalkulacyjnych. : /
fatuhoku
13
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ć.”
hudolejev
25

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>

użytkownik3817445
źródło
15

Jak już wspomniano, aby podążać za przekierowaniami , możesz użyć flagi -Llub --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, --locationjest 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.

freedev
źródło