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.
Tabla de contenido
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.