Si necesitas obtener el favicon de un sitio, pero no quieres abrir un navegador ni usar una herramienta de GUI, curl es la opción adecuada, siempre que sepas cómo manejar sus peculiaridades. Puede que estés automatizando una auditoría de assets o que simplemente prefieras la terminal. Esta guía te muestra los comandos exactos para descargar favicons con curl, desde la ruta predeterminada más sencilla hasta el análisis del HTML para encontrar iconos personalizados.
Daremos por supuesto que tienes curl instalado (viene de serie en macOS y Linux, y está disponible para Windows). No necesitas ninguna otra dependencia.
Paso 1: prueba la ruta predeterminada favicon.ico
La mayoría de los sitios aún sirven un archivo en /favicon.ico. La forma más rápida de descargarlo es:
curl -O https://example.com/favicon.icoEl flag -O guarda el archivo con el nombre que tiene en el servidor. Si el sitio devuelve un 404, guardarás una página HTML de error como favicon.ico, no el favicon. Usa -f para que curl no genere salida ante errores HTTP:
curl -f -O https://example.com/favicon.icoAhora, curl devuelve un error si el archivo no existe, por lo que podrás gestionar esta situación desde un script.
Paso 2: sigue las redirecciones
Muchos sitios redirigen /favicon.ico a un CDN o a otra ruta. Sin -L, curl no seguirá esas redirecciones y terminarás obteniendo el cuerpo de una respuesta 301. Añade -L para seguirlas:
curl -L -f -O https://example.com/favicon.icoEsta es la solución más habitual para los intentos de «curl download favicon» que devuelven un archivo vacío o muy pequeño.
Paso 3: analiza el HTML para encontrar enlaces a iconos personalizados
Los sitios modernos suelen declarar sus iconos mediante etiquetas <link rel="icon"> dentro del <head>. La especificación HTML de WHATWG define rel=icon como la forma estándar de asociar un icono a una página (fuente). Para encontrar esas URL, descarga la página y usa grep para buscar rel="icon":
curl -sL https://example.com | grep -o '<link[^>]*rel="[^"]*icon[^"]*"[^>]*>'Esto muestra las etiquetas link sin procesar. Verás algo como <link rel="icon" href="/assets/favicon-32.png" sizes="32x32">. Extrae el valor de href y descárgalo con curl:
curl -L -f -O https://example.com/assets/favicon-32.pngSi el href es relativo (empieza por /), antepone el dominio. Para un enfoque más robusto, utiliza una herramienta como Python o PHP para analizar correctamente el HTML.
Paso 4: gestiona varios formatos de iconos
Los sitios pueden declarar varios iconos: SVG, PNG, ICO y Apple Touch. Puedes recorrerlos en un bucle. Este es un fragmento de bash que descarga todos los enlaces rel="icon" y rel="apple-touch-icon":
curl -sL https://example.com | grep -oE 'href="[^"]+\.(ico|png|svg)"' | cut -d'"' -f2 | while read -r path; do
url="https://example.com${path}"
curl -L -f -O "$url"
doneAjusta el dominio y el tratamiento de las rutas según sea necesario. Esto resulta útil para auditar el conjunto de iconos de un sitio.
Problemas habituales
- Olvidar
-L: los redirects provocan archivos vacíos. Usa siempre-Lal descargar favicons. - No usar
-f: curl guarda páginas de error como si fueran iconos. Usa-fpara que falle ante errores HTTP. - URLs relativas: el
hrefdel HTML puede ser relativo. Debes resolverlo con respecto a la URL de la página. - Desajuste de
Content-Type: algunos servidores devuelventext/htmlpara iconos inexistentes. Comprueba el archivo confile favicon.icopara confirmar que es una imagen. - Favicons SVG: si el sitio usa un favicon SVG, curl lo descargará correctamente, pero algunas herramientas más antiguas no pueden manejar SVG. Conviértelo si es necesario.
Para un enfoque más automatizado, considera usar un descargador de favicons dedicado. Nuestra guía para descargar favicons cubre trucos del navegador y métodos de API que complementan el uso de curl.
Conclusión
Usar curl para descargar un favicon es sencillo una vez que tienes en cuenta los redirects, el manejo de errores y el análisis del HTML. Empieza con la ruta predeterminada /favicon.ico, añade -L -f para asegurar la fiabilidad y analiza el HTML cuando necesites formatos específicos. Con estos pasos, puedes automatizar mediante scripts las descargas de favicons de cualquier sitio.