Ответы:
Используйте флаг заголовка местоположения:
curl -L <URL>
man curl
: «Когда используется аутентификация, curl только отправляет свои учетные данные на исходный хост. <...> См. Также --location-trust о том, как это изменить.»
У меня была аналогичная проблема. Я публикую здесь свое решение, потому что считаю, что оно может помочь одному из комментаторов.
Для меня препятствием было то, что на странице требовался логин, а затем я получил новый URL через javascript. Вот что я должен был сделать:
curl -c cookiejar -g -O -J -L -F "j_username=yourusename" -F "j_password=yourpassword" <URL>
Обратите внимание, что j_username и j_password - это имя полей для формы входа на мой сайт. Вам нужно будет открыть исходный текст веб-страницы, чтобы увидеть, что такое «имя» поля имени пользователя и «имя» поля пароля в вашем случае. После этого я иду HTML-файл с Java-скриптом, в который был вставлен новый URL. После разбора просто отправьте новый URL:
curl -c cookiejar -g -O -J -L -F "j_username=yourusename" -F "j_password=yourpassword" <NEWURL>
Как уже говорилось, для отслеживания перенаправлений вы можете использовать флаг -L
или --location
:
curl -L http://www.example.com
Но, если вы хотите ограничить количество перенаправлений , добавьте параметр--max-redirs
--max-redirs <num>
Установите максимальное количество разрешенных перенаправлений. Если
-L
,--location
используется, этот параметр может быть использован для предотвращения завитка из следующих перенаправлений «в противном». По умолчанию ограничение установлено на 50 перенаправлений. Установите эту опцию на -1, чтобы сделать ее безграничной. Если эта опция используется несколько раз, будет использована последняя.