Skip to content

Thích Công Nghệ

Thích Công Nghệ

  • Home » 
  • Máy Tính » 
  • 8 Cách Sử Dụng Lệnh `curl` Hiệu Quả Nhất: Từ Cơ Bản Đến Nâng Cao

8 Cách Sử Dụng Lệnh `curl` Hiệu Quả Nhất: Từ Cơ Bản Đến Nâng Cao

By Administrator Tháng 8 5, 2025
Kết quả của lệnh curl cơ bản hiển thị mã nguồn HTML của trang web.
Table of Contents

Công cụ dòng lệnh curl là một trong những chương trình hữu ích và linh hoạt nhất mà bạn có thể học. Với khả năng đa dạng và việc triển khai HTTP toàn diện, curl có thể thực hiện mọi tác vụ liên quan đến một URL. Dù bạn là nhà phát triển, quản trị viên hệ thống, hay chỉ đơn giản là một người dùng muốn khám phá sâu hơn về mạng và các dịch vụ web, việc nắm vững curl sẽ mở ra một thế giới các khả năng mới, giúp bạn tương tác với internet một cách mạnh mẽ và hiệu quả hơn từ chính terminal của mình. Bài viết này sẽ đi sâu vào 8 ứng dụng thực tế và cực kỳ hữu ích của curl, từ những tác vụ cơ bản đến các trường hợp sử dụng nâng cao, giúp bạn khai thác tối đa sức mạnh của công cụ này.

1. Tải Nội Dung Trang Web

Ở dạng cơ bản nhất, lệnh curl có thể tải nội dung của một URL và hiển thị chúng 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 bất kỳ dữ liệu nào được trả về từ một địa chỉ cụ thể.

Ví dụ: Để xem mã nguồn của trang web info.cern.ch, bạn chỉ cần gõ:

curl info.cern.ch

Kết quả hiển thị sẽ tùy thuộc vào kiểu nội dung (content type) của URL. Nếu bạn yêu cầu một trang web, bạn sẽ thấy mã nguồn HTML của nó.

Kết quả của lệnh curl cơ bản hiển thị mã nguồn HTML của trang web.Kết quả của lệnh curl cơ bản hiển thị mã nguồn HTML của trang web.

Bạn có thể chuyển hướng kết quả này vào một tệp để lưu trữ trang web. Điều này đặc biệt hữu ích khi bạn muốn phân tích hoặc sử dụng lại nội dung trang web sau này.

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

Khi bạn chuyển hướng đầu ra tiêu chuẩn, curl sẽ tự động gửi thông tin thời gian thực hiện lệnh đến stderr (luồng lỗi chuẩn), giúp bạn theo dõi quá trình.

Một URL có thể chứa các ký tự có ý nghĩa đặc biệt đối với shell, như “?” hoặc “#”. Để tránh các vấn đề tiềm ẩn, bạn cần đảm bảo đặt URL trong dấu nháy đơn. Nếu không chắc chắn, hãy luôn sử dụng dấu nháy đơn để bọc URL của bạn, điều này là một biện pháp an toàn và được khuyến nghị.

curl 'info.cern.ch'

Giao diện Konsole Terminal trên laptop Kubuntu Focus Ir14 Linux, minh họa môi trường dòng lệnh để chạy lệnh curl.Giao diện Konsole Terminal trên laptop Kubuntu Focus Ir14 Linux, minh họa môi trường dòng lệnh để chạy lệnh curl.

2. Tải Tệp Tin

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 Microsoft Word—bạn có thể thấy một thông báo lỗi như “Binary output can mess up your terminal” (Đầu ra nhị phân có thể làm hỏng terminal của bạn). Điều này xảy ra vì curl mặc định sẽ in toàn bộ nội dung phản hồi nhận được ra màn hình. Trong trường hợp của một tệp nhị phân (ví dụ: hình ảnh), đây gần như chắc chắn không phải là điều bạn mong muốn.

Thông báo lỗi thường gợi ý sử dụng tùy chọn --output, cho phép bạn chỉ định một tệp để lưu đầu ra thay vì in ra màn hình. Bạn cũng có thể dùng -o như một viết tắt tiện lợi.

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 đầu ra, vì curl không còn in phản hồi ra màn hình, nó sẽ cung cấp nhiều 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 sử dụng tùy chọn -# hoặc --progress-bar:

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

3. Cài Đặt Phần Mềm

Đôi khi, bạn có thể bắt gặp các hướng dẫn cài đặt phần mềm yêu cầu sử dụng lệnh 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 https://setup.atuin.sh trong trình duyệt web, bạn sẽ thấy một script shell thực hiện việc cài đặt và thiết lập. Bạn có thể tải nó về và chạy thủ công nếu muốn, nhưng dòng lệnh một dòng này là cách nhanh hơn. Lưu ý rằng đầu ra—nội dung của script này—được chuyển (piped) đến sh, chương trình sẽ thực thi nó như một script shell.

Ví dụ sử dụng curl trong lệnh atuin bao gồm các tùy chọn sau:

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

Việc chạy một script shell tải từ internet có rủi ro 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 nguồn gốc của script, mà còn cần đả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 nếu bạn muốn cẩn thận hơn, hãy cân nhắc bỏ qua pipe, tải tệp xuống, và kiểm tra nội dung để đảm bảo an toàn trước khi chạy.

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

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

curl ifconfig.co

Trang web này sẽ phản hồi với địa chỉ IP công cộng của bạn:

Kết quả từ lệnh curl đến ifconfig.co hiển thị địa chỉ IP công cộng của người dùng.Kết quả từ lệnh curl đến ifconfig.co hiển thị địa chỉ IP công cộng của người dùng.

Đầ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:

Trang chủ ifconfig.co hiển thị trong trình duyệt web với thông tin chi tiết về địa chỉ IP công cộng, quốc gia và khu vực của người dùng.Trang chủ ifconfig.co hiển thị trong trình duyệt web với thông tin chi tiết về địa chỉ IP công cộng, quốc gia và khu vực của người dùng.

Điều này là do trang web hoạt động khác nhau dựa trên tác nhân người dùng (User-Agent) của bạn. Mặc định, curl gửi một chuỗi 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ụ cho mục đích thử nghiệm, 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 với HTML, giống như khi bạn truy cập bằng trình duyệt web.

5. Hiển Thị Tiêu Đề Phản Hồi và Yêu Cầu

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

curl -I example.com

Lệnh curl hiển thị các tiêu đề phản hồi HTTP, bao gồm Content-Type và Last-Modified.Lệnh curl hiển thị các tiêu đề phản hồi HTTP, bao gồm Content-Type và Last-Modified.

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ợ phương thức này. Nếu bạn gặp lỗi khi sử dụng cách này, bạn có thể yêu cầu curl gửi một yêu cầu GET và chỉ xuất các tiêu đề:

curl -I -X GET example.com

Nếu bạn muốn xem các tiêu đề yêu cầu (request headers) mà curl gửi đi, hãy sử dụng tùy chọn --verbose hoặc -v. Tùy chọn này sẽ hiển thị chi tiết toàn bộ quá trình giao tiếp giữa curl và máy chủ, bao gồm cả các tiêu đề mà curl gửi đi và các tiêu đề phản hồi mà nó nhận được.

Kết quả của lệnh curl với tùy chọn --verbose và -I hiển thị cả tiêu đề yêu cầu và phản hồi HTTP chi tiết.Kết quả của lệnh curl với tùy chọn –verbose và -I hiển thị cả tiêu đề yêu cầu và phản hồi HTTP chi tiết.

6. Truy Cập API

Nếu bạn đang làm việc với một API, các công cụ chuyên dụng như Postman hoặc Posting sẽ rất hữu ích trong việc tự động hóa và gỡ lỗi. Tuy nhiên, curl cũng có thể là một công cụ mạnh mẽ và tiện lợi không kém để khám phá cách thức hoạt động của một API.

Dịch vụ DummyJSON (dummyjson.com) 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ả định mà bạn có thể sử dụng để kiểm thử các ứng dụng client và 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 (authorization), và mô phỏng độ trễ thời gian hoặc các phản hồi ngẫu nhiên.

Thử nghiệm dịch vụ với curl đơn giản chỉ là truyền vào 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.

Sau khi đã 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 công cụ jq. Dòng lệnh sau sẽ 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 định dạng JSON của một sản phẩm được lấy từ dummyjson.com bằng lệnh curl và xử lý với jq.Dữ liệu định dạng JSON của một sản phẩm được lấy từ dummyjson.com bằng lệnh curl và xử lý với jq.

7. Tải Nguồn Cấp RSS

Một trong những dự án cá nhân hiện tại là một trình đọc RSS dựa trên shell. Ở cốt lõi của nó là curl, bởi vì công cụ này rất tiện lợi và hỗ trợ mọi thao tác HTTP cấp thấp cần thiết. Ví dụ, bạn có thể tải một nguồn cấp RSS (RSS feed) và xem xét 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 thu được thông qua lệnh curl truy vấn một URL nguồn cấp RSS.Dữ liệu định dạng XML thu được thông qua lệnh curl truy vấn một URL nguồn cấp RSS.

Nếu bạn đã cài đặt libxml, bạn có thể xử lý đầu ra XML bằng công cụ 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.

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

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

