Я знаю, что в php script:
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
будет следовать переадресации. Есть ли способ отслеживать перенаправления с командной строкой cURL?
Используйте флаг заголовка местоположения:
curl -L <URL>
У меня была аналогичная проблема. Я размещаю свое решение здесь, потому что считаю, что это может помочь одному из комментаторов.
Для меня препятствием было то, что страница требовала входа в систему, а затем дала мне новый 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>
Как уже говорилось, для отслеживания перенаправлений вы можете использовать флаг -L
или --Location
:
curl -L http://www.example.com
Но, если вы хотите ограничить количество перенаправлений, добавьте параметр --max-redirs
--max-redirs <num> Set maximum number of redirection-followings allowed. If -L, --location is used, this option can be used to prevent curl from following redirections "in absurdum". By default, the limit is set to 50 redirections. Set this option to -1 to make it limitless. If this option is used several times, the last one will be used.
man curl
: «Когда используется аутентификация, curl отправляет свои учетные данные только на начальный хост. <...> См. также --location-trust о том, как это изменить.»