¿Por qué no usar «–spider» para programar cronjobs que llaman a una URL?

La diferencia principal entre los comandos wget -q -O - [URL] y wget -q --spider [URL] radica en qué hacen con la URL solicitada y cómo manejan el contenido descargado.


Diferencias principales de usar "--spider«

1. wget -q -O - [URL]

Este comando:

  • Descarga el contenido de la URL especificada.
  • Muestra el contenido en la salida estándar (normalmente en la terminal), gracias a -O -.
  • -q (quiet): Ejecuta el comando de forma silenciosa, sin mostrar mensajes de progreso.

📌 Uso típico:
Cuando deseas obtener y procesar el contenido de una página o archivo directamente desde la web.
Por ejemplo, para descargar y analizar el contenido HTML de una página o alimentar la salida a otro comando:

wget -q -O - https://example.com/page.html | grep "titulo"

2. wget -q --spider [URL]

Este comando:

  • No descarga el contenido de la URL.
  • Verifica si la URL está disponible (comportamiento similar a un «ping» web).
  • --spider: Hace que wget actúe como un «araña web» (web spider), comprobando la existencia del recurso sin descargarlo.
  • -q (quiet): Silencia la salida, aunque seguirá utilizando el código de retorno para indicar éxito o fallo.

📌 Uso típico:
Cuando solo quieres verificar si una URL es accesible o si un enlace está roto, sin descargar el archivo o la página.

Por ejemplo, para comprobar si una página existe:


🔍 Diferencias clave:

Característicawget -q -O - [URL]wget -q --spider [URL]
Descarga contenido✅ Sí, pero lo muestra en pantalla🚫 No, solo verifica existencia
Uso de ancho de bandaAlto (si el archivo es grande)Muy bajo (solo cabeceras HTTP)
PropósitoProcesar o leer contenidoComprobar si el recurso existe
Salida en terminalEl contenido descargadoNinguna (solo códigos de retorno)
Ejemplo de usoObtener HTML o JSON de una APIComprobar enlaces en un script

💡 ¿Cuándo usar cada uno?

  • Usa wget -q -O - cuando necesites el contenido del recurso (por ejemplo, descargar un JSON desde una API para procesarlo).
  • Usa wget -q --spider cuando solo quieras saber si el recurso existe o está disponible sin descargarlo (por ejemplo, verificar enlaces válidos antes de iniciar una descarga masiva).

Aclarando el comportamiento de «--spider«


🔍 ¿Por qué --spider ejecuta la tarea?

Aunque --spider se describe como una opción para «comprobar la existencia de un recurso», en la práctica realiza una solicitud HTTP completa, incluyendo una solicitud GET (por defecto) al servidor, pero sin descargar el cuerpo de la respuesta.

Esto significa:

  • Si la URL apunta a un script en el servidor (como un controlador en PrestaShop para importar pedidos), el código del servidor se ejecutará porque el servidor maneja la solicitud antes de decidir qué parte de la respuesta devolver.
  • La única diferencia es que wget con --spider no descargará el contenido de la respuesta.

Por eso tu tarea se ejecuta si usas --spiderel servidor procesa la solicitud aunque wget no guarde ni muestre la respuesta.


✅ Forma más adecuada para llamar a una URL en una tarea programada

Quieres un cronjob que:

  1. Llame a una URL de tu dominio para ejecutar una tarea.
  2. No genere salida (ni archivos, ni mensajes en pantalla).
  3. Ejecute efectivamente el código (es decir, que el servidor procese la solicitud).

💡 La mejor opción sería:

wget -q -O /dev/null "https://tudominio.com/ruta/a/tu/script.php?token=seguro"

💬 ¿Por qué esta opción es la más adecuada?

  • -qSilencia toda la salida de wget.
  • -O /dev/nullDescarta cualquier salida de la respuesta redirigiéndola a /dev/null, lo que garantiza que:
    • No se generen archivos.
    • No se muestre información en pantalla.
  • La URL se solicita normalmente (igual que cuando visitas la URL en el navegador), asegurando que el código PHP se ejecute en el servidor.

🚀 Ejemplo completo del cronjob:

Edita el cron del usuario adecuado con crontab -e y añade:

* * * * * wget -q -O /dev/null "https://tudominio.com/ruta/a/tu/script.php?token=seguro"

Este ejemplo se ejecutará cada minuto (cambia la periodicidad según tus necesidades).


🔒 Recomendaciones extra de seguridad

Si la URL que dispara la tarea es sensible:

  • Usa un token secreto en la URL (como en el ejemplo) para evitar que cualquiera pueda llamarla.
  • Configura el servidor para que solo acepte llamadas desde direcciones IP de confianza si es posible.
  • Valida el token en el código PHP antes de ejecutar la tarea.

⚡ ¿Por qué no --spider en este caso?

Aunque --spider funciona en tu contexto porque el servidor ejecuta el script, su propósito principal es comprobar la existencia del recurso. Dado que:

  • No necesitas su semántica de «verificación».
  • Prefieres claridad en el código.

Es mejor usar -O /dev/null, que expresa más claramente:
👉 «Llama a esta URL, ejecuta lo que tenga que ejecutar, pero descarta cualquier salida.»

Comentarios

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *