Есть ли способ следовать перенаправлениям с помощью командной строки cURL?

Я знаю, что в php script:

curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);

будет следовать переадресации. Есть ли способ отслеживать перенаправления с командной строкой cURL?

Ответ 1

Используйте флаг заголовка местоположения:

curl -L <URL>

Ответ 2

У меня была аналогичная проблема. Я размещаю свое решение здесь, потому что считаю, что это может помочь одному из комментаторов.

Для меня препятствием было то, что страница требовала входа в систему, а затем дала мне новый URL-адрес через javascript. Вот что я должен был сделать:

curl -c cookiejar -g -O -J -L -F "j_username=yourusename" -F "j_password=yourpassword" <URL>

Обратите внимание, что j_username и j_password - это имя полей для формы входа в мой сайт. Вам нужно будет открыть источник веб-страницы, чтобы узнать, что такое "имя" поля имени пользователя и "имя" поля пароля в вашем случае. После этого я запускаю html файл с java script, в который был встроен новый URL-адрес. После синтаксического анализа это просто повторно отправьте с новым URL-адресом:

curl -c cookiejar -g -O -J -L -F "j_username=yourusename" -F "j_password=yourpassword" <NEWURL>

Ответ 3

Как уже говорилось, для отслеживания перенаправлений вы можете использовать флаг -L или --location:

curl -L http://www.example.com

Но, , если вы хотите ограничить количество перенаправлений, добавьте параметр --max-redirs

--max-redirs <num>

Установите максимальное количество разрешенных перенаправлений. Если используется -L, --location, эта опция  может использоваться для предотвращения скручивания следующих перенаправлений "в абсурде". По умолчанию предел   установлен на 50 перенаправлений. Установите эту опцию на -1, чтобы сделать ее безграничной.   Если эта опция используется несколько раз, будет использована последняя.