10 Uso del comando cURL con ejemplo en tiempo real

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.

[[email protected] tmp]# curl helloitdoesntexist.com
curl: (6) Could not resolve host: helloitdoesntexist.com; Unknown error
[[email protected] 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:

[[email protected] 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
[[email protected] 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:

[[email protected] tmp]# curl -v https://kirukiru.es.com
* About to connect() to kirukiru.es.com port 443 (#0)
*   Trying 104.25.134.107...
* Connected to kirukiru.es.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: kirukiru.es.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=.kirukiru.es.com; HttpOnly; Secure
< Vary: Accept-Encoding
< Link: <https://kirukiru.es.com/wp-json/>; rel="https://api.w.org/"
< Link: <https://kirukiru.es.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

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.

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:

[[email protected] 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

[[email protected] 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.

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.

cURL es una utilidad útil para solucionar un problema de conectividad en tiempo real, y espero que lo anterior te ayude. Si está buscando aprender más, entonces le recomendaría Conceptos básicos de la línea de comandos de Linux curso por Internet.