A picture with white and blue lettering on it

Tanto si haces scraping web como si usas una API, todo se reduce a enviar solicitudes HTTP y recibir respuestas. Cuanto más específica sea tu solicitud, más precisos serán los datos que obtendrás. Por eso necesitas headers. Se escriben como pares clave-valor separados por dos puntos y forman parte de una respuesta HTTP que aporta detalles adicionales, como el tipo de contenido o las instrucciones de caché. Los headers te ayudan a obtener los detalles que necesitas o a filtrar respuestas para no ver información irrelevante. En este artículo aprenderemos los fundamentos prácticos para enviar headers HTTP con cURL y cómo pueden ayudarte en tus tareas.

¿Por qué cURL?

Ahora que sabes qué son los headers HTTP, hablemos brevemente de cURL. Es una herramienta de línea de comandos fácil de usar para transferir datos hacia el servidor de destino y de vuelta a tu computadora, por lo que resulta muy adecuada para enviar headers. Entre sus ventajas están las siguientes:

  • Es ligera
  • Admite muchos protocolos, incluidos HTTP(S), SMTP, FTP y más
  • No requiere bibliotecas adicionales
  • Es compatible con los sistemas operativos más usados, como Windows, Linux y macOS
  • Es gratuita y a menudo viene preinstalada
  • Tiene documentación detallada y una gran comunidad de usuarios, así que si tienes dificultades, encontrarás una solución rápidamente.

Por eso cURL se usa tanto, aunque existan muchas otras herramientas que también permiten enviar headers HTTP.  

Cuándo enviar headers HTTP

Ahora que ya conoces las herramientas, veamos los casos de uso para enviar headers HTTP.

  • Autenticación y autorización

Cuando llamas a una API o solicitas algún contenido que requiere autorización, puede que necesites proporcionar un token o algo similar para obtener datos. Enviar el Authorization header con cURL le dará al servidor la información necesaria para autorizar el acceso. Debes usar la opción -H en tu solicitud. A continuación puedes ver un ejemplo de una solicitud cURL a httpbin.org, un servicio especial de solicitudes y respuestas. 

Example of sending the Authorization header
  • Negociación de contenido

Cuando envías contenido en un formato específico como JSON o XML y necesitas que un servidor lo interprete correctamente, debes incluir el Content-type header HTTP en tu solicitud. El servidor de destino sabrá cómo procesar el contenido para minimizar la posibilidad de errores o retrasos.

Example of sending the Content-type header
  • CORS (Cross-origin resource sharing)

Una aplicación puede conceder acceso a servicios o datos según quién intenta obtenerlos. En estas situaciones, cuando el origen de una solicitud cumple un papel crucial, puedes especificar el origen en un Origin header HTTP. No lo confundas con la autenticación; estos casos de uso son similares y a menudo aparecen juntos, pero son distintos.

Example of sending the Origin header
  • Especificar user-agent

El tipo de cliente, ya sea una app móvil o web, una API, etc., también influye en la respuesta que obtienes. Puedes definir el tipo de cliente en tu solicitud y obtener la respuesta necesaria.

Example of sending the User-agent header
  • Ajustar la configuración de control de caché

Gestionar la configuración de caché es imprescindible en muchas situaciones, y los encabezados HTTP pueden ayudarte con eso. Solo necesitas incluir un Cache-control header en tu solicitud y especificar su valor. Las respuestas se almacenarán en caché según la configuración que hayas definido.

Example of sending the Cache-Control header
  • Enviar solicitudes personalizadas

A veces, las apps que usas requieren encabezados personalizados para procesar tu solicitud o realizar las acciones que quieres. En este caso, incluir esos encabezados en tus solicitudes es necesario. A veces, esos encabezados son obligatorios para proteger contra vulnerabilidades y ataques. Debes leer la documentación antes de usar una app para saber qué encabezados personalizados están disponibles y son necesarios.

Example of sending the custom header
  • Enviar solicitudes condicionales

