Skip to content

Todo para WordPress, el desarrollo web — y mucho más

📥 Cómo descargar un sitio web completo con Wget en Windows

📥 Cómo descargar un sitio web completo con Wget en Windows

La utilidad gratuita de línea de comandos Wget puede clonar sitios web, descargando cada página, cada imagen, cada archivo CSS y almacenándolos en una carpeta de su disco. Suena a magia, pero es pura ingeniería: recorrido recursivo de enlaces, conversión de rutas a URL relativas y preservación cuidadosa de la estructura. Tras crear dicho archivo, el sitio se abre localmente como si estuviera activo; basta con hacer clic en cualquier archivo .html.

El problema es que las guías decentes para Windows son casi inexistentes. La mayoría de los manuales están escritos para Unix, y el usuario promedio de Windows necesita un .exe listo para usar, comandos claros y protección contra errores comunes como la recursión infinita o los enlaces rotos. Ese vacío es el que vamos a llenar.

💡 Resumen rápido:

  • Descargue Wget para Windows y añada la ruta de la utilidad al PATH del sistema
  • Abra una terminal en su carpeta de destino y ejecute el comando de clonación
  • Tras la descarga, corrija los enlaces y rutas rotos con grepWin, y el archivo estará listo para consultar
  • Si no necesita recursión, use un modo con una lista de URL preparada previamente

Por qué descargar un sitio completo

Internet no es para siempre. Los sitios cierran, cambian de dueño, se rediseñan y pierden contenido antiguo. La comunidad de archivado de datos en Reddit convirtió hace tiempo el archivado en una cultura, y con razón. No puede predecir cuándo desaparecerá su blog favorito o cuándo una documentación valiosa pasará a estar tras un muro de pago, pero puede guardarla en su forma actual.

Los escenarios van de lo obvio a lo inesperado. Está a punto de viajar a algún lugar sin acceso a internet y necesita una instantánea funcional de un sitio informativo. O colecciona épocas del diseño; la web de ayer, con sus maquetaciones en tabla y botones de colores ácidos, ya es historia. Incluso tiene sentido clonar su propio sitio periódicamente: no es una copia de seguridad en el sentido tradicional (no puede restaurar la base de datos), sino una instantánea estática que sobrevivirá a cualquier caída del hosting.

Una advertencia importante: tenga cuidado con lo que descarga. Las leyes de derechos de autor y privacidad siguen siendo aplicables. El uso privado de una copia guardada suele ser legal, pero publicar el contenido de otra persona sin permiso puede generarle problemas.

Cómo rastrea Wget un sitio: mecánica del proceso

Wget parte de la URL que usted especifique y sigue recursivamente cada enlace interno, en teoría hasta una profundidad infinita. Cuando está bien configurado, no se desborda hacia internet abierto y empieza a descargar Google: la opción --mirror combinada con --reject-regex mantiene el rastreo dentro de los límites del dominio objetivo. Todos los enlaces externos permanecen intactos, simplemente como texto con la URL original.

Sobre la marcha, Wget descarga todo: páginas HTML, hojas de estilo, scripts, imágenes, fuentes. Luego convierte los enlaces internos en rutas relativas, lo que permite que el archivo se abra localmente con la navegación funcionando como en el sitio activo. Los enlaces externos permanecen sin cambios y siguen apuntando a internet (si dispone de conexión al consultarlos).

Un archivo, no una copia de seguridad. No puede restaurar un sitio a partir de una copia estática así porque no hay base de datos ni lógica de servidor. Wget funciona como el rastreador de un motor de búsqueda: solo encuentra las páginas que alguien enlazó. En el proceso, verá cuán importantes son los enlaces internos para la conectividad del contenido; las páginas huérfanas sin enlaces entrantes no llegarán al archivo.

Aunque Wget no está vinculado a ningún CMS en particular, funciona especialmente bien con sitios WordPress. La razón es simple: widgets estándar como nubes de etiquetas y archivos mensuales crean una densa red de enlaces internos que el bot recorre sin esfuerzo.

Instalar Wget en Windows

El mundo de Wget gira históricamente en torno a Unix, y los usuarios de Windows son invitados aquí. Si va al sitio oficial de GNU y descarga el código fuente, obtendrá un montón de archivos .c, no un programa listo para ejecutar. Necesita un binario precompilado:

  • Vaya a eternallybored.org/misc/wget, un repositorio no oficial pero probado en el tiempo de compilaciones de Wget para Windows (versión actual 1.21.4)
  • Descargue el archivo zip de la última versión y extráigalo en una carpeta separada. No requiere instalación; es una utilidad portátil

