Computer >> Máy Tính >  >> Hệ thống >> Linux

Cách sử dụng cURL để truyền dữ liệu dòng lệnh và hơn thế nữa

Cách sử dụng cURL để truyền dữ liệu dòng lệnh và hơn thế nữa

Nếu bạn đã làm theo hướng dẫn cài đặt tập trung vào thiết bị đầu cuối cho các ứng dụng Linux trong một thời gian, có thể bạn đã bắt gặp curl lệnh vào lúc này hay lúc khác. cURL là một công cụ dòng lệnh để truyền dữ liệu bằng URL. Một trong những cách sử dụng đơn giản nhất là tải xuống tệp thông qua dòng lệnh. Tuy nhiên, điều này là lừa đảo vì cURL là một công cụ cực kỳ mạnh mẽ có thể làm được nhiều hơn thế.

cURL là gì?

Được viết ban đầu bởi Daniel Sternberg vào năm 1996 để lấy dữ liệu tài chính từ các máy chủ web và phát nó đến các kênh IRC, cURL đã phát triển để trở thành một công cụ mạnh mẽ để lấy dữ liệu mà không cần phải sử dụng trình duyệt. Nếu bạn luôn sử dụng thiết bị đầu cuối, đây sẽ là một trong những công cụ quan trọng hơn trong kho vũ khí của bạn.

Trong hầu hết các bản phân phối Linux, cURL được cài đặt sẵn trong hệ thống và bạn có thể sử dụng nó ngay lập tức. Ngay cả khi nó chưa được cài đặt, nó cũng được tìm thấy trong hầu hết các kho lưu trữ, vì vậy bạn có thể dễ dàng cài đặt nó bằng cách sử dụng Trung tâm phần mềm.

Đối với Windows, nó không có lệnh "curl-like" và macOS đã cài đặt sẵn cURL nhưng không cung cấp nhiều cờ như phiên bản Linux.

Cài đặt

Trước khi tiếp tục, chúng tôi phải đảm bảo rằng cURL đã được cài đặt trên hệ thống của chúng tôi.

Linux

Trong các bản phân phối dựa trên Debian / Ubuntu, sử dụng lệnh sau để cài đặt cURL:

sudo apt install curl

Trong các bản phân phối dựa trên Arch:

sudo pacman -S curl

Trong Fedora / CentOS / RHEL:

sudo dnf install curl

macOS

Đối với macOS, nó đã được cài đặt sẵn, vì vậy bạn không cần phải làm gì cả.

Windows

  1. Đối với Windows 7/10/11, hãy truy cập trang tải xuống cURL và chọn trong số các gói 64 bit hoặc 32 bit, tùy theo kiến ​​trúc bạn đang chạy. Nếu bạn không biết kiến ​​trúc của mình, thì 64-bit là một lựa chọn an toàn vì phần lớn phần cứng được sản xuất sau năm 2006 đều sử dụng nó.
  2. Tạo một thư mục trực tiếp trên ổ đĩa hệ thống hoặc trong “C:\ Program Files \” và gọi nó là “cURL.”
Cách sử dụng cURL để truyền dữ liệu dòng lệnh và hơn thế nữa
  1. Quay lại tệp zip bạn đã tải xuống, mở nó và tìm “curl.exe” bên trong thư mục “bin”. Sao chép nó vào thư mục cURL bạn đã tạo. EXE bạn đã sao chép hoàn toàn độc lập và có khả năng chạy mọi hoán vị mà bạn có thể chạy trên Linux.
  2. Để làm cho lệnh này thực sự hữu ích, chúng tôi phải thêm nó vào biến PATH trong Windows để nó có thể chạy từ dấu nhắc lệnh ở bất cứ đâu.
  • Nhấp vào menu Bắt đầu của bạn, nhập môi trường và nhấn Enter .
  • Nhấp vào “Biến môi trường…” Bây giờ bạn sẽ ở trong cài đặt biến môi trường của mình.
Cách sử dụng cURL để truyền dữ liệu dòng lệnh và hơn thế nữa
  • Chọn biến môi trường “Đường dẫn”, sau đó nhấp vào “Chỉnh sửa…“
  • Khi ở trong cửa sổ hộp thoại chỉnh sửa đường dẫn, hãy nhấp vào “Mới” và nhập thư mục chứa “curl.exe” của bạn - ví dụ:“C:\ Program Files \ cURL”.
