Чим відрізняється curl від wget? [зачинено]


38

І те, curlі wgetінше використовується для завантаження файлів тощо. Чи є якісь причини використовувати один над іншим?


1
Визначте "правильне використання"
AB

12
Щодо голосування про закриття як на основі думки: як запитання про різницю між двома інструментами заохочує відповіді, засновані на думці?
Майкл Мартін-Смукер

1
@ MichaelMartin-Smucker "Припустимо, мені потрібно завантажити веб-сторінку, скажімо, www.google.com, чи слід шукати wget чи curl?" що це, якщо не на основі думки?
муру

2
@muru, Це залежить від того, що ви розумієте під "завантаженням веб-сторінки". Якщо ви маєте на увазі надіслати запит на http та отримати результати, завиток ідеальний. Якщо ви маєте на увазі завантажити сторінку, інші сторінки, на які вона посилається, та пов’язані з ними об’єкти, згортання не працюватиме, а wget - єдиний варіант. Між ними існують фактичні відмінності, які роблять це не на основі думки.
барбекю

3
@muru Я думаю, що у нас просто різні трактування настроїв. У моїй інтерпретації почуття: "Я чув про ці два інструменти, які, здається, роблять те саме. Яка різниця між ними, і коли я повинен вибрати один над іншим? Що з цього конкретного випадку?" ... що здається мені розумним питанням.
Майкл Мартін-Смукер

Відповіді:


33

Після того, як ви визначили "належне використання", використовуйте wget.

Чому? Ось чому:

Рекурсивний! Найважливішою стороною wget у порівнянні з curl є його здатність завантажувати рекурсивно або навіть просто завантажувати все, на що йдеться, з віддаленого ресурсу, будь то HTML-сторінка або список FTP-каталогів.


Безсоромно скопійовано звідси

curl

  • бібліотека . curlпрацює на libcurlбазі - міжплатформна бібліотека зі стабільним API, яку можуть використовувати кожен і кожен. Ця різниця є головною, оскільки створює зовсім інше ставлення до того, як робити речі всередині. Так само трохи складніше створити бібліотеку, ніж «простий» інструмент командного рядка.

  • труби . curlпрацює більше, як традиційна catкоманда Unix , вона надсилає більше матеріалів 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 auth . curlпідтримує більше методів аутентифікації HTTP, особливо через проксі-сервери HTTP: Basic, Digest, NTLM та Negotiate

  • СОКОВИ . curlпідтримує кілька версій протоколу SOCKS для доступу проксі

  • Двонаправлені . curlпропонує можливість завантаження та надсилання. wgetпропонує лише звичайну підтримку HTTP POST.

  • Відправка даних із багаточастинними формами / форматами HTTP , що дозволяє користувачам робити "завантаження" HTTP та взагалі імітувати браузери та ширше робити автоматизацію HTTP.

  • curlпідтримує gzipі надуває Content-Encoding і робить автоматичну декомпресію

  • curl пропонує і виконує декомпресію HTTP-кодованого HTTP, wget не робить

  • curl підтримує HTTP / 2, і він з'єднує подвійний стек за допомогою Happy Eyeballs

  • Набагато більше активності розробників . Хоча це може бути обговорено, я тут розглядаю три показники: активність списку розсилки, частота фіксації вихідного коду та частота випуску. Кожен, хто слідує за цими двома проектами, може побачити, що проект з завитками має набагато більший темп у всіх цих областях, і це вже протягом 10+ років. Порівняйте на openhub


wget

  • wgetє лише командним рядком Бібліотеки немає.

  • Рекурсивний ! wgetОсновною сильною стороною порівняно з curl є його здатність завантажувати рекурсивно або навіть просто завантажувати все, на що йдеться, з віддаленого ресурсу, будь то HTML-сторінка або список FTP-каталогів.

  • Старіші . wgetмає сліди до 1995 року, хоча curlїх можна відстежити не раніше кінця 1996 року.

  • GPL . wgetстановить 100% GPL v3. curl має ліцензію MIT.

  • GNU . wgetє частиною проекту GNU, і всі авторські права призначені FSF. Проект curl є повністю автономним та незалежним, взагалі не має батьківських організацій, майже з усіма авторськими правами, що належать Daniel.

  • wgetне вимагає додаткових варіантів просто завантажити віддалену URL-адресу в локальний файл, хоча curlвимагає -oабо -O.

  • wget підтримує загальнодоступний список суфіксів для обробки доменів cookie, згортання не робить.

  • wget підтримує тільки GnuTLS або OpenSSL для підтримки SSL / TLS

  • wget підтримує лише Basic auth як єдиний тип auth через HTTP-проксі

  • wget не підтримує SOCKS

  • Його здатність відновлюватися після передчасно зірваної передачі та продовжувати завантаження не має аналогічного результату.

  • wget можна набрати лише ліву руку на клавіатурі qwerty!


1
Так, wget відмінно підходить для дзеркального відображення!
joeytwiddle

1
"Проект curl є повністю автономним і незалежним, без організації батьківства, майже з усіма авторськими правами, що належать Даніелю". Не впевнений, що це погано ...
барбекю

"Його здатність відновлюватися після передчасно зламаної передачі та продовжувати завантаження не має аналогічного згортання." Я неправильно зрозумів це речення? Не curl -C -продовжується завантажене завантаження?
Сіюань Рен

1
Чому ви рекомендуєте wget ? Навіть подивившись на порівняння, які ви самі написали, завивка звучить набагато вище. 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
Розмір також має значення: на новому зображенні ubuntu розмір wget становить 2 М порівняно з завиткою 5 М, упакованою (з deps, x3 загалом розпаковано)
Eran W

19

Є багато інструментів , які можна скачати , як 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 підтримує лише Basic auth як єдиний тип аутентифікації через HTTP-проксі
  • Wget - це лише інструмент командного рядка, він не має бібліотеки.

Важливі ресурси для отримання додаткової інформації:


"wget ​​- це інструмент командного рядка, лише він має бібліотеку знань." Я не розумію цієї лінії.
Lucio

3

Вони мають багато функціональних можливостей, але curlмає більше можливостей. Тому wgetщо іноді може бути достатньо для того, щоб розгорнути man wget, але curlмені потрібно вивчити цю веб-сторінку в браузері. Я вважаю, що може зробити ваш браузер curl.


2

Є ще одна відмінність між wget і curl, які я вважаю істотними.

Wget - це автономна утиліта командного рядка, призначена головним чином для швидкого та простого завантаження Інтернет-вмісту.

Curl з іншого боку - це в основному передній кінець для потужної бібліотеки libcurl. Libcurl надає дуже потужний набір інструментів для роботи з URL-адресами у всіх їх формах та смаках і доступний майже для всіх мов та платформ. Curl в основному дає вам можливість використовувати цю бібліотеку в скриптах оболонки.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.