Qual é a diferença entre curl e wget? [fechadas]

38

Ambos curle wgetsão de uso para baixar arquivos, etc. Existe alguma razão para usar um sobre o outro?

bisbilhoteiro
fonte
1
Definir "uso adequado"
AB
12
Quanto à votação para fechar como baseada em opiniões: como perguntar sobre a diferença entre duas ferramentas incentiva respostas baseadas em opiniões?
Michael Martin-Smucker
1
@ MichaelMartin-Smucker "Suponha que eu precise baixar uma página da web, digamos www.google.com, devo procurar por wget ou curl?" o que é isso se não for baseado em opiniões?
muru 26/09/15
2
@ muru, depende do que você quer dizer com "baixar uma página da web". Se você quer enviar uma solicitação http e receber de volta os resultados, a curvatura é ideal. Se você deseja fazer o download de uma página, de outras páginas às quais ele vincula e de ativos relacionados, a ondulação não funcionará e o wget é a única opção. Existem diferenças factuais entre eles que tornam isso não baseado em opiniões.
churrasco
3
@muru Acho que temos apenas interpretações diferentes do sentimento por trás da pergunta. Na minha interpretação, o sentimento é: "Ouvi falar dessas duas ferramentas que parecem fazer a mesma coisa. Qual é a diferença entre elas e quando devo escolher uma sobre a outra? E neste caso específico?" ... o que me parece uma pergunta razoável.
Michael Martin-Smucker 27/09/2015

Respostas:

33

Depois de definir "uso adequado", use wget.

Por quê? É por isso:

Recursivo! O principal ponto forte do wget, em comparação com o curl, é a capacidade de fazer o download recursivamente, ou até mesmo fazer o download de tudo o que é referido a partir de um recurso remoto, seja uma página HTML ou uma lista de diretórios FTP.


Desavergonhado copiado daqui

curl

  • biblioteca . curlé alimentado por libcurl- uma biblioteca de plataforma cruzada com uma API estável que pode ser usada por todos e por todos. Essa diferença é grande, pois cria uma atitude completamente diferente sobre como fazer as coisas internamente. Também é um pouco mais difícil criar uma biblioteca do que uma "mera" ferramenta de linha de comando.

  • canos . curlfunciona mais como o catcomando tradicional do Unix , envia mais coisas para stdoute lê mais de stdinuma maneira "tudo é um cachimbo". wgeté mais como cpusar o mesmo analógico.

  • Um tiro . curlé basicamente feito para fazer transferências de dados de uma só vez. Ele transfere apenas os URLs que o usuário especifica e não contém nenhuma lógica de download recursiva nem qualquer tipo de analisador de HTML.

  • Mais protocolos . curlsuporta FTP, FTPS, Gopher, HTTP, HTTPS, SCP, SFTP, TFTP, TELNET, DICT, LDAP, LDAPS, ARQUIVO, POP3, IMAP, SMB / CIFS, SMTP, RTMP e RTSP. O Wget suporta apenas HTTP, HTTPS e FTP.

  • Mais portátil . curlcria e roda em muito mais plataformas do que wget. Por exemplo: OS / 400, TPF e outras plataformas mais "exóticas" que não são clones simples do Unix.

  • Mais bibliotecas SSL e suporte a SSL . curlpode ser construído com uma das onze (11!) bibliotecas SSL / TLS diferentes e oferece mais controle e suporte mais amplo aos detalhes do protocolo. curlsuporta fixação de chave pública.

  • Autenticação HTTP . curlsuporta mais métodos de autenticação HTTP, especialmente em proxies HTTP: Básico, Digest, NTLM e Negociar

  • MEIAS . curlsuporta várias versões do protocolo SOCKS para acesso ao proxy

  • Bidirecional . curloferece recursos de upload e envio. wgetoferece apenas suporte HTTP POST simples.

  • Envio multipart / dados de formulário HTTP , que permite aos usuários fazer "upload" de HTTP e, em geral, emular navegadores e automatizar HTTP em uma extensão mais ampla

  • curlsuporta gzipe aumenta a codificação de conteúdo e descompacta automaticamente

  • curl oferece e executa a descompactação do HTTP codificado por transferência, o wget não

  • curl suporta HTTP / 2 e conecta pilha dupla usando Happy Eyeballs

  • Muito mais atividade do desenvolvedor . Embora isso possa ser debatido, considero três métricas aqui: atividade da lista de correspondência, frequência de confirmação do código-fonte e frequência de liberação. Qualquer pessoa que siga esses dois projetos pode ver que o projeto curl tem um ritmo muito mais alto em todas essas áreas, e isso ocorre há mais de 10 anos. Compare no openhub