Cách sử dụng cURL để truyền dữ liệu dòng lệnh và hơn thế nữa
  • Nhấp vào “OK” trên cửa sổ hộp thoại bạn đã mở trong quá trình này và tận hưởng cURL trong thiết bị đầu cuối của bạn!

Mọi cờ trong cURL có thể sử dụng được trong Linux sẽ hoạt động trong phiên bản Windows.

Lời cho người khôn ngoan: hãy nhớ rằng dấu nhắc lệnh không bao giờ được nhầm lẫn với Windows Terminal. Windows Terminal đi kèm với phiên bản cURL riêng có trong PowerShell phục vụ chức năng tương tự nhưng hoạt động hoàn toàn khác.

Sử dụng cURL

Để bắt đầu, chỉ cần nhập curl maketecheasier.com trong thiết bị đầu cuối của bạn và nhấn Enter .

Nếu bạn không nhận được bất kỳ đầu ra nào, đó là do máy chủ của trang web này không được định cấu hình để phản hồi các yêu cầu kết nối ngẫu nhiên tới miền không phải www của nó. Nếu bạn đã thăm dò ý kiến ​​một máy chủ không tồn tại hoặc không trực tuyến, bạn sẽ nhận được thông báo lỗi cho biết rằng cURL không thể giải quyết máy chủ.

Cách sử dụng cURL để truyền dữ liệu dòng lệnh và hơn thế nữa

Để cURL làm điều gì đó thực sự hữu ích, chúng tôi sẽ phải chỉ định một giao thức. Trong ví dụ của chúng tôi, chúng tôi đang sử dụng giao thức HTTPS để truy vấn trang chủ của trang web này. Nhập curl https://www.maketecheasier.com .

Cách sử dụng cURL để truyền dữ liệu dòng lệnh và hơn thế nữa

Nếu mọi việc suôn sẻ, bạn nên nhìn chằm chằm vào một bức tường dữ liệu khổng lồ. Để làm cho dữ liệu đó dễ sử dụng hơn một chút, chúng tôi có thể yêu cầu cURL đặt nó vào tệp HTML:

curl https://www.maketecheasier.com > ~/Downloads/mte.html
Cách sử dụng cURL để truyền dữ liệu dòng lệnh và hơn thế nữa

Lệnh này đưa nội dung đầu ra của trang web của chúng tôi vào tệp HTML trong thư mục Tải xuống của bạn. Điều hướng đến thư mục có trình quản lý tệp yêu thích của bạn và nhấp đúp vào tệp bạn vừa tạo. Nó sẽ mở ra ảnh chụp nhanh đầu ra HTML của trang chủ của trang web này.

Cách sử dụng cURL để truyền dữ liệu dòng lệnh và hơn thế nữa

Tương tự, bạn có thể sử dụng -o cờ để đạt được kết quả tương tự:

curl -o ~/Downloads/mte.html https://www.maketecheasier.com

Chuyển hướng sau

Hầu hết các trang web tự động chuyển hướng lưu lượng truy cập từ giao thức “http” sang “https”. Trong cURL, bạn có thể đạt được điều tương tự với -L lá cờ. Điều này sẽ tự động theo sau chuyển hướng 301 cho đến khi nó đến một trang hoặc tệp có thể đọc được.

 curl -L https://google.com.
Cách sử dụng cURL để truyền dữ liệu dòng lệnh và hơn thế nữa

Tiếp tục tải xuống

Khi tải xuống các tệp lớn, tùy thuộc vào tốc độ Internet của bạn, sự gián đoạn có thể gây khó chịu vô cùng. Rất may, cURL có chức năng tiếp tục. Chuyển -C flag sẽ giải quyết vấn đề này trong thời gian ngắn.

Để hiển thị một ví dụ trong thế giới thực, tôi đã cố ý làm gián đoạn quá trình tải xuống ISO bản phát hành thử nghiệm của Debian bằng cách nhấn Ctrl C đang nắm bắt lấy nó.

Cách sử dụng cURL để truyền dữ liệu dòng lệnh và hơn thế nữa

Đối với lệnh tiếp theo của chúng tôi, đang nhập -C lá cờ. Ví dụ,

curl -C - -o ~/Downloads/debiantesting.iso -L https://cdimage.debian.org/cdimage/weekly-builds/amd64/iso-dvd/debian-testing-amd64-DVD-1.iso
Cách sử dụng cURL để truyền dữ liệu dòng lệnh và hơn thế nữa

Quá trình tải xuống đã bắt đầu thành công từ khi nó dừng lại.

Tải xuống nhiều tệp

Vì cURL không có cách trực quan nhất để tải xuống nhiều tệp, nên có hai phương pháp, mỗi phương pháp có sự thỏa hiệp riêng.

Nếu các tệp bạn đang tải xuống được liệt kê (ví dụ:tệp1, tệp2, v.v.), bạn có thể sử dụng dấu ngoặc để nhận đầy đủ các tệp và “#” trong đầu ra mà bạn chỉ định với -o lá cờ. Để làm cho điều này bớt khó hiểu hơn một chút, đây là một ví dụ:

curl "https://example.com/file[1-5].zip" -o "#1_#2"

Một cách đơn giản hơn để làm điều này là với -O ( --remote-name ). Cờ này làm cho cURL tải tệp từ xa xuống tệp cục bộ có cùng tên. Vì bạn không phải chỉ định đầu ra, bạn nên sử dụng lệnh này khi thiết bị đầu cuối đang mở trong thư mục bạn muốn tải tệp xuống.

curl -O "https://example.com/file1.zip" -O "https://example.com/file2.zip"

Nếu bạn có một lượng lớn tệp liệt kê để tải xuống, hãy --remote-name-all là một lá cờ tốt hơn cho điều này:

curl --remote-name-all "https://example.com/file[1-5].zip"

Bạn thậm chí có thể chỉ định các tệp không được liệt kê đến từ cùng một trang web mà không cần phải nhập lại URL bằng dấu ngoặc:

curl --remote-name-all "https://example.com/{file1.zip,anotherfile.zip,thisisfun.zip}"

Tải xuống bằng xác thực

Tải xuống các tệp yêu cầu xác thực (ví dụ:khi lấy từ máy chủ FTP riêng) bằng -u lá cờ. Mọi yêu cầu xác thực phải được thực hiện với tên người dùng đầu tiên và mật khẩu thứ hai, với dấu hai chấm phân cách hai. Dưới đây là một ví dụ để làm cho mọi thứ trở nên đơn giản:

curl -u username:password -o ~/Downloads/file.zip ftp://example.com/file.zip

Thao tác này sẽ xác thực bonobo_bob người bạn của chúng tôi vào máy chủ FTP và tải tệp xuống thư mục Tải xuống.

Tách và Hợp nhất Tệp

Nếu vì bất kỳ lý do gì bạn muốn tải xuống một tệp lớn và chia nó thành nhiều phần, bạn có thể làm như vậy với --range của cURL lá cờ. Với --range , bạn phải chỉ định byte bạn muốn bắt đầu cho đến byte bạn muốn kết thúc. Nếu bạn không chỉ định phần cuối cho dải ô, nó sẽ chỉ tải xuống phần còn lại của tệp.

Trong lệnh bên dưới, cURL sẽ tải xuống 100 MB hình ảnh cài đặt đầu tiên của Arch Linux:

curl --range 0-99999999 -o arch.part1 -L https://mirrors.chroot.ro/archlinux/iso/2021.11.01/archlinux-2021.11.01-x86_64.iso

Đối với 100 MB tiếp theo, sử dụng --range 100000000-199999999 , v.v. Bạn có thể xâu chuỗi các lệnh này bằng cách sử dụng && toán hạng:

curl --range 0-99999999 -o arch.part1 -L https://mirrors.chroot.ro/archlinux/iso/2021.11.01/archlinux-2021.11.01-x86_64.iso && \
curl --range 100000000-199999999 -o arch.part2 -L https://mirrors.chroot.ro/archlinux/iso/2021.11.01/archlinux-2021.11.01-x86_64.iso && \
curl --range 200000000-299999999 -o arch.part3 -L https://mirrors.chroot.ro/archlinux/iso/2021.11.01/archlinux-2021.11.01-x86_64.iso && \
curl --range 300000000-399999999 -o arch.part4 -L https://mirrors.chroot.ro/archlinux/iso/2021.11.01/archlinux-2021.11.01-x86_64.iso && \
curl --range 400000000-499999999 -o arch.part5 -L https://mirrors.chroot.ro/archlinux/iso/2021.11.01/archlinux-2021.11.01-x86_64.iso && \
curl --range 500000000-599999999 -o arch.part6 -L https://mirrors.chroot.ro/archlinux/iso/2021.11.01/archlinux-2021.11.01-x86_64.iso && \
curl --range 600000000-699999999 -o arch.part7 -L https://mirrors.chroot.ro/archlinux/iso/2021.11.01/archlinux-2021.11.01-x86_64.iso && \
curl --range 700000000- -o arch.part8 -L https://mirrors.chroot.ro/archlinux/iso/2021.11.01/archlinux-2021.11.01-x86_64.iso

Nếu bạn đã làm theo cấu trúc lệnh trên cho thư, tám tệp sẽ xuất hiện ở nơi bạn yêu cầu cURL tải chúng xuống.

Cách sử dụng cURL để truyền dữ liệu dòng lệnh và hơn thế nữa

Để hợp nhất các tệp này, bạn sẽ phải sử dụng cat nếu bạn đang sử dụng Linux hoặc macOS như vậy:

cat arch.part? > arch.iso

Đối với Windows, bạn sẽ phải sử dụng copy lệnh như thế này:

copy /b arch.part* arch.iso

Các tính năng hữu ích khác

Có rất nhiều cờ và cách sử dụng cho cURL:

  • - # - Sử dụng thanh tiến trình để cho biết bạn đang ở bao xa trong những gì bạn đang nắm bắt. Ví dụ: curl - # https://asite.com/somefile.zip> ~ / somefile.zip .
  • -a - Yêu cầu cURL để thêm vào một tệp chứ không phải ghi đè lên nó. Ví dụ: curl -ao ~ / collab-full.x https://example-url.com/collab-part26.x .
  • --head - Chỉ lấy tiêu đề phản hồi từ máy chủ mà không có dữ liệu đầu ra. Điều này hữu ích khi bạn đang gỡ lỗi một trang web hoặc xem trước các phản hồi được lập trình của máy chủ cho khách hàng. Ví dụ: curl --head https://example-url.com .
  • --limit-rate - Đặt hàng tải xuống với băng thông hạn chế. Nó hữu ích trong những trường hợp bạn không muốn cURL chiếm hết băng thông có sẵn trong hệ thống của mình. Một số đơn giản sẽ được hiểu là byte trên giây. K đại diện cho kilobyte mỗi giây; M đại diện cho megabyte mỗi giây. Ví dụ: curl --limit-rate 8M https://example-url.com/file.zip> ~ / file.zip .
  • -o - Như đã đề cập trước đó, xác định một tệp đầu ra cho cURL để sử dụng. Ví dụ: curl -o ~ / Downloads / file.zip https://thefileplace.com/file.zip -o file2.zip https://thefileplace.com/file2.zip .
  • --proxy - Nếu bạn muốn làm việc với proxy, đây là cách để làm điều đó. Ví dụ: curl --proxy proxyurl:port https://example-url.com/file.zip> ~ file.zip .

cURL so với Wget

Cả hai đều được phát hành trong cùng một năm (1996), cURL và Wget là những chương trình chị em với khá nhiều người quan sát bình thường. Tuy nhiên, hãy lặn sâu hơn một chút và bạn có thể thấy hai chị em này có những mục đích khác nhau.

Quên

  • Nó được xây dựng hoàn chỉnh từ đầu để lấy dữ liệu từ Internet.
  • Không cần -L hoặc -o cờ như cURL; chỉ cần nhập wget [url] và bắt đầu!
  • Có thể tải xuống đệ quy để lấy mọi thứ trong thư mục có -r cờ.
  • Có tất cả các chức năng mà người dùng cần để sử dụng hàng ngày và phục vụ cho các tác vụ sysadmin hàng ngày.
  • (Trong Linux) Không cần nhiều phụ thuộc; tất cả chúng sẽ có sẵn ngay khi xuất xưởng.

