Image default
Máy Tính

8 Mẹo Sử Dụng Lệnh `curl` Hiệu Quả và Đa Năng Cho Người Dùng Việt

curl là một trong những công cụ dòng lệnh mạnh mẽ và linh hoạt nhất mà mọi người dùng công nghệ, từ lập trình viên đến quản trị viên hệ thống, đều nên làm chủ. Với khả năng hỗ trợ toàn diện các giao thức HTTP và tính đa dụng vượt trội, nếu có một URL cho nó, curl gần như có thể thực hiện mọi tác vụ. Bài viết này sẽ đi sâu vào 8 mẹo sử dụng curl hàng đầu, giúp bạn khai thác tối đa sức mạnh của công cụ này trong các tình huống thực tế.

1. Lấy Nội Dung Trang Web

Ở dạng cơ bản nhất, curl sẽ lấy nội dung của một URL và hiển thị trực tiếp trên terminal của bạn. Đây là cách nhanh chóng để xem mã nguồn HTML của một trang web hoặc dữ liệu trả về từ một API đơn giản.

curl info.cern.ch

Tùy thuộc vào loại nội dung của URL, bạn sẽ thấy kết quả khác nhau. Với một trang web, bạn sẽ nhận được mã nguồn HTML.

Mã nguồn HTML của một trang web được hiển thị trực tiếp trên terminal sau khi sử dụng lệnh curl cơ bảnMã nguồn HTML của một trang web được hiển thị trực tiếp trên terminal sau khi sử dụng lệnh curl cơ bản

Bạn có thể dễ dàng chuyển hướng đầu ra này vào một tệp để lưu trữ nội dung trang web:

curl info.cern.ch > info.cern.ch.html

curl sẽ tự động nhận diện việc bạn đang chuyển hướng đầu ra thông thường và gửi thông tin thời gian chuyển giao dữ liệu đến stderr, giúp bạn theo dõi quá trình.

Thông tin thời gian của quá trình tải trang web được hiển thị khi lệnh curl chuyển hướng nội dung vào một fileThông tin thời gian của quá trình tải trang web được hiển thị khi lệnh curl chuyển hướng nội dung vào một file

Lưu ý rằng URL có thể chứa các ký tự đặc biệt có ý nghĩa với shell như ? hoặc #. Để tránh lỗi, hãy luôn đặt URL trong dấu nháy đơn (' ') nếu bạn không chắc chắn:

curl 'info.cern.ch'

2. Tải File Từ Internet

Khi bạn cố gắng sử dụng curl để tải một tệp nhị phân như hình ảnh hoặc tài liệu, bạn có thể thấy thông báo lỗi “Binary output can mess up your terminal”. Điều này xảy ra vì curl mặc định in nội dung phản hồi ra màn hình. Trong trường hợp tệp nhị phân, đây gần như chắc chắn không phải điều bạn muốn.

Để giải quyết vấn đề này, hãy sử dụng tùy chọn --output (hoặc -o viết tắt) để chỉ định một tệp mà curl sẽ lưu trữ đầu ra, thay vì in ra màn hình:

curl -o neo-the-cat.jpg https://placecats.com/neo/300/200

Lệnh này sẽ lưu tệp từ URL đã cho vào thư mục hiện tại. Tương tự như khi chuyển hướng output, curl sẽ hiển thị thông tin chi tiết về thời gian tải xuống. Nếu bạn muốn một thanh tiến trình đơn giản hơn, hãy dùng tùy chọn -# hoặc --progress-bar:

curl --progress-bar -o neo-the-cat.jpg https://placecats.com/neo/300/200

Kết quả từ lệnh curl tải file ảnh, một ví dụ hiển thị thanh tiến trình đơn giảnKết quả từ lệnh curl tải file ảnh, một ví dụ hiển thị thanh tiến trình đơn giản

3. Cài Đặt Phần Mềm Qua Dòng Lệnh