wget

  • wgeté apenas linha de comando. Não há biblioteca.

  • Recursivo ! wgetO lado mais importante do comparado com o curl é a capacidade de baixar recursivamente, ou até mesmo baixar tudo o que é referido a partir de um recurso remoto, seja uma página HTML ou uma lista de diretórios FTP.

  • Mais velhos . wgettem traços desde 1995, enquanto curlpode ser rastreado até o final de 1996.

  • GPL . wgeté 100% GPL v3. curl é licenciado pelo MIT.

  • GNU . wgetfaz parte do projeto GNU e todos os direitos autorais são atribuídos à FSF. O projeto curl é totalmente independente e independente, sem a organização dos pais, com quase todos os direitos autorais de propriedade de Daniel.

  • wgetnão requer opções extras para simplesmente baixar um URL remoto para um arquivo local, enquanto curlrequer -oou -O.

  • wget suporta a lista pública de sufixos para manipular domínios de cookies, a ondulação não.

  • wget suporta apenas GnuTLS ou OpenSSL para suporte a SSL / TLS

  • wget suporta apenas autenticação básica como o único tipo de autenticação no proxy HTTP

  • wget não tem suporte a SOCKS

  • Sua capacidade de recuperar-se de uma transferência interrompida prematuramente e continuar o download não tem contrapartida na ondulação.

  • wget pode ser digitado usando apenas a mão esquerda em um teclado qwerty!

AB
fonte
1
Sim, o wget é ótimo para espelhar!
Joeytwiddle 25/09/2015
1
"O projeto curl é totalmente autônomo e independente, sem a organização dos pais, com quase todos os direitos autorais de propriedade de Daniel". Não tenho certeza de que é uma coisa ruim ...
churrasqueira
"Sua capacidade de recuperar-se de uma transferência interrompida prematuramente e continuar o download não tem contrapartida no processo". Eu entendi esta frase errada? Não está curl -C -continuando o download interrompido?
Siyuan Ren
1
Por que você recomenda o wget ? Mesmo depois de analisar as comparações que você mesmo escreveu, enrolar parece ser muito superior. wget can be typed in using only the left hand on a qwerty keyboard!, WTF ?? wget requires no extra options to simply download a remote URL to a local file, while curl requires -o or -O.
Anmol Singh Jaggi
2
O tamanho importa muito: em uma ubuntu fresco, tamanho wget é 2M vs. onda 5M embalado (com deps, o total x3 descompactado)
Eran W
19

Existem muitas ferramentas que podem ser baixados como curl, snarf, wget, pavuk, fget, fetch, lftp, aria2, HTTracketc. Use-o de acordo com suas necessidades e que apresentam você quiser usar junto com o download. Verifique a tabela de recursos e use de acordo.

Ondulação :

  • Suporte a ondulação mais protocolo FTP, FTPS, HTTP, HTTPS, SCP, SFTP, TFTP, TELNET, DICT, LDAP, LDAPS, ARQUIVO, POP3, IMAP, SMTP, RTMP e RTSP
  • O Curl suporta mais bibliotecas SSL
  • O Curl suporta mais métodos de autenticação HTTP, especialmente em proxies HTTP: Básico, Digest, NTLM e Negociar
  • O Curl é desenvolvido com a libcurl - uma biblioteca de plataforma cruzada com uma API estável que pode ser usada por todos e todos

Wget:

  • Enquanto o wget suporta HTTP, HTTPS e FTP
  • O Wget suporta apenas GnuTLS ou OpenSSL para suporte a SSL / TLS
  • O Wget suporta apenas autenticação básica como o único tipo de autenticação no proxy HTTP
  • O Wget é apenas uma ferramenta de linha de comando, não possui biblioteca.

Recursos importantes para mais informações:

pl_rock
fonte
"o wget é uma ferramenta de linha de comando, apenas possui biblioteca conhecida." Eu não entendo essa linha.
Lucio
3

Eles têm muita funcionalidade em comum, mas curltem mais opções. Por wgetvezes, pode ser suficiente folhear man wget, mas curlpreciso estudar esta página da Web em um navegador. Acredito que qualquer coisa que seu navegador possa fazer, também curlpode fazer.

Jos
fonte
2

Há outra diferença entre wget e curl, que eu acho significativa.

O Wget é um utilitário de linha de comando independente que se destina principalmente à recuperação de conteúdo da Internet de forma rápida e simples.

Curl, por outro lado, é basicamente um front end terminal para a poderosa biblioteca libcurl. O Libcurl fornece um conjunto muito poderoso de ferramentas para trabalhar com URLs em todas as suas formas e sabores, e está disponível para quase todos os idiomas e plataformas. O Curl basicamente oferece a capacidade de usar essa biblioteca em scripts de shell.

churrasco
fonte