Si hace doble clic en wget.exe, una ventana de terminal parpadeará y se cerrará de inmediato. Wget es un programa de consola; necesita una terminal abierta en su carpeta de destino. Y para evitar copiar el .exe en cada carpeta con futuros archivos, añada Wget al PATH del sistema:

  • Presione Windows + R, pegue y ejecute:
1 "C:\Windows\system32\rundll32.exe" sysdm.cpl,EditEnvironmentVariables
  • En la sección Variables de usuario, busque la variable Path y haga clic en Editar...
  • Haga clic en Nuevo e introduzca la ruta completa a la carpeta que contiene wget.exe
  • Cierre todos los diálogos haciendo clic en Aceptar

Verificación: presione Windows + R de nuevo → cmd /k "wget -V". Debería ver la versión de Wget, no un mensaje indicando que el comando no se reconoce.

Ventana de símbolo del sistema mostrando información de versión de Wget

Opciones clave de Wget: desglose detallado

La mayoría de las opciones tienen equivalentes cortos de una sola letra, pero los nombres largos son más significativos y legibles sin una hoja de trucos. He seleccionado configuraciones probadas en la práctica, así que en lugar de leer el manual de GNU Wget de 181 páginas, obtiene un extracto con una explicación del «porqué» de cada una.

Opciones principales

--mirror habilita la recursión infinita. Esencialmente, es un conjunto de otras opciones combinadas bajo una sola bandera. Sin ella, Wget solo descargará la página especificada, no el sitio completo. Es --mirror lo que hace posible el mirroring.

--page-requisites descarga todos los recursos asociados: CSS, JavaScript, imágenes, fuentes. Sin esta opción, su archivo se verá como una página HTML desnuda sin estilos ni imágenes.

--convert-links reescribe los enlaces en los archivos HTML una vez completada la descarga para que funcionen localmente. Las URL absolutas se reemplazan con rutas relativas. Esto es lo que le permite abrir index.html desde el disco y navegar por las páginas como en un sitio en vivo.

--adjust-extension añade extensiones a los archivos que llegaron sin ellas. Los sitios modernos a menudo sirven páginas sin .html al final (URL legibles por humanos), y sin esta opción, el navegador no entenderá que está viendo un documento HTML. Hay una trampa: si el servidor comprime el contenido mediante gzip, Wget puede darle al archivo por error una extensión .gz. La siguiente opción protege contra esto.

--compression=auto maneja la compresión gzip sobre la marcha. Sin ella, un logotipo SVG podría guardarse como logo.svg.gz y volverse inútil para la visualización local. Esta opción no está disponible en todas las compilaciones; los usuarios de Unix a veces encuentran su ausencia. La compilación de Windows de eternallybored.org la incluye.

--reject-regex "/search|/rss" impide rastrear URL que contengan las palabras especificadas. Las páginas de búsqueda y los feeds RSS generan cadenas infinitas de parámetros que llenan su sistema de archivos con nombres de varias pantallas de largo. La expresión regular aquí usa sintaxis POSIX básica, no PCRE completo. Tenga cuidado: /search cortará no solo la basura de búsqueda, sino también artículos legítimos con URL como yoursite.com/search-for-extraterrestrial-life. En caso de tales colisiones, haga el patrón más específico.

Opciones adicionales

--no-if-modified-since desactiva la comprobación de la cabecera If-Modified-Since. Solo incluyo esta bandera cuando el servidor se queja explícitamente en los registros. Si no planea ejecutar de nuevo en la misma carpeta para recoger cambios, esta opción no es crítica.

--no-check-certificate omite la verificación del certificado SSL. Al hacer mirroring, no está introduciendo contraseñas ni transmitiendo datos confidenciales, por lo que la verificación estricta del certificado es excesiva. Esta bandera ahorra dolores de cabeza en sitios con certificados caducados o autofirmados.

--user-agent suplanta el User-Agent del navegador. Algunos servidores detectan Wget y bloquean las solicitudes. Suplantar como un navegador Chrome normal resuelve el problema:

1--user-agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36"