Đôi khi, bạn sẽ thấy các hướng dẫn cài đặt phần mềm yêu cầu sử dụng curl. Ví dụ, atuin (một công cụ thay thế cho lệnh history) có hướng dẫn cài đặt như sau:

curl --proto '=https' --tlsv1.2 -LsSf https://setup.atuin.sh | sh

Nếu bạn mở URL đó trong trình duyệt, bạn sẽ thấy một script shell thực hiện việc cài đặt. Việc tải xuống và chạy script này bằng một dòng lệnh là một cách nhanh chóng. Lưu ý rằng đầu ra của script này được “piped” (chuyển hướng qua đường ống) đến sh, nơi nó sẽ được thực thi như một script shell.

Các tùy chọn curl được sử dụng trong ví dụ trên có ý nghĩa:

  • --proto '=https': Đảm bảo curl sử dụng giao thức HTTPS.
  • --tlsv1.2: Buộc curl sử dụng TLS phiên bản 1.2 trở lên để tăng cường bảo mật.
  • -L: Tự động theo dõi các redirect (chuyển hướng).
  • -sS: Ẩn thanh tiến trình nhưng vẫn hiển thị thông báo lỗi.
  • -f: Xử lý lỗi HTTP như một lỗi lệnh, đảm bảo không có thông báo lỗi nào được chuyển đến sh, tránh các hành động nguy hiểm tiềm ẩn.

Việc chạy một script shell tải từ internet tiềm ẩn rủi ro bảo mật vì bạn không biết chính xác nó sẽ làm gì. Bạn không chỉ cần tin tưởng vào nguồn gốc mà còn phải đảm bảo an toàn khỏi các cuộc tấn công Man-in-the-Middle. HTTPS có thể giúp giảm thiểu rủi ro này, nhưng để cẩn thận hơn, bạn nên tải tệp xuống, kiểm tra nội dung trước khi thực thi.

4. Kiểm Tra Địa Chỉ IP Công Khai Của Bạn

Một ứng dụng thực tế và nhanh chóng của curl là kiểm tra địa chỉ IP công khai của bạn, nhờ dịch vụ tại ifconfig.co:

curl ifconfig.co

Trang web sẽ phản hồi bằng địa chỉ IP công khai của bạn dưới dạng văn bản thuần túy.

Địa chỉ IP công khai được hiển thị rõ ràng trên terminal khi sử dụng lệnh curl với ifconfig.coĐịa chỉ IP công khai được hiển thị rõ ràng trên terminal khi sử dụng lệnh curl với ifconfig.co

Đầu ra mặc định này là văn bản thuần túy, làm cho nó trở thành một tài nguyên tuyệt vời cho các tác vụ tự động hóa. Bạn có thể nhận thấy một kết quả rất khác nếu truy cập cùng URL này trong trình duyệt web của mình:

Giao diện trang chủ ifconfig.co trên trình duyệt web hiển thị chi tiết địa chỉ IP công khai, quốc gia và khu vựcGiao diện trang chủ ifconfig.co trên trình duyệt web hiển thị chi tiết địa chỉ IP công khai, quốc gia và khu vực

Điều này là do trang web hoạt động khác nhau dựa trên User-Agent của bạn. Mặc định, curl gửi một User-Agent như “curl/8.7.1”. Nếu bạn cần đặt giá trị này thành một cái gì đó khác (ví dụ: để kiểm thử), hãy sử dụng tùy chọn -A hoặc --user-agent:

curl -s --user-agent "my pretend browser" ifconfig.co | head

Bây giờ, trang ifconfig.co sẽ phản hồi bằng HTML, giống như khi bạn truy cập bằng trình duyệt web.

Mã nguồn HTML trả về từ ifconfig.co khi lệnh curl được gửi với User-Agent đã thay đổiMã nguồn HTML trả về từ ifconfig.co khi lệnh curl được gửi với User-Agent đã thay đổi

