10 Uso do comando cURL com exemplo em tempo real

Publicados: 2015-02-12

cURL é uma ferramenta de linha de comando para obter ou enviar dados usando a sintaxe de URL.

Se você estiver trabalhando como desenvolvedor ou na função de suporte, deve estar ciente do uso do comando cURL para solucionar problemas de aplicativos da web. cURL é um utilitário multiplataforma que pode ser usado no Windows, MAC e UNIX.

A seguir estão algumas das sintaxes mais usadas com um exemplo para ajudá-lo.

Verifique se você pode se conectar ao URL

Se você estiver trabalhando em um sistema UNIX e tentando conectar a URL externa, a primeira coisa que deseja fazer é verificar se pode acessar a URL por meio do curl.

curl yoururl.com

Não lançará nenhuma saída. No entanto, se o servidor não puder se conectar, você receberá erros como não foi possível resolver o host.

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

Salvar saída de URL/URI para arquivo

Se você precisar salvar o conteúdo do URL ou URI em um arquivo específico, poderá usar a seguinte sintaxe

 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]#

O exemplo acima salvará todo o conteúdo de gf.dev para /tmp/gf.html

Mostrar cabeçalho de solicitação e resposta

Se você está tendo problemas e gostaria de validar, está recebendo a solicitação e o cabeçalho de resposta 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 <

Baixe a uma taxa limite

Se você está trabalhando em otimização e gostaria de ver quanto tempo leva para baixar em uma determinada velocidade, você pode:-

 curl –-limit-rate 2000B

Ex:

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

Usando um proxy para conectar

Muito útil se você estiver trabalhando no servidor DMZ onde precisa se conectar ao mundo externo usando um proxy.

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

URL de teste com cabeçalho de injeção

Você pode usar curl inserindo um cabeçalho com seus dados para testar ou solucionar o problema específico. Vamos ver o exemplo a seguir para solicitar com Content-Type.

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

Ao fazer acima, você está pedindo ao curl para passar o Content-Type como application/json no cabeçalho da solicitação.

Exibir apenas cabeçalho de resposta

Se você estiver solucionando problemas e quiser verificar rapidamente o cabeçalho de resposta, poderá usar a sintaxe a seguir.

 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 o URL HTTPS/SSL e ignore qualquer erro de certificado SSL

Quando você tenta acessar a URL segura do certificado SSL/TLS e se isso estiver com o certificado errado ou o CN não corresponder, você receberá o seguinte erro.

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

Boas notícias, você pode instruir o cURL a ignorar o erro de certificação com o sinalizador --insecure .

 curl --insecure https://yoururl.com

Conecte-se usando um protocolo específico (SSL/TLS)

Muito útil para testar se uma URL específica pode fazer handshake sobre um protocolo SSL/TLS específico.

Para conectar usando SSL v3

 curl --sslv3 https://yoururl.com

e para diferentes versões 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

Baixar arquivo do servidor FTP

Você também pode usar curl para baixar o arquivo especificando seu nome de usuário e senha.

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

Você sempre pode usar “ -v ” com qualquer sintaxe para imprimir no modo detalhado.

Usando o cabeçalho do host

O cabeçalho do host é útil para testar a URL de destino sobre IP quando o conteúdo solicitado está disponível apenas quando o cabeçalho do host corresponde. Ou, se você quiser testar o aplicativo usando o IP/URL do balanceador de carga.

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

Que tal usar cURL online?

Sim, isso é possível com as seguintes ferramentas. Você pode executar cURL remotamente.

Online CURL – uma ferramenta leve para buscar o URL online e a possibilidade de adicionar as seguintes opções.

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

construtor de linha de comando cURL – este é diferente. Ele ajuda você a construir o comando curl onde você pode inserir informações em uma interface de usuário agradável e, na parte inferior, você obterá o comando cURL.

construtor de cachos

cURL é um utilitário útil para solucionar um problema de conectividade em tempo real, e espero que o acima o ajude. Se você está procurando aprender mais, então eu recomendaria o curso online Linux Command Line Basics.