curl vs Wget
The main differences as I (Daniel Stenberg) see them. Please consider my bias towards curl since after all, curl is my baby — but I contribute to Wget as well.
Please let me know if you have other thoughts or comments on this document.
File issues or pull-requests if you find problems or have improvements.
What both commands do
- both are command line tools that can download contents from FTP, HTTP(S)
- both can send HTTP POST requests
- both support HTTP cookies
- both support metalink, HSTS and HTTP proxy
- both are designed to work without user interaction
- both are fully open source and free software
- both projects started in 1996 (under other names)
- both are portable and run on many operating systems
How they differ
library: curl is powered by libcurl — a cross-platform library with a stable API that can be used by each and everyone. This difference is major since it creates a completely different attitude on how to do things internally. It is also slightly harder to make a library than a «mere» command line tool.
pipes. curl works more like the traditional Unix cat command, it sends more stuff to stdout, and reads more from stdin in a «everything is a pipe» manner. Wget is more like cp, using the same analogue.
Single shot: curl is basically made to do single-shot transfers of data. It transfers just the URLs that the user specifies, and does not contain any recursive downloading logic nor any sort of HTML parser.
More protocols: curl supports FTP(S), GOPHER(S), HTTP(S), SCP, SFTP, TFTP, TELNET, DICT, LDAP(S), MQTT, FILE, POP3(S), IMAP(S), SMB(S), SMTP(S), RTMP and RTSP. Wget supports HTTP(S) and FTP.
More portable: curl builds and runs on lots of more platforms than wget. For example: OS/400, TPF and other more «exotic» platforms that aren’t straight-forward Unix clones. curl requires but a C89 compiler.
More SSL libraries and SSL support: curl can be built with one out of thirteen (13!) different SSL/TLS libraries, and it offers more control and wider support for protocol details.
HTTP auth: curl supports more HTTP authentication methods, especially over HTTP proxies: Basic, Digest, NTLM and Negotiate
SOCKS: curl supports SOCKS4 and SOCKS5 for proxy access. With local or proxy based name resolving.
Bidirectional: curl offers upload and sending capabilities. Wget only offers plain HTTP POST support.
HTTP multipart/form-data sending, which allows users to do HTTP «upload» and in general emulate browsers and do HTTP automation to a wider extent.
curl supports gzip, brotli, zstd and deflate Content-Encoding and does automatic decompression.
curl offers and performs decompression of Transfer-Encoded HTTP, wget doesn’t.
curl supports HTTP/2, HTTP/3, alt-svc and it does dual-stack connects using Happy Eyeballs.
curl can do many transfers in parallel ( -Z ).
Much more developer activity. While this can be debated, I consider three metrics here: mailing list activity, source code commit frequency and release frequency. Anyone following these two projects can see that the curl project has a lot higher pace in all these areas, and it has been so for 15+ years. Compare on openhub.
curl comes pre-installed on macOS and Windows 10. Wget does not.
Wget is command line only. There’s no library.
Recursive!: Wget’s major strong side compared to curl is its ability to download recursively, or even just download everything that is referred to from a remote resource, be it a HTML page or a FTP directory listing.
Older: Wget has traces back to its predecessor from January 9, 1996, while curl can be tracked back no earlier than to November 11, 1996.
GPL: Wget is GPL v3. curl is MIT licensed.
GNU: Wget is part of the GNU project and all copyrights are assigned to FSF. The curl project is entirely stand-alone and independent with no organization parenting at all with almost all copyrights owned by Daniel.
Wget requires no extra options to simply download a remote URL to a local file, while curl requires -o or -O.
Wget supports only GnuTLS or OpenSSL for SSL/TLS support.
Wget supports only Basic auth as the only auth type over HTTP proxy.
Wget has no SOCKS support.
Its ability to recover from a prematurely broken transfer and continue downloading has no counterpart in curl.
Wget enables more features by default: cookies, redirect-following, time stamping from the remote resource etc. With curl most of those features need to be explicitly enabled.
There’s a ‘wget’ in BusyBox, there’s no curl there (it is not the actual wget, just a stripped down clone with the same name).
Wget can be typed in using only the left hand on a qwerty keyboard!
Wget requires a C99 compiler and also relies on gnulib.
When to use which
Primarily: use the one that gets the job done for you.
Wget has (recursive) downloading powers that curl does not feature and it also handle download retries over unreliable connections possibly slightly more effective.
For just about everything else, curl is probably the more suitable tool.
Additional Stuff
In recent years, wget2 is worked on to become the replacement for wget. This comparison will eventually get wget2 details as well.
Two other capable tools with similar feature set include aria2 and axel — try them out!
For a stricter feature by feature comparison (that also compares other similar tools), see the curl comparison table
Thanks
Feedback and improvements by: Micah Cowan, Olemis Lang
Updated: September 3, 2021 15:13 (Central European, Stockholm Sweden)
Источник
В чем разница между curl и wget?
Обе эти curl а также wget используются для загрузки файлов и т. д. Есть ли основания использовать один поверх другого?
4 ответа
После того как вы определили «правильное использование», используйте wget ,
Зачем? Вот почему:
Рекурсивный! Основная сильная сторона wget по сравнению с curl — это возможность рекурсивной загрузки или даже просто загрузка всего, на что есть ссылки, с удаленного ресурса, будь то страница HTML или список каталогов FTP.
библиотека curl работает на libcurl — кроссплатформенная библиотека со стабильным API, которая может использоваться всеми без исключения. Эта разница является существенной, поскольку она создает совершенно другое отношение к внутренним действиям. Также немного сложнее создать библиотеку, чем «простой» инструмент командной строки.
трубы. curl работает больше как традиционный Unix cat команда, он отправляет больше материала stdout и читает больше из stdin «все это труба». wget больше похоже cp , используя тот же аналог.
Единственный выстрел. curl в основном сделан, чтобы сделать единовременные передачи данных. Он передает только URL-адреса, указанные пользователем, и не содержит никакой рекурсивной логики загрузки или какого-либо синтаксического анализатора HTML.
Больше протоколов. curl поддерживает FTP, FTPS, Gopher, HTTP, HTTPS, SCP, SFTP, TFTP, TELNET, DICT, LDAP, LDAPS, FILE, POP3, IMAP, SMB/CIFS, SMTP, RTMP и RTSP. Wget поддерживает только HTTP, HTTPS и FTP.
Более портативный. curl строит и работает на большем количестве платформ, чем wget , Например: OS/400, TPF и другие более «экзотические» платформы, которые не являются прямыми клонами Unix.
Больше библиотек SSL и поддержка SSL. curl может быть построен с одной из одиннадцати (11!) различных библиотек SSL/TLS, и он предлагает больше контроля и более широкую поддержку для деталей протокола. curl поддерживает закрепление открытого ключа.
HTTP-аутентификация curl поддерживает больше методов HTTP-аутентификации, особенно через HTTP-прокси: Basic, Digest, NTLM и Negotiate
НОСКИ. curl поддерживает несколько версий протокола SOCKS для доступа к прокси
Двунаправленный. curl предлагает возможности загрузки и отправки. wget предлагает только простую поддержку HTTP POST.
HTTP multipart / form-data send, которая позволяет пользователям выполнять HTTP-загрузку и в целом эмулировать браузеры и в большей степени автоматизировать HTTP
curl опоры gzip и раздувать Content-Encoding и делает автоматическую распаковку
curl предлагает и выполняет распаковку HTTP с кодировкой передачи, wget — нет
curl поддерживает HTTP/2 и поддерживает двойное соединение при помощи Happy Eyeballs
Гораздо больше активности разработчиков. Хотя это можно обсудить, я рассмотрю три показателя: активность в списке рассылки, частота принятия исходного кода и частота выпуска. Любой, кто следит за этими двумя проектами, может увидеть, что у curl-проекта намного более высокие темпы во всех этих областях, и так было уже более 10 лет. Сравните на openhub
wget только командная строка Там нет библиотеки.
Рекурсивно! wget Главная сильная сторона по сравнению с curl — это возможность рекурсивной загрузки или даже просто загрузка всего, на что ссылаются, с удаленного ресурса, будь то страница HTML или список каталогов FTP.
Старше wget восходит к 1995 году, в то время как curl можно отследить не ранее конца 1996 года.
GPL. wget 100% GPL v3. curl является лицензированным MIT.
GNU. wget является частью проекта GNU, и все авторские права принадлежат FSF. Проект curl является полностью автономным и независимым, без родительского контроля со стороны организации, почти со всеми авторскими правами, принадлежащими Дэниелу.
wget не требует дополнительных опций для простой загрузки удаленного URL в локальный файл, в то время как curl требует -o или же -O ,
wget поддерживает общедоступный список суффиксов для обработки доменов cookie, curl — нет.
wget поддерживает только GnuTLS или OpenSSL для поддержки SSL/TLS
wget поддерживает только базовую аутентификацию как единственный тип аутентификации через HTTP-прокси
wget не поддерживает SOCKS
Его способность восстанавливаться после преждевременно прерванной передачи и продолжать загрузку не имеет аналога в curl.
wget можно набрать, используя только левую руку на QWERTY-клавиатуре!
Есть много инструментов, которые можно скачать как curl , snarf , wget , pavuk , fget , fetch , lftp , aria2 , HTTrack и т. д. Используйте его в соответствии с вашими требованиями и какие функции вы хотите использовать вместе с загрузкой. Проверьте таблицу функций и используйте соответственно.
Завиток:
- Curl поддерживает больше протоколов FTP, FTPS, HTTP, HTTPS, SCP, SFTP, TFTP, TELNET, DICT, LDAP, LDAPS, FILE, POP3, IMAP, SMTP, RTMP и RTSP
- Curl поддерживает больше библиотек SSL
- Curl поддерживает больше методов HTTP-аутентификации, особенно через HTTP-прокси: Basic, Digest, NTLM и Negotiate
- Curl основан на кроссплатформенной библиотеке libcurl -со стабильным API, который может использовать каждый
Wget:
- В то время как wget поддерживает HTTP, HTTPS и FTP
- Wget поддерживает только GnuTLS или OpenSSL для поддержки SSL/TLS
- Wget поддерживает только базовую аутентификацию как единственный тип аутентификации через HTTP-прокси
- Wget — только инструмент командной строки, у него нет библиотеки.
Важные ресурсы для получения дополнительной информации:
Подробная информация о поддерживаемых функциях скручивания: Особенности — что может делать скручивание
Подробно о поддерживаемых функциях wget: функции wget
Источник
В чем разница между curl и wget?
Я хотел бы знать разницу между curl и wget . Оба используются для получения файлов и документов, но в чем ключевое различие между ними.
Почему есть две разные программы?
Основными отличиями являются:
- wget Сильной стороной по сравнению с curl его является возможность рекурсивной загрузки.
- wget только командная строка Там нет библиотеки или чего-то еще, но curl ее функции поддерживаются libcurl.
- curl поддерживает FTP , FTPS , HTTP , HTTPS , SCP , SFTP , TFTP , TELNET , DICT , LDAP , LDAPS , FILE , POP3 , IMAP , SMTP , RTMP и RTSP . wget поддерживает HTTP , HTTPS и FTP .
- curl строит и работает на большем количестве платформ, чем wget .
- wget выпускается под лицензией свободного программного обеспечения с авторским левом (GNU GPL). curl выпущен под свободной разрешающей лицензией программного обеспечения (производная MIT).
- curl предлагает возможности загрузки и отправки. wget предлагает только простую поддержку HTTP POST.
Вы можете увидеть более подробную информацию по следующей ссылке:
В нескольких словах:
- wget это инструмент для загрузки файлов с серверов
- curl это инструмент, который позволяет вам обмениваться запросами / ответами с сервером
Wget позволяет вам скачивать файлы только с HTTP / HTTPS или FTP сервера. Вы даете ему ссылку, и он автоматически загружает файл, на который указывает ссылка. Он строит запрос автоматически.
локон
Curl в отличие от wget позволяет строить запрос по вашему желанию . Это дает большую свободу пользователю и делает удивительный инструмент отладки. Добавьте к этому еще одно ключевое различие между ними: множество поддерживаемых протоколов. Curl опоры FTP , FTPS , Gopher , HTTP , HTTPS , SCP , SFTP , TFTP , Telnet , DICT , LDAP , LDAPS , IMAP , POP3 , SMTP , RTSP и URI . Объедините эти два ключевых момента, и у вас есть замечательный инструмент для тестирования протоколов, настройки сервера и т. Д.
Как говорят многие, вы можете скачать файл с помощью curl. Это, однако, полезно только в том случае, если вы хотите загрузить файл с сервера, использующего протокол, который не поддерживается wget.
Источник
Wget or curl linux
wget — консольная утилита для скачивания файлов/сайтов, умеет выкачивать файлы рекурсивно, следуя по ссылкам автоматически.
Команда | Описание |
---|---|
wget http://example.com/file.zip | скачивание файла file.zip в текущую директорию |
wget -P /path/to/save http://example.com/file.zip | скачивание файла file.zip в директорию /path/to/save |
wget -c http://example.com/file.zip | докачивание файла file.zip в случаи обрыва |
wget -O arch.zip http://example.com/file.zip | скачивание файла file.zip и сохранение под именем arch.zip |
wget -i files.txt | скачивание файлов из списка в files.txt |
wget —tries=10 http://example.com/file.zip | количество попыток на скачивание |
wget -Q5m -i http://example.com/ | квота на максимальный размер скачанных файлов, квота действует только при рекурсивном скачивании (-r) |
wget —save-cookies cookies.txt —post-data ‘username=proft&password=1’ http://example.com/auth.php | идентификация на сервере с сохранением кук для последующего доступа |
wget —user-agent=»Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/536.5 (KHTML, like Gecko) Chrome/19.0.1084.9 Safari/536.5″ http://example.com/ | указание User Agent |
echo ‘wget http://example.com/file.zip’ | at 12:00 | скачать http://example.com/file.zip в 12:00 в текущую директорию |
wget ftp://example.com/dir/*.zip | скачивание всех файлов по шаблону |
wget http://example.com/dir/file<1..10>.zip | скачивание всех файлов по шаблону |
wget -S http://example.com/ | вывод заголовков HTTP серверов и ответов FTP серверов |
wget —spider -i urls.txt | проверка ссылок в файле на доступность |
wget -b http://example.com/file.zip | скачивание файла в фоне, лог пишется в wget.log, wget.log.1 и т.д. |
export http_proxy=http://proxy.com:3128/;wget http://example.com/file.zip | скачивание файла *file.zip* через прокси |
wget -m -w 2 http://example.com/ | зеркалирование сайта с сохранением абсолютных ссылок и ожиданием 2-х секунд между запросами |
wget —limit-rate=200k http://example.com/file.zip | ограничение скорости скачивания |
wget -R bmp http://example.com/ | не скачивать bmp файлы |
wget -A png,jpg http://example.com/ | скачивать только файлы png и jpg |
Пример использования для скачивания документации Django:
wget -r -k -l 5 -p -E -nc -np https://docs.djangoproject.com/en/1.5/
- -r — ходим по ссылкам (рекурсивное скачивание)
- -k — преобразовываем ссылки к локальному виду
- -p — скачивание ресурсов необходимых для отображения html-страницы (стили, картинки и т.д.)
- -l — глубина скачивания, 0 — бесконечная вложенность ссылок
- -nc — не перезаписывать существующие файлы
- -np — не подниматься выше начального адреса при рекурсивной загрузке
Часто используемые wget параметры можно вынести в
curl — консольная утилита для передачи данных используя URL-синтаксис, поддерживаются протоколы DICT, FILE, FTP, FTPS, Gopher, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMTP, SMTPS, Telnet и TFTP.
Источник