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


456

Я знаю, что в сценарии php:

curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);

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

Ответы:


763

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

curl -L <URL>


1
Это также не работает с аутентификацией в Google для доступа к таблицам. : /
фатухоку

13
man curl: «Когда используется аутентификация, curl только отправляет свои учетные данные на исходный хост. <...> См. Также --location-trust о том, как это изменить.»
Худолеев

25

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

Для меня препятствием было то, что на странице требовался логин, а затем я получил новый 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>


15

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

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

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

--max-redirs <num>

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.