Generalidades
cURL es un software gratuito que te permite transferir entre servidores. El proyecto cURL ofrece dos subproyectos:
- curl — Esta es la herramienta de línea de comandos que puedes ejecutar en tu computador local o en tu servidor de DreamHost. Ofrece varias opciones de comando para que envíes y recibas datos. curl usa 'libcurl'.
- libcurl — Esta es una biblioteca que admite muchos protocolos diferentes. Es muy común que el lenguaje de programación PHP use esta biblioteca. Mira el siguiente artículo para más detalles:
Este artículo solo muestra cómo usar la herramienta de línea de comandos.
Ejemplos de cURL
Los siguientes ejemplos deben ejecutarse en una aplicación de terminal SSH. Consulta el siguiente artículo para obtener más información sobre cómo iniciar sesión en una terminal.
Ver la versión de curl instalada
A continuación se muestra cómo ver la versión de curl que estás utilizando. Esto puede cambiar dependiendo de si estás ejecutando comandos en tu servidor de DreamHost o en tu computador local.
[server]$ curl --version curl 7.35.0 (x86_64-pc-linux-gnu) libcurl/7.35.0 OpenSSL/1.0.1f zlib/1.2.8 libidn/1.28 librtmp/2.3 Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtmp rtsp smtp smtps telnet tftp Features: AsynchDNS GSS-Negotiate IDN IPv6 Largefile NTLM NTLM_WB SSL libz TLS-SRP
DreamHost corre la versión 7.58.0 en servidores que corren Ubuntu 18 (Bionic). Los servidores que corren Debian Stretch ejecutan 7.52.1.
Devuelve el código de una página web específica
Esto devolverá la codificación de origen de una página específica.
[server]$ curl http://example.com
Guarda el código de una página web específica en un archivo nuevo
Si solo ejecutas curl example.com, el código se muestra en tu terminal. Para guardarlo en un nuevo nombre de archivo, usa el indicador -o. Esto usa el carácter en minúscula 'o'.
La sintaxis sería curl -o <nuevo-archivo-con código guardado> <url-del-sitio-web>
[server]$ curl -o example.com-CODE http://example.com
Guarda el código de una página web específica en un archivo con el mismo nombre
Si no deseas guardar en un nuevo nombre de archivo, puedes guardarlo en un archivo que sea igual a la página a la que estás accediendo. Por ejemplo, si estás accediendo a example.com/index.html, esto creará un nuevo archivo titulado index.html con el código guardado. Usa el indicador -O con el carácter 'O' en mayúscula.
La sintaxis sería curl -O <website-url>
[server]$ curl -O https://example.com/index.html
Probar una conexión a un sitio remoto
En algún momento, puedes notar que tu sitio no se está comunicando con otro sitio web. Un ejemplo puede ser cuando intentas descargar un plugin de WordPress y ves que falla.
Los siguientes pasos te ayudan a probar tu conexión a WordPress:
- Inicia sesión en tu servidor a través de SSH.
- Corre el siguiente comando dentro del directorio de tu dominio:
[server]$ curl -v https://wordpress.org/ * About to connect() to wordpress.org port 443 (#0) * Trying 66.155.40.250... connected * Connected to wordpress.org (66.155.40.250) port 443 (#0) * successfully set certificate verify locations:
Este primero responde con los datos de conexión, luego el código completo de la página que ingresaste.
Lo anterior muestra una conexión exitosa. Si falla, verás la falla en la respuesta.
Comprobación de encabezados
También puedes usar cURL para verificar los encabezados de un sitio web usando el indicador -I:
[server]$ curl -I http://example.com/index.php HTTP/1.1 200 OK Date: Mon, 01 March 2024 20:55:09 GMT Server: Apache Last-Modified: Sun, 24 Sep 2023 22:45:30 GMT ETag: "2f3-5387d8a979b59" Accept-Ranges: bytes Content-Length: 755 Vary: Accept-Encoding Content-Type: text/html
Esto devuelve una lista predeterminada de encabezados. Si deseas que no se muestre un encabezado específico, debes especificarlo manualmente utilizando el indicador -H. Por ejemplo, corre lo siguiente para verificar si gzip está habilitado:
[server]$ curl -I -H 'Accept-Encoding: gzip,deflate' http://example.com/index.php HTTP/1.1 200 OK Date: Mon, 01 March 2024 20:55:09 GMT Server: Apache Last-Modified: Sun, 24 Sep 2023 22:45:30 GMT ETag: "2f3-5387d8a979b59" Accept-Ranges: bytes Vary: Accept-Encoding Content-Encoding: gzip Content-Length: 428 Content-Type: text/html
Si gzip está habilitado, verás esta línea en el resultado:
Content-Encoding: gzip
Solución de problemas
Movido permanentemente
Es posible que cuando ejecutes curl en la URL de un sitio web, veas una respuesta Moved permanently. Por ejemplo:
[server]$ curl http://www.example.com <html> <title>301 Moved Permanently</title> </head><body> <h1>Moved Permanently</h1> <p>The document has moved <a href="http://example.com">here</a>.</p> </body></html>
Esto generalmente significa que la URL usa (o no) el subdominio 'www' antes. Intenta nuevamente con (o sin) www.
De lo contrario, puedes usar el indicador -L para redirigirte de todos modos.
[server]$ curl -L http://www.example.com