Sự khác biệt giữa curl và wget là gì? [đóng cửa]


38

Cả hai curlwgetđược sử dụng để tải xuống các tập tin, vv Có bất kỳ lý do để sử dụng một trong những khác?


1
Xác định "sử dụng đúng cách"
AB

12
Về việc bỏ phiếu để đóng theo quan điểm: làm thế nào để hỏi về sự khác biệt giữa hai công cụ khuyến khích các câu trả lời dựa trên ý kiến?
Michael Martin-Smucker

1
@ MichaelMartin-Smucker "Giả sử tôi cần tải xuống một trang web cho phép nói www.google.com, tôi nên tìm wget hay curl?" đó là gì nếu không dựa trên ý kiến?
muru

2
@muru, Nó phụ thuộc vào ý của bạn khi "tải xuống một trang web". Nếu bạn có nghĩa là gửi một yêu cầu http và nhận lại kết quả, curl là lý tưởng. Nếu bạn có nghĩa là tải xuống một trang, các trang khác mà nó liên kết đến và các tài sản liên quan, curl sẽ không hoạt động và wget là tùy chọn duy nhất. Có sự khác biệt thực tế giữa chúng làm cho điều này không dựa trên ý kiến.
thịt nướng

3
@muru Tôi đoán chúng ta chỉ có những cách hiểu khác nhau về tình cảm đằng sau câu hỏi. Theo cách giải thích của tôi, tình cảm là: "Tôi đã nghe nói về hai công cụ này dường như làm cùng một thứ. Sự khác biệt giữa chúng là gì và khi nào tôi nên chọn một công cụ khác? Trong trường hợp cụ thể này thì sao?" ... Có vẻ như là một câu hỏi hợp lý với tôi.
Michael Martin-Smucker

Câu trả lời:


33

Sau khi bạn đã xác định "sử dụng đúng", hãy sử dụng wget.

Tại sao? Đó là lý do:

Đệ quy! Điểm mạnh lớn của wget so với curl là khả năng tải xuống đệ quy hoặc thậm chí chỉ tải xuống mọi thứ được đề cập từ tài nguyên từ xa, có thể là trang HTML hoặc danh sách thư mục FTP.


Không biết xấu hổ sao chép từ đây

curl

  • thư viện . curlđược cung cấp bởi libcurl- một thư viện đa nền tảng với API ổn định có thể được sử dụng bởi mỗi và mọi người. Sự khác biệt này là rất lớn vì nó tạo ra một thái độ hoàn toàn khác về cách làm mọi thứ trong nội bộ. Nó cũng hơi khó để tạo một thư viện hơn là một công cụ dòng lệnh "đơn thuần".

  • ống dẫn . curlhoạt động giống như catlệnh Unix truyền thống , nó gửi nhiều thứ hơn stdoutvà đọc nhiều hơn stdintheo cách "mọi thứ đều là đường ống". wgetgiống như cp, sử dụng tương tự.

  • Bắn một lần . curlvề cơ bản được thực hiện để thực hiện chuyển dữ liệu một lần. Nó chỉ chuyển các URL mà người dùng chỉ định và không chứa bất kỳ logic tải xuống đệ quy nào cũng như bất kỳ loại trình phân tích cú pháp HTML nào.

  • Nhiều giao thức hơn . curlhỗ trợ FTP, FTPS, Gopher, HTTP, HTTPS, SCP, SFTP, TFTP, TELNET, DICT, LDAP, LDAPS, FILE, POP3, IMAP, SMB / CIFS, SMTP, RTMP và RTSP. Wget chỉ hỗ trợ HTTP, HTTPS và FTP.

  • Di động hơn . curlxây dựng và chạy trên nhiều nền tảng hơn wget. Ví dụ: OS / 400, TPF và các nền tảng "kỳ lạ" khác không phải là bản sao Unix đơn giản.

  • Thêm thư viện SSL và hỗ trợ SSL . curlcó thể được xây dựng với một trong số mười một (11!) thư viện SSL / TLS khác nhau và nó cung cấp nhiều quyền kiểm soát hơn và hỗ trợ rộng hơn cho các chi tiết giao thức. curlhỗ trợ ghim khóa công khai.

  • Xác thực HTTP . curlhỗ trợ nhiều phương thức xác thực HTTP, đặc biệt là qua các proxy HTTP: Cơ bản, Tiêu hóa, NTLM và Đàm phán

  • SOCKS . curlhỗ trợ một số phiên bản giao thức SOCKS để truy cập proxy

  • Hai chiều . curlcung cấp khả năng tải lên và gửi. wgetchỉ cung cấp hỗ trợ POST HTTP đơn giản.

  • Gửi nhiều dữ liệu / biểu mẫu dữ liệu HTTP , cho phép người dùng thực hiện "tải lên" HTTP và nói chung mô phỏng các trình duyệt và thực hiện tự động hóa HTTP ở phạm vi rộng hơn

  • curlhỗ trợ gzipvà thổi phồng mã hóa nội dung và thực hiện giải nén tự động

  • curl cung cấp và thực hiện giải nén HTTP được mã hóa chuyển, wget không

  • curl hỗ trợ HTTP / 2 và nó thực hiện kết nối ngăn xếp kép bằng Happy Eyeballs

  • Nhiều hoạt động phát triển hơn . Trong khi điều này có thể được tranh luận, tôi xem xét ba số liệu ở đây: hoạt động danh sách gửi thư, tần suất cam kết mã nguồn và tần suất phát hành. Bất cứ ai theo dõi hai dự án này đều có thể thấy rằng dự án curl có tốc độ cao hơn rất nhiều trong tất cả các lĩnh vực này, và nó đã được như vậy trong hơn 10 năm. So sánh trên opelahoma