Si el bloqueo ocurre por IP, necesitará una VPN y posiblemente la distribución de la descarga entre múltiples máquinas. En este caso, las opciones --wait y --random-wait para reducir la tasa de solicitudes también serán útiles.

--restrict-file-names=windows limita los caracteres en los nombres de archivo a un conjunto seguro para Windows. En Unix, se permiten caracteres especiales en los nombres, y un archivo descargado en una máquina Linux puede ser ilegible en Windows. Si está trabajando en Windows, la bandera se aplica automáticamente; si está descargando en Unix pero visualizará en Windows, especifíquela explícitamente.

--backup-converted guarda una copia original de cada archivo que Wget modificó durante la conversión de enlaces. Esto duplica el tamaño del archivo. No lo uso, pero lo menciono por si necesita una copia de seguridad al segundo de cada edición.

Abrir la línea de comandos en la carpeta correcta

Wget se ejecuta desde un terminal, y el terminal debe estar apuntando a la carpeta donde planea almacenar el archivo. Hay varios métodos, desde los estándar hasta los avanzados:

  • Windows + Rcmd → Enter, luego cd /d C:\path\to\archive (la bandera /d permite cambiar entre unidades)
  • Si la ruta contiene espacios, envuélvala entre comillas: cd /d "C:\My Archive"

Más rápido, en una línea: Windows + Rcmd /k "cd /d C:\path\to\archive". La bandera /k mantiene la ventana abierta después de que el comando se ejecute.

Si usa Total Commander: Comandos → Abrir shell de comandos abre un terminal directamente en la carpeta actual. Para el Explorador, existe un ajuste de registro que añade una opción «Abrir ventana de comandos aquí» al menú contextual.

Iniciar la descarga: el comando completo

Reuniéndolo todo. Aquí está el comando que uso para hacer mirroring de un sitio web promedio:

1wget --mirror --page-requisites --convert-links --adjust-extension --compression=auto --reject-regex "/search|/rss" --no-if-modified-since --no-check-certificate --user-agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36" https://example.com

Lo mismo puede escribirse con banderas cortas: wget -mkp -E --compression=auto -R "/search|/rss" .... Pero los nombres largos hacen que el comando se autodocumente. Dentro de un mes, abrirá su archivo .bat y entenderá inmediatamente qué hace cada opción.

Reemplace https://example.com con la URL real del sitio objetivo y presione Enter. El proceso puede tomar desde unos pocos minutos hasta varias horas, dependiendo del tamaño del sitio y las limitaciones del servidor.

Posprocesamiento: grepWin y arreglos típicos

Después de la descarga, el archivo casi siempre requiere algunos toques finales. La utilidad grepWin es una navaja suiza para la búsqueda y reemplazo por lotes en archivos de texto en Windows. Aquí hay un par de escenarios típicos:

  • Eliminar etiquetas HTML basura. Algunas plataformas CMS generan etiquetas <source> vacías que interfieren con la renderización. En grepWin, seleccione la búsqueda por regex para <source media=".*">, especifique la máscara *.html y reemplace con una cadena vacía.

  • Corregir rutas de recursos. Si algunas rutas permanecieron absolutas, grepWin las encontrará por un patrón como src="https://example.com/ y las reemplazará con el equivalente local.

Ventana de la utilidad grepWin con ajustes de búsqueda y reemplazo

Esto es solo un punto de partida; cada sitio tiene sus propias sorpresas. Los puntos fuertes de grepWin: vista previa instantánea antes del reemplazo, procesamiento recursivo de carpetas y soporte para expresiones regulares. Pero cuando el volumen de ediciones va más allá de «buscar y reemplazar», herramientas de Unix como sed y grep ofrecen mucha más flexibilidad. Las versiones para Windows están disponibles a través de WSL o Cygwin.

Alternativa: descargar desde una lista de URL sin recursión

El rastreo recursivo no siempre es lo adecuado. Si el sitio es enorme pero usted solo necesita una selección específica de páginas, es más fácil preparar una lista de URL y pasársela a Wget mediante --input-file:

1wget --input-file=links.txt --page-requisites --convert-links --adjust-extension --compression=auto --no-if-modified-since --no-check-certificate --user-agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36"

Observe que --mirror y --reject-regex se han eliminado: la recursión no es necesaria y usted mismo controla la lista de URL.