Debes usar encabezados condicionales si solo necesitas ciertos datos que coinciden con condiciones específicas. Esos encabezados ahorran tiempo al obtener solo los datos requeridos y ahorran ancho de banda porque no desperdicias GB cargando información innecesaria. If-Match o If-Modified-Since son ejemplos de esos encabezados. 

Example of sending the If-Match header

cURL: otras funciones 

  • Cómo enviar varios encabezados

A veces puede que necesites enviar varios headers para una misma solicitud. Si ocurre, puedes listarlos todos usando el mismo comando cURL. Recuerda usar la opción    H cada vez que introduzcas un nuevo par clave-valor.

Example of sending multiple headers
  • Cómo comprobar los encabezados de respuesta

Ver los headers de respuesta del servidor de destino es útil para solucionar problemas y supervisar el rendimiento. Proporcionan información sobre cuánto tardó en procesarse tu solicitud o si hubo problemas de autenticación. Puedes verlos usando la opción -I o –head. Ambas mostrarán solo los headers. 

Example of checking response headers

Si quieres ver tanto los encabezados como el contenido, usa las -i o –include.

Example of checking response headers and content
  • Cómo enviar encabezados vacíos

Algunas APIs requieren headers específicos en la solicitud, aunque esos headers no tengan valores. A veces, un header vacío hace que el header actúe de una forma determinada. Los desarrolladores también los usan para ver cómo reacciona un servidor ante esa situación y comprobar que no haya brechas disponibles para atacantes. Para enviar un header así, proporciona su nombre seguido de un punto y coma, sin valor.

Example of sending empty headers
  • Cómo eliminar un encabezado

cURL añade algunos headers de forma predeterminada, como el header User-Agent. Si no lo necesitas y quieres eliminarlo, escribe el nombre del header seguido de dos puntos y no proporciones ningún valor.

Example of removing a header
  • Cómo activar el modo detallado

Esta función se usa cuando necesitas entender cómo procesa el servidor tu solicitud. Cuando este modo está activado, cURL te ofrece muchos detalles, incluidos datos de la solicitud y la respuesta, el método HTTP, la versión, el código de estado, información sobre el proceso de conexión y otros datos. Es útil para depurar porque muestra información de cada paso de la comunicación. Puedes activarlo usando la opción -v o –verbose.

Activating the verbose mode
  • Cómo guardar encabezados

La depuración y la supervisión del rendimiento a menudo requieren guardar headers para analizarlos y conservar registros. Por eso puedes guardar headers en un archivo y usarlos más tarde. Para hacerlo:

  1. Usa la opción -d o –dump-header.
  2. Si también necesitas guardar el contenido de la solicitud, añade la opción -o o –output.
  3. Después de los comandos, no olvides especificar el nombre del archivo donde tu computadora debe guardar los headers.
Saving HTTP headers

Nota: en general, los headers HTTP no distinguen entre mayúsculas y minúsculas. Sin embargo, a veces las APIs esperan headers específicos y solo funcionarán si usas las mayúsculas y minúsculas correctas. Por eso necesitas revisar cuidadosamente la documentación antes de enviar headers.

Proxies para enviar headers HTTP con cURL

Cuando haces scraping web o realizas otras actividades que requieren enviar muchas solicitudes, puedes encontrarte con problemas como límites de solicitudes o bloqueos geográficos. En este caso, los proxies son tus aliados para garantizar un acceso estable en todo el mundo. Por ejemplo, DataImpulse ofrece proxies de origen ético que son fáciles de integrar y usar con otras herramientas, incluido cURL. Así puedes enviar tantas solicitudes como necesites sin chocar con restricciones.

Para terminar

A veces no necesitas herramientas especiales ni caras para obtener datos. cURL está disponible gratis y te permite especificar tus solicitudes para obtener información de forma rápida y sin detalles innecesarios. Para que el proceso sea aún más eficaz, puedes combinar cURL con proxies de DataImpulse. Ofrecemos proxies con tiempo de respuesta de 1 segundo en un modelo de precios de pago por uso económico. Haz clic en el botón “Pruébalo ahora” en la esquina superior derecha de la pantalla o contáctanos en [email protected]

Share article: