10 Uso del comando cURL con ejemplo en tiempo real

Publicado: 2015-02-12

cURL es una herramienta de línea de comandos para obtener o enviar datos mediante la sintaxis de URL.

Si trabaja como desarrollador o en la función de soporte, debe conocer el uso del comando cURL para solucionar problemas de aplicaciones web. cURL es una utilidad multiplataforma que puede usar en Windows, MAC y UNIX.

Las siguientes son algunas de las sintaxis más utilizadas con un ejemplo para ayudarlo.

Verifica si puedes conectarte a la URL

Si está trabajando en un sistema UNIX e intenta conectar la URL externa, lo primero que desea hacer es verificar si puede acceder a la URL a través de curl.

curl yoururl.com

No arrojará ninguna salida. Sin embargo, si el servidor no puede conectarse, obtendrá errores como no pudo resolver el host.

 [root@gf-lab tmp]# curl helloitdoesntexist.com curl: (6) Could not resolve host: helloitdoesntexist.com; Unknown error [root@gf-lab tmp]#

Guardar la salida de URL/URI en un archivo

Si tiene que guardar el contenido de la URL o URI en un archivo específico, puede usar la siguiente sintaxis

 curl https://yoururl.com > yoururl.html

ex:

 [root@gf-lab tmp]# curl https://gf.dev > /tmp/gfhtml % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 18557 0 18557 0 0 72565 0 --:--:-- --:--:-- --:--:-- 72772 [root@gf-lab tmp]#

El ejemplo anterior guardará todos los contenidos de gf.dev a /tmp/gf.html

Mostrar encabezado de solicitud y respuesta

Si tiene problemas y desea validar, obtendrá la solicitud y el encabezado de respuesta esperados.

 curl -v yoururl.com

Ex:

 [root@gf-lab tmp]# curl -v https://geekflare.com * About to connect() to geekflare.com port 443 (#0) * Trying 104.25.134.107... * Connected to geekflare.com (104.25.134.107) port 443 (#0) * Initializing NSS with certpath: sql:/etc/pki/nssdb * CAfile: /etc/pki/tls/certs/ca-bundle.crt CApath: none * SSL connection using TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 * Server certificate: * subject: CN=ssl371609.cloudflaressl.com,OU=PositiveSSL Multi-Domain,OU=Domain Control Validated * start date: Nov 07 00:00:00 2019 GMT * expire date: May 15 23:59:59 2020 GMT * common name: ssl371609.cloudflaressl.com * issuer: CN=COMODO ECC Domain Validation Secure Server CA 2,O=COMODO CA Limited,L=Salford,ST=Greater Manchester,C=GB > GET / HTTP/1.1 > User-Agent: curl/7.29.0 > Host: geekflare.com > Accept: */* > < HTTP/1.1 200 OK < Date: Sat, 09 Nov 2019 19:41:37 GMT < Content-Type: text/html; charset=UTF-8 < Transfer-Encoding: chunked < Connection: keep-alive < Set-Cookie: __cfduid=d2ce6cd359ebc0b6eb5ff3a454ed042021573328497; expires=Sun, 08-Nov-20 19:41:37 GMT; path=/; domain=.geekflare.com; HttpOnly; Secure < Vary: Accept-Encoding < Link: <https://geekflare.com/wp-json/>; rel="https://api.w.org/" < Link: <https://geekflare.com/>; rel=shortlink < X-SRCache-Fetch-Status: HIT < X-SRCache-Store-Status: BYPASS < X-Frame-Options: SAMEORIGIN < X-Powered-By: EasyEngine v4.0.12 < Via: 1.1 google < CF-Cache-Status: DYNAMIC < Strict-Transport-Security: max-age=15552000; preload < X-Content-Type-Options: nosniff < Alt-Svc: h3-23=":443"; ma=86400 < Expect-CT: max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct" < Server: cloudflare < CF-RAY: 533243e4bcd4bbf4-LHR <

Descargar a una tarifa límite

Si está trabajando en la optimización y desea ver cuánto tiempo se tarda en descargar a una velocidad determinada, puede:

 curl –-limit-rate 2000B

Ex:

 curl –-limit-rate 2000B https://gf.dev

Usar un proxy para conectarse

Muy útil si está trabajando en el servidor DMZ donde necesita conectarse al mundo externo mediante un proxy.

 curl --proxy yourproxy:port https://yoururl.com