cURL

  • Kho cờ rộng lớn và các chức năng hữu ích để truy xuất từ ​​xa.
  • Hỗ trợ mạng cục bộ (LDAP) và máy in mạng (Samba).
  • Hoạt động tốt với các thư viện nén gzip.
  • Phụ thuộc vào libcurl, cho phép các nhà phát triển viết phần mềm hoặc tập lệnh cơ sở bao gồm chức năng của cURL.

Tóm lại, Wget là “hộp công cụ của mọi người” để lấy nội dung từ Internet, trong khi cURL mở rộng điều này với quyền kiểm soát chi tiết hơn cho người dùng thành thạo và quản trị viên hệ thống.

Câu hỏi Thường gặp

1. Tôi gặp lỗi chứng chỉ trong Linux. Làm cách nào để khắc phục sự cố này?

Nếu bạn gặp lỗi có nội dung như “tổ chức phát hành chứng chỉ ngang hàng đã được đánh dấu là không đáng tin cậy”, cách dễ nhất để khắc phục điều này là cài đặt lại gói chứng chỉ phổ biến trong bản phân phối của bạn.

Đối với hệ thống dựa trên Debian / Ubuntu:

sudo apt reinstall ca-certificates

Đối với Fedora / CentOS / RHEL:

dnf reinstall ca-certificates

Đối với hệ thống dựa trên Arch:

pacman -S ca-certificates

Lưu ý rằng trong Arch, bạn có thể muốn xóa bộ nhớ cache gói của mình bằng cách sử dụng pacman -Scc trước khi cài đặt lại gói chứng chỉ.

Nếu bạn vẫn gặp lỗi này, có thể đã xảy ra lỗi ở phần cuối của máy chủ.

2. Có an toàn khi chạy các lệnh cURL và bash cùng nhau không?

Mặc dù không phải là cách phổ biến nhất để cài đặt các ứng dụng Linux, nhưng có một số nhà phát triển (chẳng hạn như những người đứng sau NodeJS) không cho bạn lựa chọn nào khác ngoài việc sử dụng curl cùng với lệnh truy cập gốc chạy qua bash (ví dụ: curl [đối số] | sudo -E bash - ) để cài đặt phần mềm.

Nó có thể trông hơi đáng sợ, nhưng nếu những người đứng sau ứng dụng đáng tin cậy, thì rất ít khả năng bạn sẽ phá vỡ điều gì đó. Các tác nhân độc hại ở khắp mọi nơi và có thể xâm nhập vào các kho lưu trữ như Arch’s AUR, vì vậy hãy cài đặt bằng cách sử dụng curl kết hợp với các lệnh truy cập root thường không an toàn hơn làm như vậy thông qua trình quản lý gói của bạn.

3. Tôi có thể sử dụng cURL với Tor không?

Đúng! Khởi động Tor Browser (hoặc một dịch vụ tor độc lập) và sử dụng --proxy lá cờ. Tor cung cấp cho bạn một proxy cục bộ mà bạn có thể sử dụng để che IP của mình trong các ứng dụng khác. Dưới đây là một ví dụ về cURL được sử dụng với Tor:

curl --proxy localhost:9050 https://example.com

Các dịch vụ Tor độc lập sẽ sử dụng 9050 làm cổng lắng nghe của chúng, trong khi trình duyệt Tor sử dụng cổng 9150.

Kết thúc

cURL đã chứng tỏ khả năng phục hồi trong bối cảnh thay đổi kết cấu của thế giới Linux, giữ vị trí của nó như một công cụ quan trọng trong kho vũ khí của người dùng thiết bị đầu cuối.

Nếu bạn chưa quen với dòng lệnh, hãy xem một số lệnh Linux hữu ích nhất. Nếu bạn chỉ muốn tìm kiếm trên Web thay vì tải xuống dữ liệu từ Internet, bạn cũng có thể duyệt trên thiết bị đầu cuối.