Necesito obtener la URL final después de una redirección de página, preferiblemente con curl o wget.
Por ejemplo, http://google.com puede redirigir a http://www.google.com .
El contenido es fácil de obtener (por ejemplo curl --max-redirs 10 http://google.com -L
), pero solo me interesa la URL final (en el primer caso, http://www.google.com ).
¿Hay alguna forma de hacer esto utilizando solo herramientas integradas de Linux? (solo línea de comando)
:-)
-I
contrario, descargará el archivo.curl -A ...
para redirigir a la ubicación esperada.Gracias, eso me ayudó. Hice algunas mejoras y las envolví en un script auxiliar "finalurl":
-o
salida a/dev/null
-I
no descargues, solo descubre la URL final-s
modo silencioso, sin barras de progresoEsto hizo posible llamar al comando desde otros scripts como este:
fuente
finalurl() { curl --silent --location --head --output /dev/null --write-out '%{url_effective}' -- "$@"; }
como otra opción:
Pero no pasa del primero.
fuente
Puede hacer esto con wget normalmente.
wget --content-disposition
"url" además, si agrega-O /dev/null
, no guardará realmente el archivo.wget -O /dev/null --content-disposition example.com
fuente
-O /dev/null
solo de a-O-
. Mejor:wget -O- --content-disposition example.com
Gracias. Terminé implementando tus sugerencias: curl -i + grep
Devuelve en blanco si el sitio web no redirecciona, pero eso es lo suficientemente bueno para mí, ya que funciona en redirecciones consecutivas.
Podría tener errores, pero de un vistazo funciona bien.
fuente
Esto funcionaría:
fuente
Los parámetros
-L (--location)
y-I (--head)
todavía haciendo una solicitud HEAD innecesaria a la URL de ubicación.Si está seguro de que no tendrá más de una redirección, es mejor deshabilitar la ubicación de seguimiento y usar una variable curl% {redirect_url}.
Este código solo realiza una solicitud HEAD a la URL especificada y toma redirect_url de location-header:
Prueba de velocidad
all_videos_link.txt
- 50 enlaces de goo.gl + bit.ly que redirigen a youtube1. Con seguir ubicación
Resultados:
2. Sin ubicación de seguimiento
Resultados:
fuente
No estoy seguro de cómo hacerlo con curl, pero libwww-perl instala el alias GET.
fuente
¿Puedes intentarlo?
Nota: cuando ejecuta el comando curl -I http://your-domain.com tengo que usar comillas simples en el comando como
curl -I 'http://your-domain.com'
fuente
Podrías usar grep. ¿No te dice a dónde se redirecciona también? Simplemente elimine eso.
fuente