¿Cómo se elabora una lista así? Un método es la búsqueda avanzada de Google: la consulta site:yoursite.com "keyword phrase" devuelve páginas indexadas sobre el tema. Configure los resultados en 100, ármese con la extensión Copy Links para Chrome y copie las URL por lotes a links.txt.

Vídeo: replicar un sitio en 5 minutos

Para ver el proceso completo en vivo, desde la instalación hasta el archivo terminado, vea esta grabación de pantalla:

El autor recorre el proceso desde cero: descargar Wget, configurar las opciones, ejecutar el comando y abrir el resultado en un navegador. Recomiendo verlo antes de su primera ejecución; 7 minutos de pantalla le ahorrarán una hora de depuración.

⁉️🤔 Preguntas frecuentes

¿Puedo restaurar un sitio desde un archivo de Wget?

Un archivo de Wget es una instantánea estática: HTML, CSS, JS y archivos multimedia. No contiene base de datos ni lógica de servidor. Usted no puede subir esa copia a un hosting y revivir WordPress con comentarios y un panel de administración. Esta es una herramienta para preservar contenido, no para hacer copias de seguridad. Para un respaldo completo de WordPress, use plugins como UpdraftPlus o Duplicator, que guardan tanto los archivos como la base de datos.

Wget está descargando demasiada basura. ¿Cómo lo limito?

Una combinación de --reject-regex (filtro de URL por patrón) y --reject (filtro por extensiones de archivo) resuelve el problema. Por ejemplo, añadir --reject=jpg,png,gif omitirá todas las imágenes. O --reject-regex "/tag/|/category/|/page/" eliminará los archivos de etiquetas, categorías y paginación. La clave es probar en un subconjunto pequeño de páginas antes de una ejecución completa.

El servidor bloqueó mi IP después de que empecé a descargar. ¿Qué debo hacer?

Wget puede ser detectado por el User-Agent o la tasa de solicitudes. Tres niveles de protección: suplantación del User-Agent mediante --user-agent (mostrado arriba), limitación de velocidad mediante --wait=1 --random-wait (pausa de 1 segundo más adición aleatoria) y cambio de IP mediante VPN. Para sitios grandes, puede dividir la descarga: prepare varias listas de URL y ejecute Wget en paralelo desde diferentes máquinas o puntos de conexión VPN.

¿Por qué Wget es mejor que las extensiones de navegador para guardar páginas?

Extensiones como SingleFile guardan una sola página. Wget replica un sitio entero, con navegación, paginación y todos los enlaces internos. Para un blog con 500 artículos, una extensión de navegador requeriría 500 clics manuales. Wget lo hace con un solo comando. Además, las extensiones de navegador no convierten los enlaces para navegación local: usted obtendría 500 archivos aislados sin conexión entre sí.

El archivo pesa gigabytes. ¿Cómo lo comprimo y almaceno?

Una carpeta con miles de archivos pequeños es incómoda de transferir, respaldar y analizar con antivirus. Yo empaqueto esos archivos en RAR usando el método «Store» o «Fastest»: la velocidad importa más que la tasa de compresión porque el HTML y los medios ya están comprimidos. Siempre añado un registro de recuperación, que salva el día cuando hay sectores defectuosos en un disco o errores de transferencia. El resultado: un solo archivo que se copia en segundos y no se descompone durante el almacenamiento.

Descargar o no descargar: cuándo vale la pena usar Wget

Wget no es para uso diario. Es una herramienta para una tarea específica: obtener una copia estática completa de un sitio que le importa o le resulta útil. Cuando exista el riesgo de que el recurso desaparezca, recurra a Wget. Cuando vaya a trabajar sin conexión, recurra a Wget. Cuando necesite preservar un «fósil digital» de la era de Geocities, con más razón aún.

Para páginas puntuales, una extensión de navegador será suficiente. Para un respaldo completo de WordPress, use un plugin de respaldo. Pero cuando necesite específicamente un archivo autónomo y navegable de un sitio web completo, Wget prácticamente no tiene alternativas, y ahora usted sabe cómo ejecutarlo en Windows sin complicaciones.

Pruébelo en un sitio pequeño de un conocido o en su propio blog. La primera ejecución aclarará muchas cosas, y la segunda irá sobre ruedas. Y no olvide el registro de recuperación en su archivo: permita que su colección sobreviva a cualquier disco duro.