wget

  • wgetchỉ là dòng lệnh. Không có thư viện.

  • Đệ quy ! wgetĐiểm mạnh lớn nhất so với curl là khả năng tải xuống đệ quy hoặc thậm chí chỉ tải xuống mọi thứ được đề cập từ một tài nguyên từ xa, có thể là trang HTML hoặc danh sách thư mục FTP.

  • Cũ hơn . wgetcó dấu vết từ năm 1995, trong khi curlcó thể được theo dõi trở lại không sớm hơn cuối năm 1996.

  • GPL . wgetlà 100% GPL v3. curl được MIT cấp phép.

  • GNU . wgetlà một phần của dự án GNU và tất cả bản quyền được gán cho FSF. Dự án curl hoàn toàn độc lập và độc lập, hoàn toàn không có tổ chức nuôi dạy con cái với hầu hết các bản quyền thuộc sở hữu của Daniel.

  • wgetkhông yêu cầu thêm tùy chọn để chỉ cần tải xuống một URL từ xa vào một tệp cục bộ, trong khi curlyêu cầu -ohoặc -O.

  • wget hỗ trợ Danh sách Suffix công cộng để xử lý tên miền cookie, curl thì không.

  • wget chỉ hỗ trợ GnuTLS hoặc OpenSSL để hỗ trợ SSL / TLS

  • wget chỉ hỗ trợ Xác thực cơ bản là loại xác thực duy nhất trên proxy HTTP

  • wget không hỗ trợ SOCKS

  • Khả năng phục hồi từ chuyển khoản bị hỏng sớm và tiếp tục tải xuống không có đối tác trong curl.

  • wget có thể được gõ bằng cách chỉ sử dụng tay trái trên bàn phím qwerty!


1
Vâng, wget là tuyệt vời để phản chiếu!
joeytwiddle

1
"Dự án curl hoàn toàn độc lập và độc lập, hoàn toàn không có tổ chức nuôi dạy con cái với hầu hết các bản quyền thuộc sở hữu của Daniel." Không chắc đó là điều xấu ...
thịt nướng

"Khả năng phục hồi sau khi chuyển khoản bị hỏng sớm và tiếp tục tải xuống không có đối tác nào." Tôi đã hiểu câu này sai? Không curl -C -tiếp tục tải xuống bị hỏng?
Siyuan Ren

1
Tại sao bạn đề nghị wget ? Ngay cả sau khi nhìn vào sự so sánh mà bạn đã viết cho mình, curl âm thanh là cao hơn nhiều so. 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
Kích thước cũng quan trọng: trên một hình ảnh Ubuntu mới, kích thước wget là 2M so với cuộn 5M được đóng gói (với deps, tổng số x3 đã được giải nén)
Eran W

19

Có rất nhiều công cụ có thể tải về như curl, snarf, wget, pavuk, fget, fetch, lftp, aria2, HTTrackvv Sử dụng nó theo yêu cầu của bạn và những tính năng mà bạn muốn sử dụng cùng với tải. Kiểm tra bảng tính năng và sử dụng cho phù hợp.

Curl:

  • Curl hỗ trợ thêm giao thức FTP, FTPS, HTTP, HTTPS, SCP, SFTP, TFTP, TELNET, DICT, LDAP, LDAPS, FILE, POP3, IMAP, SMTP, RTMP và RTSP
  • Curl hỗ trợ thêm thư viện SSL
  • Curl hỗ trợ nhiều phương thức xác thực HTTP hơn, đặc biệt là qua các proxy HTTP: Cơ bản, Tiêu hóa, NTLM và Đàm phán
  • Curl được cung cấp bởi libcurl - một thư viện đa nền tảng với API ổn định có thể được sử dụng bởi mọi người và mọi người

Quên:

  • Trong khi wget hỗ trợ HTTP, HTTPS và FTP
  • Wget chỉ hỗ trợ GnuTLS hoặc OpenSSL để hỗ trợ SSL / TLS
  • Wget chỉ hỗ trợ Xác thực cơ bản là loại xác thực duy nhất trên HTTP proxy
  • Wget chỉ là công cụ dòng lệnh, nó không có thư viện.

Tài nguyên quan trọng để biết thêm:


"wget ​​là công cụ dòng lệnh chỉ có nó biết thư viện." Tôi không hiểu dòng đó.
Lucio

3

Chúng có nhiều chức năng chung, nhưng curlcó nhiều tùy chọn hơn. Đối với wgetnó đôi khi có thể đủ để lướt qua man wget, nhưng đối với curltôi cần nghiên cứu trang web này trong một trình duyệt. Tôi tin rằng bất cứ điều gì trình duyệt của bạn có thể làm, curlcũng có thể làm.


2

Có một sự khác biệt khác giữa wget và curl mà tôi nghĩ là quan trọng.

Wget là một tiện ích dòng lệnh độc lập chủ yếu dành cho việc truy xuất nội dung internet một cách nhanh chóng và đơn giản.

Mặt khác, Curl về cơ bản là một thiết bị đầu cuối cho thư viện libcurl mạnh mẽ. Libcurl cung cấp một bộ công cụ rất mạnh để làm việc với các URL ở mọi hình thức và hương vị của chúng, và có sẵn cho hầu hết tất cả các ngôn ngữ và nền tảng. Curl về cơ bản cung cấp cho bạn khả năng sử dụng thư viện này trong các kịch bản shell.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.