Um guia extenso que explica o uso do comando curl para buscar páginas da web e baixar arquivos direto do seu terminal
O ondulação
command é mais um utilitário de linha de comando interessante que o Linux tem a oferecer. ondulação
comando permite ao usuário buscar arquivos do servidor.
ondulação
é uma escolha popular dos desenvolvedores de aplicativos e usuários frequentes do Linux devido ao seu suporte para uma série de protocolos como RTMP, RTSP, SCP, SFTP, SMB, SMBS, SMTP, SMTPS, TELNET, HTTP, HTTPS, FTP, FTPS, IMAP, IMAPS, DICT, FILE, GOPHER, LDAP, LDAPS, POP3, POP3S, etc.
ondulação
comando faz muito mais do que apenas buscar as páginas da web para você. Saber as opções disponíveis com este comando o torna mais versátil para seu uso. Vamos mergulhar no tutorial para obter uma boa compreensão sobre o uso do ondulação
comando usando alguns exemplos breves.
Instalação
Antes de usar o ondulação
comando, verifique se ele já está instalado em seu sistema. Use o comando curl - versão
para verificar se ondulação
está instalado.
No caso de ondulação
não está instalado, use as seguintes etapas.
Em sistemas baseados em Ubuntu e Debian, usar:
sudo apt-get update
sudo apt-get install curl
Em distros RHEL, CentOs e Fedora, usar:
sudo yum install curl
Agora use o curl - versão
comando para se certificar de que está instalado corretamente.
curl - versão
Saída:
curl 7.58.0 (x86_64-pc-linux-gnu) libcurl / 7.58.0 OpenSSL / 1.1.1 zlib / 1.2.11 libidn2 / 2.0.4 libpsl / 0.19.1 (+ libidn2 / 2.0.4) nghttp2 / 1.30. 0 librtmp / 2.3 Data de lançamento: 24/01/2018 Protocolos: arquivo dict ftp ftps gopher http https imap imaps ldap ldap ldaps pop3 pop3s rtmp rtsp smb smbs smtp smtps telnet tftp Características: AsynchDNS IDN IPv6 Largefile GSS-APIberos NTLM SSL NTEGO NT libz TLS-SRP HTTP2 UnixSockets HTTPS-proxy PSL gaurav @ ubuntu: ~ $
Agora estamos prontos para usar o ondulação
comando.
Opções disponíveis com o comando CURL
Vamos primeiro dar uma olhada em algumas das opções proeminentes disponíveis com o ondulação
comando.
Opção | Descrição |
-você | para baixar arquivos de um servidor FTP |
-C | para retomar um download interrompido |
-o | para salvar o resultado do ondulação comando com um nome de arquivo predefinido |
-EU | para obter os cabeçalhos HTTP de um URL definido |
-O | para salvar o resultado do ondulação comando com o nome do arquivo original |
--libcurl | para produzir o código-fonte C que usa libcurl para a opção especificada |
-x | usar um proxy para acessar o URL |
-# | para exibir a barra de progresso para mostrar o status do download |
Recuperando uma página da web usando CURL
O ondulação
comando, quando usado sem qualquer opção, busca o conteúdo do URL especificado no comando.
Sintaxe:
curl [URL]
Exemplo:
curl //allthings.how
Saída:
gaurav @ ubuntu: ~ $ curl //allthings.how html {overflow-x: hidden! important} html.i-amphtml-fie {height: 100%! important; width: 100%! important} html: not ([amp4ads ]), html: not ([amp4ads]) body {height: auto! important} html: not ([amp4ads]) body {margin: 0! important} body {-webkit-text-size-ajustar: 100%; - moz-texto-tamanho-ajuste: 100%; - ms-texto-ajuste-tamanho: 100%; texto-ajuste-tamanho: 100%} html.i-amphtml-singledoc.i-amphtml-embedded {-ms-touch -action: pan-y; touch-action: pan-y} html.i-amphtml-fie> body, html.i-amphtml-singledoc> body {overflow: visible! important} html.i-amphtml-fie: not (.i-amphtml-inabox)> body, html.i-amphtml-singledoc: not (.i-amphtml-inabox)> body {position: relative! important} html.i-amphtml-webview> body {overflow-x : oculto! importante; overflow-y: visible! important; min-height: 100vh! important} html.i-amphtml-ios-embed-legacy> body {overflow-x: hidden! important; overflow-y: auto! important ; position: absolute! important} html.i-amphtml-ios-embed {overflow-y: auto! important; position: static} # i-amphtml-wrapper {overflow-x: hidden! important; over flow-y: auto! important; position: absoluto! important; top: 0! important; left: 0! important; right: 0! important; bottom: 0! important; margin: 0! important; display: block! important} html.i-amphtml-ios-embed.i-amphtml-ios-overscroll, html.i-amphtml-ios-embed.i-amphtml-ios-overscroll> # i-amphtml-wrapper {-webkit-overflow-scrolling: touch! important} # i-amphtml-wrapper> body {position: relative! important; border-top: 1px solid transparent! important} # i-amphtml-wrapper + body {visibility: visible} # i-amphtml-wrapper + body .i-amphtml-lightbox-element, # i-amphtml-wrapper + body [i-amphtml-lightbox] {visibility: hidden} # i-amphtml-wrapper + body [i-amphtml-lightbox] .i-amphtml-lightbox -elemento {visibilidade: visível} # i-amphtml-wrapper.i-amphtml-scroll-disabled, .i-amphtml-scroll-disabled {overflow-x: hidden! important; overflow-y: hidden! important} amp-instagram {padding: 54px 0px 0px! important; background-color: #fff} iframe amp-iframe {box-sizing: border-box! important} [amp-access] [amp-access-hide] {display: none} [assinaturas -dialog], corpo: não (.i-amphtml-s ubs-ready) [subscriptions-action], body: not (.i-amphtml-subs-ready) [subscriptions-section] {display: none! important} amp-experiment, amp-live-list> [update] {display : none} .i-amphtml-jank-meter {position: fixed; background-color: rgba (232,72,95,0.5); bottom: 0; right: 0; color: #fff; font-size: 16px; z-index: 1000; preenchimento: 5px} amp-list [resizable-children]>. i-amphtml-loading-container.amp-hidden {display: none! important} amp-list [fetch-error], amp-list [carregar mais] [carregar mais botão], amp-list [carregar mais] [carregar mais], amp-list [carregar mais] [carregar mais com falha], amp-list [carregar -mais] [load-more-loading] {display: none} amp-list [diffable] div [role = list] {display: block} amp-story-page, amp-story [standalone] {min-height: 1px ! importante; exibir: bloquear! importante; altura: 100%! importante; margem: 0! importante; preenchimento: 0! importante; estouro: oculto! importante; largura: 100%! importante} amp-story [independente] {plano de fundo- color: # 202125! important; position: relative! important} amp-story-page {background-color: # 757575} amp-story .amp-active> div, amp-story .i-amphtm l-loader-background {display: none! important} amp-story-page: not (: first-of-type): not ([distance]): not ([active]) {transform: translateY (1000vh)! importante } amp-autocomplete {position: relative! important; display: inline-block! important} amp-autocomplete> input, amp-autocomplete> textarea {padding: 0.5rem; border: 1px solid rgba (0,0,0,0,33) } .i-amphtml-autocomplete-results, amp-autocomplete> input, amp-autocomplete> textarea {font-size: 1rem; line-height: 1.5rem} [amp-fx ^ = fly-in] {visibilidade: oculto} amp-script [nodom] {position: fixed! important; top: 0! important; width: 1px! important; height: 1px! important; overflow: hidden! important; visibility: hidden}
Aqui, o conteúdo da página da web é obtido diretamente em seu terminal como código-fonte.
Você pode usar opções -o
e -O
com o ondulação
comando para armazenar este conteúdo em um arquivo.
Quando -o
opção for usada, o conteúdo da URL é salvo em seu diretório atual com um nome de arquivo definido pelo usuário.
Sintaxe:
curl -o [userdefined_filename] [URL]
Exemplo:
gaurav @ ubuntu: ~ / workspace $ curl -o ath.html //allthings.how% Total% Recebido% Xferd Velocidade Média Tempo Tempo Tempo Atual Descarregamento Carregar Velocidade Esquerda Total Gasta 100 199k 100 199k 0 0 58743 0 0:00:03 0:00:03 -: -: - 58743 gaurav @ ubuntu: ~ / workspace $ ls ath.html gaurav @ ubuntu: ~ / workspace $
Neste exemplo, o conteúdo do URL ‘allthings.how’ é salvo como um arquivo HTML chamado ath.html em meu diretório de trabalho atual. Ao abrir este arquivo HTML, serei redirecionado para a página da web que foi salva.
Baixar arquivos usando o comando CURL
Usando o -O
A opção com o comando curl também salva o conteúdo ou a página da Web ou um pacote para download como um arquivo, mas salva esse arquivo com seu nome original.
Vamos ver isso por meio de um exemplo:
Exemplo:
Aqui eu usei o ondulação
comando com -O
opção de baixar um pacote Ubuntu chamado ‘cherrytree_0.37.6-1.1_all.deb‘Do repositório de pacotes do Ubuntu.
gaurav @ ubuntu: ~ / workspace $ curl -O //kr.archive.ubuntu.com/ubuntu/pool/universe/c/cherrytree/cherrytree_0.37.6-1.1_all.deb% Total% Recebido% Xferd Velocidade Média Tempo Tempo Tempo Descarregamento Atual Upload Velocidade Esquerda Total Gasto 100 613k 100 613k 0 0 220k 0 0:00:02 0:00:02 -: -: - 220k gaurav @ ubuntu: ~ / workspace $
Saída:
trinity @ ubuntu: ~ / workspace $ ls ath.html cherrytree_0.37.6-1.1_all.deb trinity @ ubuntu: ~ / workspace $
Portanto, o pacote agora é baixado e salvo no diretório de trabalho atual (CWD) com seu nome original.
Exibindo uma barra de progresso durante o download de um arquivo
Há mais uma modificação estética disponível durante o uso do ondulação
comando para baixar um arquivo. Você pode ver o andamento do download do arquivo na forma de uma barra de progresso no seu terminal. Você só precisa anexar o -#
opção com seu comando para baixar um arquivo.
Vejamos um exemplo desse ajuste.
Sintaxe:
curl - # -O [URL]
Exemplo:
gaurav @ ubuntu: ~ / workspace $ curl - # -O //archive.ubuntu.com/ubuntu/pool/main/e/emacs-defaults/emacs-defaults_47.0.tar.xz ######### ############################################################### ############################################################### ############################################# 100.0% gaurav @ ubuntu: ~ / workspace $
Saída:
gaurav @ ubuntu: ~ / workspace $ ls ath.html cherrytree_0.37.6-1.1_all.deb emacs-defaults_47.0.tar.xz gaurav @ ubuntu: ~ / workspace $
Nesta saída, você pode observar que baixei um pacote chamado ‘emacs-defaults_47.0.tar.xz‘Em meu CWD e a barra de progresso é exibida no terminal enquanto o download estava em andamento.
Retomando download interrompido em CURL
Muitas vezes, pode ocorrer uma situação em que você precise baixar arquivos de tamanho maior. Às vezes, devido a alguns motivos como falta de energia ou falha de rede, o download pode ser interrompido no meio do processo sem baixar o arquivo completo. Mesmo se você pressionar Ctrl + C
no terminal, o processo é abortado.
O ondulação
comando quando usado com o -C
opção retoma o download interrompido.
Sintaxe:
curl -C - -O [URL]
Exemplo:
Nesta ilustração, tentei baixar a imagem ISO 20.04 do Ubuntu do site do Ubuntu.
gaurav @ ubuntu: ~ / workspace $ curl -O //releases.ubuntu.com/20.04.1/ubuntu-20.04.1-desktop-amd64.iso?_ga=2.212264532.1184373179.1600250922-1570904140.1591164974%% total recebido% Velocidade média do Xferd Tempo Tempo Tempo Descarregamento Atual Upload Velocidade Esquerda Total Gasto 0 2656M 0 1744k 0 0 87038 0 8:53:17 0:00:20 8:52:57 77726 ^ C
Aqui, abortei deliberadamente o processo de download ao Ctrl + C
.
Agora vou usar o -C
opção com o ondulação
comando para retomar o download interrompido do mesmo site de origem.
Saída:
gaurav @ ubuntu: ~ / workspace $ curl -C - -O //releases.ubuntu.com/20.04.1/ubuntu-20.04.1-desktop-amd64.iso?_ga=2.212264532.1184373179.1600250922-1570904140.1591164974 ** Retomando transferência de posição do byte 1851392% Total% Recebido% Xferd Velocidade Média Tempo Tempo Tempo Atual Descarregamento Upload Total Gasto Esquerdo Velocidade 0 2654M 0 20,2M 0 0 57940 0 13:20:35 0:06:06 13:14:29 98278
O download foi retomado de onde foi abortado.
Baixando arquivos de um servidor FTP usando CURL
É muito fácil com o ondulação
comando para baixar um arquivo do servidor FTP usando o -você
opção. Você deve inserir o nome de usuário e a senha no comando antes de inserir o URL.
Sintaxe:
curl -u [nome de usuário]: [senha] [URL]
Para a ilustração, estarei usando um FTP público online.
Exemplo:
gaurav @ ubuntu: ~ / workspace $ curl -O -u [email protected]: eUj8GeW55SvYaswqUyDSm5v6N ftp://ftp.dlptest.com/16-Sep-20-16-0-0.csv% Total%% total recebido% Média Xferd Velocidade Tempo Tempo Tempo Descarregamento atual Carregar Total gasto Velocidade Esquerda 100 390 100 390 0 0 93 0 0:00:04 0:00:04 -: -: - 93 gaurav @ ubuntu: ~ / workspace $
Aqui, eu baixei um arquivo chamado ‘16-set-20-16-0-0.csv ’ deste servidor ftp e salvei-o com seu nome original em meu CWD. Vou verificar o arquivo baixado usando o ls
comando.
gaurav @ ubuntu: ~ / workspace $ ls -al total 1092 drwxrwxr-x 3 gaurav gaurav 4096 16 de setembro 16:15. drwxr-xr-x 87 gaurav gaurav 266240 16 de setembro 10:22 .. -rw-r - r-- 1 gaurav gaurav 390 16 de setembro 16:15 16-Set-20-16-0-0.csv -rw- r - r-- 1 gaurav gaurav 204429 16 de setembro 11h45 ath.html gaurav @ ubuntu: ~ / workspace $
Baixar vários arquivos juntos usando CURL
Baixar vários arquivos de uma vez usando o ondulação
comando é uma tarefa muito simples. Você acabou de usar o -O
opção com o ondulação
comando semelhante da forma que executamos nos blocos acima.
Sintaxe:
curl -O [URL-1] -O [URL-2] -O [URL-n]
Exemplo:
gaurav @ ubuntu: ~ / workspace $ curl -O //archive.ubuntu.com/ubuntu/pool/universe/a/aegean/aegean_0.15.2+dfsg-1.debian.tar.xz -O //archive.ubuntu. com / ubuntu / pool / main / a / apache2 / apache2_2.4.29.orig.tar.gz% Total% Recebido% Xferd Velocidade Média Tempo Tempo Tempo Atual Descarregamento Carregar Total Gasto Esquerdo Velocidade 100 63500 100 63500 0 0 55458 0 0:00 : 01 0:00:01 -: -: - 55458 100 8436k 100 8436k 0 0 123k 0 0:01:08 0:01:08 -: -: - 127k gaurav @ ubuntu: ~ / workspace $
Neste exemplo, baixei dois pacotes diferentes do repositório do Ubuntu.
Saída:
gaurav @ ubuntu: ~ / workspace $ ls -al total 9596 drwxrwxr-x 3 gaurav gaurav 4096 16 de setembro 16:28. drwxr-xr-x 87 gaurav gaurav 266240 16 de setembro 10:22 .. -rw-r - r-- 1 gaurav gaurav 390 16 de setembro 16:15 16-Set-20-16-0-0.csv -rw- r - r-- 1 gaurav gaurav 63500 16 de setembro 16:28 aegean_0.15.2 + dfsg-1.debian.tar.xz -rw-r - r-- 1 gaurav gaurav 8638793 16 de setembro 16:29 apache2_2.4.29. orig.tar.gz -rw-r - r-- 1 gaurav gaurav 204429 16 de setembro 11h45 ath.html gaurav @ ubuntu: ~ / workspace $
Os dois pacotes são baixados ao mesmo tempo usando o comando curl.
Buscando cabeçalhos HTTP de um URL com CURL
Os campos de cabeçalhos HTTP de qualquer URL contêm informações úteis como agente do usuário, tipo de conteúdo, codificação, etc. Esses arquivos de cabeçalho também fornecem informações sobre o objeto enviado no corpo da mensagem. Detalhes sobre a solicitação e a resposta também são obtidos desses cabeçalhos HTTP.
Você pode usar ondulação
comando com -EU
opção para obter esses cabeçalhos HTTP de um URL.
Sintaxe:
curl -I [URL]
Exemplo:
gaurav @ ubuntu: ~ / workspace $ curl -I www.firefox.com HTTP / 1.1 200 OK Tipo de conteúdo: text / html; charset = ISO-8859-1 P3P: CP = "Esta não é uma política P3P! Consulte g.co/p3phelp para obter mais informações." Data: Quarta, 16 Set 2020 11:17:00 GMT Servidor: gws X-XSS-Protection: 0 X-Frame-Opções: SAMEORIGIN Transfer-Encoding: Chunked Expira: Quarta, 16 Set 2020 11:17:00 GMT Cache- Controle: Set-Cookie privado: 1P_JAR = 2020-09-16-11; expira = sex, 16-out-2020 11:17:00 GMT; caminho = /; domínio = .google.com; Fixar Set-Cookie: NID = 204 = SpeHTVXkKYwe6uaKYLsPWmCA0A-sGb94c9jpbw067e7uhyeJnkap6TFEIESztwLOEst7KcDSBLgGrokh1EM2IZi2VPVzllH0tsvCu-QbKiunPoPJ6dD7oAnB7rxu30rAiO630vYm6SG1zbmGgxNEiB-adXp24h7iEoSq9WsjrGg; expira = qui, 18-mar-2021 11h17:00 GMT; caminho = /; domínio = .google.com; HttpOnly gaurav @ ubuntu: ~ / workspace $
Neste exemplo, busquei os cabeçalhos HTTP de ‘www.firefox.com‘.
Buscando código-fonte C usando CURL
Usando ondulação
comando com o --libcurl
opção pode buscar o código-fonte C. Isso não tem uso significativo para usuários leigos, mas pode ser muito útil para programadores de sistema, analistas de segurança e desenvolvedores de aplicativos.
Sintaxe:
curl [URL]> nome do arquivo --libcurl [code_filename]
Exemplo:
Neste exemplo, eu busquei o conteúdo do URL allthings.how e o armazenou em um arquivo chamado gy_ath.html. O código-fonte C é armazenado separadamente no source.c Arquivo.
curl //www.allthings.how> gy_ath.html --libcurl source.c
Saída:
gaurav @ ubuntu: ~ / workspace $ curl //www.allthings.how> gy_ath.html --libcurl source.c% Total% Recebido% Xferd Velocidade Média Tempo Tempo Tempo Atual Descarregamento Carregar Total Gasto Esquerdo Velocidade 0 0 0 0 0 0 0 0 -: -: - 0:00:01 -: -: - 0 gaurav @ ubuntu: ~ / workspace $
Vamos agora verificar os arquivos baixados.
gaurav @ ubuntu: ~ / workspace $ ls -al total 404 drwxrwxr-x 3 gaurav gaurav 4096 16 de setembro 17:08. drwxr-xr-x 87 gaurav gaurav 266240 16 de setembro 10:22 .. -rw-r - r-- 1 gaurav gaurav 0 16 de setembro 17:13 gy_ath.html -rw-r - r-- 1 gaurav gaurav 1535 16 de setembro 17:13 source.c gaurav @ ubuntu: ~ / workspace $
O source.c arquivo contém o código-fonte. Isso pode ser exibido no terminal usando o gato
comando. Coloquei algumas linhas da saída no bloco fornecido abaixo.
C sourcegaurav @ ubuntu: ~ / workspace $ cat source.c / ********* Código de amostra gerado pela ferramenta de linha de comando curl ********** * Todas as opções curl_easy_setopt () estão documentadas em: * //curl.haxx.se/libcurl/c/curl_easy_setopt.html ********************************* ***************************************** / #include int main (int argc, char * argv []) {CURLcódigo ret; CURL * hnd; hnd = curl_easy_init (); curl_easy_setopt (hnd, CURLOPT_BUFFERSIZE, 102400L); curl_easy_setopt (hnd, CURLOPT_URL, "//www.allthings.how"); curl_easy_setopt (hnd, CURLOPT_USERAGENT, "curl / 7.58.0"); curl_easy_setopt (hnd, CURLOPT_MAXREDIRS, 50L);
Usando um proxy em CURL para acessar um URL
Conforme discutido na introdução, o ondulação
O comando suporta uma ampla gama de protocolos como FTP, SMTP, HTTPS, SOCKS etc. Às vezes, usar um servidor proxy para transferir arquivos torna-se importante quando você deseja aumentar a velocidade de sua transferência e também proteger sua identidade. ondulação
comando pode ser facilmente usado para transferir arquivos através do servidor proxy, anexando o -x
opção para isso.
Exemplo:
curl -x [proxy_address]: [porta] [URL]
No exemplo acima, presumi que seu proxy não requer autenticação. Caso o proxy exija autenticação para iniciar a transferência, você pode usar o seguinte comando.
curl -u [nome de usuário]: [senha] -x [proxy_address]: [porta] [URL]
Usando este método simples, podemos transferir arquivos através de um servidor proxy com a opção -x
usado com o ondulação
comando.
Conclusão
Neste breve tutorial, aprendemos como ondulação
comando prova ser útil para baixar conteúdo diretamente de seu terminal. Também aprendemos sobre as diferentes opções disponíveis com este comando para ser usado para várias tarefas.