Cómo comenzar a usar Curl y por qué: una introducción práctica

Ya sea que esté probando la salida de una API antes de implementarla en producción o simplemente obteniendo una respuesta de un sitio web (por ejemplo, para verificar que no esté inactiva), Curl es prácticamente omnipresente.

Como científico de datos, he tenido que usarlo de vez en cuando. Sin embargo, la mayoría de las veces terminé reemplazando los parámetros de un comando curl copiado y pegado que recorría el canal Slack de mi equipo.

Decidí que necesitaba comprender mejor esta poderosa herramienta si quería usarla en todo su potencial, y ahora estoy aquí para compartir algunas de las cosas más interesantes que encontré en este tutorial de curl.

Si tiene algún consejo o truco que le gustaría agregar, hágalo en los comentarios, ya que mi comprensión de esta herramienta aún se encuentra en sus primeras etapas.

Curl: ¿Para qué sirve?

Curl es una herramienta de línea de comandos que nos permite realizar solicitudes HTTP desde el shell. También cubre muchos otros protocolos, como FTP, aunque van más allá del alcance de este tutorial.

Su nombre significa "URL del cliente" y fue desarrollado por el desarrollador sueco Daniel Stenberg. Es un proyecto de código abierto, y su código se puede encontrar aquí, por si te apetece contribuir.

Puede invocarlo desde su terminal favorito, y generalmente viene preinstalado en sistemas operativos basados ​​en Linux. De lo contrario, normalmente se puede descargar a través de apt-get en Linux y prepararlo en Mac.

Llamar a un método GET

En su forma más básica, un comando curl se verá así:

curl //www.dataden.tech

El comportamiento predeterminado de curl es invocar un método HTTP GET en la URL dada. De esta manera, la salida del programa para ese comando será el cuerpo completo de la respuesta HTTP (en este caso, HTML) que el sitio devuelve en un GET, que se escribirá como se indica en stdout .

Si desea leer una respuesta sin salir del shell, le recomiendo al menos conectarla a un comando less , para poder desplazarse fácilmente por la salida.

Muchas veces desearemos dirigir el contenido de la respuesta a un archivo. Esto se hace con el argumento -o , así:

curl -o output.html www.dataden.tech

que es equivalente a:

curl www.dataden.tech > output.html

Opcionalmente, puede especificar la URL del sitio al que desea llamar a curl con un argumento -s , como este:

curl -s //www.dataden.tech

permitiéndole cambiar el orden de sus argumentos.

También puede usar –next para especificar más de una URL, aunque el documento oficial aconseja llamar a curl en cada URL con un comando diferente.

Hacer un POST a una URL

A veces querrá probar si una API está funcionando correctamente y, por lo general, será necesario enviarle argumentos.

Por lo general, haremos esto a través del método POST, pasando algo de JSON con todos los parámetros requeridos. Hay muchas formas de hacer esto con curl.

Puede pasar los valores de sus argumentos de esta manera:

curl --data "name=John&surname=Doe" //www.dataden.tech

O como un JSON normal:

curl --data '{"name":"John","surname":"Doe"}' \//www.dataden.tech

Usar –data es equivalente a usar -d, y ambos harán que el método cambie a POST automáticamente. Sin embargo, también podemos usar el indicador -X ( –request ) para especificar qué método queremos invocar:

curl -X "POST" \-d "name=John&surname=Doe" //www.example.com

Obteniendo los encabezados del sitio

A veces, solo necesitamos ver rápidamente si el sitio todavía está activo, sin querer cargar la respuesta completa, potencialmente pesada. Otras veces, los encabezados almacenan configuraciones importantes.

Curl también aborda esos dos casos de uso. Podemos usar el parámetro –include ( -i ) para incluir los encabezados, y –head ( -I -eso es 'i'- mayúscula) para incluir solo los encabezados (llamando al método HEAD).

Configuración de su valor de agente de usuario

Ahora que he cubierto los conceptos básicos, permítame explicarle algunas de las mejores cosas que he descubierto que podemos hacer con curl.

El argumento de agente de usuario le permite especificar qué versiones de dispositivo y navegador está utilizando, en caso de que el sitio se muestre de manera diferente.

Con esto, podría ver la versión móvil de un sitio desde su computadora portátil, o viceversa.

Desde el punto de vista de la seguridad, esto probablemente plantea algunos problemas. No sabía lo fácil que era pretender estar usando un dispositivo diferente (sin siquiera usar una máquina virtual) hasta ahora, y trabajando en Prevención de Fraudes puedo ver por qué esto podría ser un problema.

Dicho esto, siempre que lo use para siempre, esta es una manera increíble de ver cómo se ve un sitio web desde una tableta, un dispositivo móvil o una computadora portátil, por nombrar algunos.

Aquí hay un ejemplo, directamente de la documentación oficial (aunque las listas de agentes de usuario están disponibles en línea).

curl --user-agent "Mozilla/4.73 [en] (X11; U; Linux 2.2.15 i686)" www.example.com

Programando una conexión con Curl

Otra razón por la que comencé a aprender más sobre curl fue que quería ver cuánto tiempo exactamente tardaba mi sitio web en responder.

Aunque la documentación básica no lo cubre, un poco de búsqueda en Google descubrió este comando, que encontré muy útil:

curl -w "%{time_total}\n" -o /dev/null -s www.example.com

Esto simplemente generará el tiempo total que tomó obtener la respuesta del dominio dado.

De manera más general, el argumento -w (–write-out) toma una cadena de formato especial y llena las palabras clave reservadas con diferentes propiedades de la respuesta, de una manera formateada. Todas las palabras clave y sus respectivos valores están disponibles en la página de manual del comando.

Otras lecturas

Aquí hay algunos enlaces que pueden resultarle interesantes, en caso de que desee obtener más información sobre este amplio tema:

  • Lista de agentes de usuario Una compilación de argumentos de agente de usuario para diferentes dispositivos y navegadores.
  • Documentación oficial de Curl.
  • Página de manual de Curl.

Para concluir

Espero que haya encontrado útil esta introducción y que deje este tutorial conociendo al menos los conceptos básicos de este conveniente comando.

Como dije antes, todavía estoy aprendiendo y agradeceré cualquier otro conocimiento interesante sobre el uso del programa. Lo mismo ocurre con cualquier comentario sobre lo que he escrito hasta ahora.

Si he cometido algún error o hay alguna parte que crea que podría haber redactado con más claridad, hágamelo saber.

Espero volver a verte pronto, ¡feliz codificación!

Sígueme en Medium y Twitter para estar al día con mis tutoriales, consejos y artículos. Considere compartir este artículo con un amigo desarrollador web si le gustó (o como una forma pasiva agresiva de decirle que aprenda curl).

Publicado originalmente en www.dataden.tech el 7 de octubre de 2018.