Thư viện libcurl phản ánh hầu hết các chức năng của công cụ dòng lệnh, đặ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 libcurl trong 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” (điểm xử lý) mà bạn có thể sử dụng để truy cập phiê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(). Hàm curl_exec() thực sự gửi yêu cầu, trong khi curl_error() và curl_close() là các hàm quản trị hữu ích để xử lý lỗi và đóng phiên làm việc.

Ví dụ này sử dụng cài đặt CURLOPT_FILE để ghi nội dung phản hồi (response body) 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 lệnh curl.

Kết luận

Từ việc tải xuống các trang web và tệp tin, kiểm tra địa chỉ IP, đến tương tác với API và RSS feeds, curl chứng tỏ mình là một công cụ không thể thiếu đối với bất kỳ ai làm việc trong lĩnh vực công nghệ. Khả năng tùy chỉnh mạnh mẽ thông qua hàng trăm tùy chọn, cùng với thư viện libcurl cho phép tích hợp vào các ứng dụng lập trình, biến curl thành một “con dao Thụy Sĩ” thực sự trong thế giới mạng và dòng lệnh. Việc thành thạo curl không chỉ giúp bạn thực hiện các tác vụ hàng ngày hiệu quả hơn mà còn mở rộng tầm nhìn về cách các giao thức web hoạt động.

Hãy bắt đầu khám phá và thử nghiệm các khả năng của curl ngay hôm nay để nâng cao kỹ năng làm việc của bạn! Bạn đã sử dụng curl trong những tình huống nào? Hãy chia sẻ kinh nghiệm và các mẹo sử dụng curl yêu thích của bạn trong phần bình luận bên dưới nhé!

Tài liệu tham khảo

  • Trang chủ chính thức của cURL: curl.se
  • DummyJSON: dummyjson.com
  • W3C Blog Feed: https://www.w3.org/blog/feed/
  • ifconfig.co: ifconfig.co
  • Atuin: atuin.sh
  • Postman: postman.com
  • Posting: posting.sh
  • jq: jqlang.github.io/jq/
  • xmllint (trong libxml2): www.xmlsoft.org/xmllint.html
Share
facebookShare on FacebooktwitterShare on TwitterpinterestShare on Pinterest
linkedinShare on LinkedinvkShare on VkredditShare on ReddittumblrShare on TumblrviadeoShare on ViadeobufferShare on BufferpocketShare on PocketwhatsappShare on WhatsappviberShare on ViberemailShare on EmailskypeShare on SkypediggShare on DiggmyspaceShare on MyspacebloggerShare on Blogger YahooMailShare on Yahoo mailtelegramShare on TelegramMessengerShare on Facebook Messenger gmailShare on GmailamazonShare on AmazonSMSShare on SMS
Post navigation
Previous post

Apple Watch Thoát Lệnh Cấm Nhập Khẩu Tại Mỹ: Cuộc Chiến Bằng Sáng Chế ECG Khép Lại

Next post

UGREEN Nexode 200W: Giải Pháp Sạc Đa Năng 4 Cổng Cho Mọi Thiết Bị Của Bạn

Administrator

Related Posts

Categories Máy Tính 8 Cách Sử Dụng Lệnh `curl` Hiệu Quả Nhất: Từ Cơ Bản Đến Nâng Cao

Link to Windows: Nâng Tầm Điều Khiển PC Từ Điện Thoại Android

Categories Máy Tính 8 Cách Sử Dụng Lệnh `curl` Hiệu Quả Nhất: Từ Cơ Bản Đến Nâng Cao

Giải Cứu Laptop Cũ: Vì Sao Chuyển Từ Windows Sang Linux Mint Là Quyết Định Đúng Đắn?

Categories Máy Tính 8 Cách Sử Dụng Lệnh `curl` Hiệu Quả Nhất: Từ Cơ Bản Đến Nâng Cao

Từ Viết Tắt Đệ Quy: Trò Đùa Thông Minh Ẩn Giấu Trong Thế Giới Công Nghệ

Recent Posts

  • So Sánh OnePlus 13R và Google Pixel 9a: Đâu Là Lựa Chọn Tối Ưu Cho Bạn?
  • Trình Quản Lý Mật Khẩu Offline: Giải Pháp Bảo Mật Tối Ưu Cho Dữ Liệu Cá Nhân Của Bạn
  • Link to Windows: Nâng Tầm Điều Khiển PC Từ Điện Thoại Android
  • UGREEN Nexode 200W: Giải Pháp Sạc Đa Năng 4 Cổng Cho Mọi Thiết Bị Của Bạn
  • 8 Cách Sử Dụng Lệnh `curl` Hiệu Quả Nhất: Từ Cơ Bản Đến Nâng Cao

Recent Comments

Không có bình luận nào để hiển thị.
Copyright © 2025 Thích Công Nghệ - Powered by Nevothemes.
Offcanvas
Offcanvas

  • Lost your password ?