URL de prueba con encabezado de inyección

Puede usar curl insertando un encabezado con sus datos para probar o solucionar el problema en particular. Veamos el siguiente ejemplo para solicitar con Content-Type.

 curl --header 'Content-Type: application/json' http://yoururl.com

Al hacer lo anterior, le está pidiendo a curl que pase Content-Type como application/json en el encabezado de la solicitud.

Mostrar solo encabezado de respuesta

Si está solucionando algunos problemas y desea verificar rápidamente el encabezado de respuesta, puede usar la siguiente sintaxis.

 curl --head http://yoururl.com

Ex:

 [root@gf-lab tmp]# curl --head https://chandan.io HTTP/1.1 200 OK Date: Sat, 09 Nov 2019 19:51:23 GMT Content-Type: text/html Connection: keep-alive Set-Cookie: __cfduid=d3cb2c7b8e566ad99c870b0af12b0f1eb1573329083; expires=Sun, 08-Nov-20 19:51:23 GMT; path=/; domain=.chandan.io; HttpOnly X-GUploader-UploadID: AEnB2Uo96JhvJmR2zYUL-Ndh2ta3UD_ykQAB5C7O8cjZQhCf-GxHQ0MsodSzRnl3guSN3ywAYNjtWcPXfwDXjLg3bQ-P5vQMOA Expires: Sat, 09 Nov 2019 20:51:23 GMT Cache-Control: public, max-age=3600 Last-Modified: Mon, 06 Aug 2018 10:45:47 GMT x-goog-generation: 1533552347482034 x-goog-metageneration: 1 x-goog-stored-content-encoding: identity x-goog-stored-content-length: 24620 x-goog-hash: crc32c=DpDPAQ== x-goog-hash: md5=cIP/3rusdUx12Zla1kf1yA== x-goog-storage-class: MULTI_REGIONAL Accept-Ranges: bytes CF-Cache-Status: DYNAMIC Expect-CT: max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct" Server: cloudflare CF-RAY: 53325234dc2fbb9a-LHR [root@gf-lab tmp]#

Conecte la URL HTTPS/SSL e ignore cualquier error de certificado SSL

Cuando intente acceder a la URL segura del certificado SSL/TLS y si tiene el certificado incorrecto o el CN ​​no coincide, obtendrá el siguiente error.

 curl: (51) Unable to communicate securely with peer: requested domain name does not match the server's certificate.

Buenas noticias, puede indicarle a cURL que ignore el error de certificado con el indicador --insecure .

 curl --insecure https://yoururl.com

Conectarse usando un protocolo específico (SSL/TLS)

Muy útil para probar si una URL en particular puede comunicarse con un protocolo SSL/TLS específico.

Para conectarse usando SSL v3

 curl --sslv3 https://yoururl.com

y para diferentes versiones de TLS

 curl --tlsv1 https://example.com curl --tlsv1.0 https://example.com curl --tlsv1.1 https://example.com curl --tlsv1.2 https://example.com curl --tlsv1.3 https://example.com

Descargar archivo del servidor FTP

También puede usar curl para descargar el archivo especificando su nombre de usuario y contraseña.

 curl -u user:password -O ftp://ftpurl/style.css

Siempre puede usar “ -v ” con cualquier sintaxis para imprimir en modo detallado.

Uso del encabezado de host

El encabezado del host es útil para probar la URL de destino sobre IP cuando el contenido solicitado solo está disponible cuando el encabezado del host coincide. O bien, si desea probar la aplicación utilizando la IP/URL del equilibrador de carga.

 curl --header 'Host: targetapplication.com' https://192.0.0.1:8080/

¿Qué tal usar cURL en línea?

Sí, eso es posible con las siguientes herramientas. Puede ejecutar cURL de forma remota.

CURL en línea: una herramienta liviana para obtener la URL en línea y la posibilidad de agregar las siguientes opciones.

 --connect-timeout --cookie --data --header --head --location --max-time --proxy --request --user --url --user-agent

Generador de línea de comando cURL: este es diferente. Le ayuda a crear el comando curl donde puede ingresar información en una interfaz de usuario agradable, y en la parte inferior, obtendrá el comando cURL.

constructor de rizos

cURL es una utilidad útil para solucionar un problema de conectividad en tiempo real, y espero que lo anterior te ayude. Si desea obtener más información, le recomendaría el curso en línea Conceptos básicos de la línea de comandos de Linux.