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

38

Os dois curl e wget são usados para fazer o download de arquivos, etc. Existe algum motivo para usar um sobre o outro?

    
por snoop 25.09.2015 / 19:47

4 respostas

32

Depois de definir "uso adequado", use wget .

Por quê? Por isso:

Recursivo! O principal lado strong do wget, comparado com o curl, é sua capacidade de fazer o download recursivamente, ou até mesmo baixar tudo o que é referido de um recurso remoto, seja uma página HTML ou uma listagem de diretório FTP.

Shameless copiado de aqui

curl

  • biblioteca . curl é ativado por libcurl - uma biblioteca de plataforma cruzada com uma API estável que pode ser usada por todos. Essa diferença é importante, 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 . curl funciona mais como o comando tradicional% Unixcat, envia mais coisas para stdout e lê mais de stdin em uma maneira "tudo é um canal". wget é mais parecido com cp , usando o mesmo análogo.

  • Disparo único . curl é feito basicamente para transferências de dados individuais. Ele transfere apenas as URLs especificadas pelo usuário e não contém lógica de download recursiva nem qualquer tipo de analisador de HTML.

  • Mais protocolos . curl suporta 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 . curl é compilado e executado em várias plataformas a mais 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 SSL . curl pode ser construído com uma de onze (11!) diferentes bibliotecas SSL / TLS, e oferece mais controle e suporte mais amplo para detalhes de protocolo. curl suporta a fixação de chaves públicas.

  • HTTP auth . curl suporta mais métodos de autenticação HTTP, especialmente sobre proxies HTTP: Básico, Digest, NTLM e Negociar

  • SOCKS . curl suporta várias versões do protocolo SOCKS para acesso por proxy

  • Bidirecional . curl oferece recursos de upload e envio. wget apenas oferece suporte HTTP POST simples.

  • HTTP envio multipart / form-data , que permite aos usuários fazer "upload" HTTP e em geral emular navegadores e fazer automação HTTP em maior extensão

  • curl suporta gzip e insufla Content-Encoding e descompacta automática

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

  • curl suporta HTTP / 2 e faz conexões de pilha dupla usando Happy Eyeballs

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

wget

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

  • Recursivo ! O principal lado strong do wget em relação ao curl é sua capacidade de fazer o download de forma recursiva, ou simplesmente baixar tudo o que é referido de um recurso remoto, seja uma página HTML ou uma listagem de diretório FTP.

  • Mais antigo . wget tem rastreios até 1995, enquanto curl pode ser rastreado não antes do final de 1996.

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

  • GNU . wget faz parte do projeto GNU e todos os direitos autorais são atribuídos à FSF. O projeto curl é totalmente autônomo e independente, sem nenhum tipo de organização, com quase todos os direitos autorais de propriedade de Daniel.

  • wget não requer opções extras para simplesmente fazer o download de um URL remoto para um arquivo local, enquanto curl requer -o ou -O .

  • wget suporta a Lista de sufixos públicos para manipular domínios de cookies, o curl não.

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

  • wget suporta somente a autenticação básica como o único tipo de autenticação sobre o proxy HTTP

  • wget não tem suporte a SOCKS

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

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

por A.B. 25.09.2015 / 20:12
19

Existem muitas ferramentas que podem ser baixadas como curl , snarf , wget , pavuk , fget , fetch , lftp , aria2 , HTTrack etc. de acordo com sua necessidade e qual recurso você deseja usar junto com o download. Verifique a tabela de recursos e use de acordo.

Curl:

  • Curl suporta mais protocolos FTP, FTPS, HTTP, HTTPS, SCP, SFTP, TFTP, TELNET, DICT, LDAP, LDAPS, ARQUIVO, POP3, IMAP, SMTP, RTMP e RTSP
  • Curl suporta mais bibliotecas SSL
  • Curl suporta mais métodos de autenticação HTTP, especialmente sobre HTTP proxies: Basic, Digest, NTLM e Negotiate
  • O Curl é ativado por libcurl - uma biblioteca de plataforma cruzada com um estábulo API que pode ser usada por todos e cada um

Wget:

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

Recursos importantes para mais informações:

por pl_rock 25.09.2015 / 19:52
3

Eles têm muita funcionalidade em comum, mas curl tem mais opções. Para wget , ocasionalmente, pode ser suficiente para folhear man wget , mas para curl eu preciso estudar esta página da web em um navegador. Acredito que qualquer coisa que seu navegador possa fazer, curl pode fazer também.

    
por Jos 25.09.2015 / 19:53
2

Há outra diferença entre o wget e o curl, que considero importante.

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

Curl por outro lado é basicamente um front-end terminal para a poderosa biblioteca libcurl. 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 todas as linguagens e plataformas. O Curl basicamente oferece a capacidade de usar essa biblioteca em scripts de shell.

    
por barbecue 26.09.2015 / 17:01