5. Hiển Thị Header Của Yêu Cầu và Phản Hồi

Đôi khi, bạn chỉ muốn lấy các header phản hồi từ một URL. Điều này hữu ích khi gỡ lỗi hoặc kiểm tra các header cache để xem liệu bạn có cần tải lại tệp hay không. Để chỉ xem các header phản hồi, hãy sử dụng tùy chọn -I hoặc --head:

curl -I example.com

Các header phản hồi HTTP bao gồm Content-Type và Last-Modified được hiển thị bằng lệnh curlCác header phản hồi HTTP bao gồm Content-Type và Last-Modified được hiển thị bằng lệnh curl

Lệnh này sẽ gửi một yêu cầu HEAD, nhưng không phải tất cả các máy chủ web đều hỗ trợ. Nếu bạn gặp lỗi, bạn có thể yêu cầu curl gửi yêu cầu GET và chỉ xuất các header:

curl -I -X GET example.com

Nếu bạn muốn xem cả các header yêu cầu mà curl gửi đi, hãy sử dụng tùy chọn --verbose hoặc -v:

curl -v -I example.com

Kết quả chi tiết từ lệnh curl hiển thị cả header yêu cầu và phản hồi bằng cách sử dụng tùy chọn verbose và headKết quả chi tiết từ lệnh curl hiển thị cả header yêu cầu và phản hồi bằng cách sử dụng tùy chọn verbose và head

6. Tương Tác Với API

Khi làm việc với API, các client mạnh mẽ như Postman hoặc Posting giúp bạn tự động hóa và gỡ lỗi tác vụ. Tuy nhiên, curl cũng cực kỳ hữu ích để khám phá cách API hoạt động.

Dịch vụ DummyJSON là một điểm khởi đầu tuyệt vời. Trang web này cung cấp một API mẫu với dữ liệu giả, bạn có thể sử dụng để kiểm thử ứng dụng client và các chương trình của riêng mình. Bạn có thể sử dụng các endpoint khác nhau để kiểm tra chuyển hướng, thử nghiệm ủy quyền và mô phỏng độ trễ thời gian hoặc phản hồi ngẫu nhiên.

Thử nghiệm dịch vụ với curl đơn giản như truyền endpoint thích hợp:

curl https://dummyjson.com/test

Bạn sẽ thấy một tài liệu JSON đơn giản trong phản hồi, với hai thuộc tính. Thuộc tính method sẽ phản ánh phương thức HTTP của yêu cầu của bạn.

Dữ liệu được định dạng JSON trả về từ yêu cầu curl tới dummyjson.comDữ liệu được định dạng JSON trả về từ yêu cầu curl tới dummyjson.com

Một khi bạn đã lấy dữ liệu từ một API, bạn có thể dễ dàng xử lý nó bằng các công cụ dòng lệnh tiêu chuẩn. Ví dụ, bạn có thể xử lý dữ liệu JSON bằng jq. Dòng lệnh này lấy dữ liệu sản phẩm bằng curl, sau đó chuyển nó cho jq để trích xuất sản phẩm đầu tiên:

curl https://dummyjson.com/products | jq '.products[0]' | more

Dữ liệu sản phẩm dưới dạng JSON được trích xuất từ dummyjson.com bằng cách kết hợp lệnh curl và jqDữ liệu sản phẩm dưới dạng JSON được trích xuất từ dummyjson.com bằng cách kết hợp lệnh curl và jq

7. Đọc RSS Feed

curl là một công cụ lý tưởng để lấy và kiểm tra nội dung của các RSS feed, nhờ sự tiện lợi và hỗ trợ mọi hoạt động HTTP cấp thấp cần thiết.

Ví dụ, bạn có thể lấy một RSS feed và kiểm tra nội dung của nó bằng curl:

curl -s https://www.w3.org/blog/feed/ | more

