Мне нужно получить конечный URL-адрес после перенаправления страницы, желательно с помощью curl или wget.
Например, http://google.com может перенаправлять на http://www.google.com .
Содержимое легко получить (например curl --max-redirs 10 http://google.com -L
), но меня интересует только конечный URL (в первом случае http://www.google.com ).
Есть ли способ сделать это, используя только встроенные инструменты Linux? (только командная строка)
:-)
-I
иначе он фактически загрузит файл.curl -A ...
для перенаправления в ожидаемое место.Спасибо, мне это помогло. Я сделал некоторые улучшения и обернул это во вспомогательный скрипт finalurl:
-o
вывод на/dev/null
-I
на самом деле не скачивайте, просто найдите конечный URL-s
тихий режим, без индикаторов выполненияЭто позволило вызвать команду из других скриптов, например:
источник
finalurl() { curl --silent --location --head --output /dev/null --write-out '%{url_effective}' -- "$@"; }
как другой вариант:
Но не проходит мимо первого.
источник
Обычно это можно сделать с помощью wget.
wget --content-disposition
"url" дополнительно, если вы добавите,-O /dev/null
вы не будете фактически сохранять файл.wget -O /dev/null --content-disposition example.com
источник
-O /dev/null
только с на-O-
. Лучше:wget -O- --content-disposition example.com
Спасибо. В итоге я реализовал ваши предложения: curl -i + grep
Возвращает пустое значение, если веб-сайт не перенаправляет, но для меня этого достаточно, поскольку он работает с последовательными перенаправлениями.
Могут быть ошибки, но на первый взгляд все работает нормально.
источник
Это сработает:
источник
Параметры
-L (--location)
и-I (--head)
все еще делают ненужный HEAD-запрос к URL-адресу местоположения.Если вы уверены, что у вас будет не более одного редиректа, лучше отключить отслеживание местоположения и использовать переменную curl% {redirect_url}.
Этот код выполняет только один HEAD-запрос к указанному URL-адресу и берет redirect_url из заголовка местоположения:
Тест скорости
all_videos_link.txt
- 50 ссылок goo.gl + bit.ly, которые перенаправляют на YouTube1. С указанием местоположения
Полученные результаты:
2. Без указания местоположения
Полученные результаты:
источник
Я не уверен, как это сделать с помощью curl, но libwww-perl устанавливает псевдоним GET.
источник
Можешь попробовать?
Примечание: при выполнении команды curl -I http://your-domain.com необходимо использовать одинарные кавычки в команде, например
curl -I 'http://your-domain.com'
источник
Вы можете использовать grep. wget не сообщает вам, куда он перенаправляется? Просто найдите это.
источник