Dữ liệu định dạng XML từ một RSS feed được lấy thành công bằng yêu cầu curlDữ liệu định dạng XML từ một RSS feed được lấy thành công bằng yêu cầu curl

Nếu bạn đã cài đặt libxml, bạn có thể xử lý đầu ra XML bằng xmllint:

curl -s https://www.w3.org/blog/feed/ | xmllint --xpath '//channel/title/text()' -

Dòng lệnh này sử dụng xmllint để đánh giá một biểu thức XPath, trích xuất dữ liệu từ XML, trong trường hợp này là tiêu đề của kênh RSS.

Tiêu đề của một kênh RSS được trích xuất thành công từ dữ liệu XML bằng cách sử dụng curl và xmllintTiêu đề của một kênh RSS được trích xuất thành công từ dữ liệu XML bằng cách sử dụng curl và xmllint

8. Sử Dụng curl Trong Lập Trình (libcurl)

Dự án cURL không chỉ cung cấp công cụ dòng lệnh curl mà còn bao gồm một thư viện, libcurl, chính curl cũng sử dụng. Thư viện này có tính di động cao và khả dụng cho nhiều hệ điều hành như Linux, Windows, macOS và Android. libcurl đi kèm với một API C, nhưng có các bindings cho nhiều ngôn ngữ lập trình khác như C++, Python, Rust và Go.

Thư viện phản ánh phần lớn những gì công cụ dòng lệnh làm, đặc biệt là các tùy chọn và hành vi của chúng. Dưới đây là một ví dụ cơ bản về cách sử dụng PHP:

<?php
$ch = curl_init("http://www.example.com/");
$fp = fopen("www-example-com.html", "w");

curl_setopt($ch, CURLOPT_FILE, $fp);
curl_setopt($ch, CURLOPT_HEADER, 0);

curl_exec($ch);

if (curl_error($ch))
    fwrite($fp, curl_error($ch));

curl_close($ch);
fclose($fp);
?>

Hàm curl_init() khởi tạo một phiên làm việc và trả về một handle mà bạn có thể sử dụng để truy cập nó. Bạn có thể kiểm soát hành vi của thư viện bằng cách sử dụng các tùy chọn mà curl hỗ trợ thông qua curl_setopt(). curl_exec() thực sự gửi yêu cầu, trong khi curl_error()curl_close() là các hàm quản trị hữu ích.

Ví dụ này sử dụng thiết lập CURLOPT_FILE để ghi nội dung phản hồi vào một file handle đã mở. Lưu ý rằng điều này tương đương với tùy chọn --output của curl dòng lệnh.

Kết Luận

curl không chỉ là một công cụ dòng lệnh đơn thuần; nó là một cánh cửa mở ra thế giới của việc tương tác với web một cách linh hoạt và mạnh mẽ. Từ việc lấy nội dung trang web, tải file, kiểm tra IP, đến làm việc với API hay thậm chí tích hợp vào các ứng dụng lập trình, curl đều chứng tỏ giá trị vượt trội của mình. Nắm vững các mẹo và tùy chọn được trình bày trong bài viết này sẽ giúp bạn tối ưu hóa công việc hàng ngày, thực hiện các tác vụ phức tạp một cách hiệu quả hơn và kiểm soát hoàn toàn các tương tác mạng của mình. Hãy bắt đầu khám phá và ứng dụng curl ngay hôm nay để nâng cao kỹ năng công nghệ của bạn!

Related posts

Xu Hướng Case PC Màn Hình Tích Hợp: Bước Tiến Đột Phá Cho Trải Nghiệm PC Gaming Việt?

Administrator

Tối Ưu Năng Suất: Cách Chuyển Giọng Nói Thành Văn Bản Trong Word Di Động Hiệu Quả Nhất

Administrator

Khám Phá Tiềm Năng Remote Desktop: Tối Ưu Năng Suất và Hỗ Trợ Từ Xa Hiệu Quả

Administrator