[2025] cURL là gì? | Tổng hợp câu lệnh cURL mà bạn cần biết

cURL là gì? cURL được biết đến rộng rãi trong cộng đồng lập trình với khả năng truyền tải dữ liệu qua đa dạng giao thức mạng. Để hiểu rõ hơn về cURL, bao gồm cách thức hoạt động và những lệnh cURL cơ bản cần thiết khi làm việc trên Linux, mời bạn theo dõi nội dung chi tiết trong bài viết sau của VinaHost.

1. cURL là gì?

cURL (Client URL) là dự án phần mềm máy tính cung cấp một thư viện và lệnh command-line được dùng để truyền dữ liệu qua các giao thức mạng. Nó được thiết kế để làm việc mà không cần tương tác từ người dùng, tức là nó có thể dễ dàng được tích hợp vào các script và các ứng dụng tự động.

cURL Linux hỗ trợ rất nhiều giao thức mạng, bao gồm HTTP, HTTPS, FTP, FTPS, SCP, SFTP, TFTP, LDAP, LDAPS, DICT, FILE, TELNET và nhiều giao thức khác. Nó được sử dụng rộng rãi trong việc phát triển phần mềm để truy cập và truyền dữ liệu qua mạng, ví dụ như tải về trang web, gửi dữ liệu của form qua POST, gửi yêu cầu REST API, và nhiều tác vụ mạng khác.

cURL Linux có khả năng xử lý dữ liệu dạng text và binary, tự động xử lý chứng chỉ SSL, hỗ trợ xác thực HTTP, proxy, cookie, và rất nhiều tính năng nâng cao khác. Với tính linh hoạt và mạnh mẽ, cURL được sử dụng trong nhiều ứng dụng và dự án lớn, từ các script tự động đơn giản đến các hệ thống phức tạp cần trao đổi dữ liệu qua mạng.

curl la gi
cURL (Client URL) là dự án phần mềm máy tính cung cấp một thư viện và lệnh command-line được dùng để truyền dữ liệu qua các giao thức mạng.

Xem thêm: Linux là gì | Tổng hợp kiến thức [A-Z] hệ điều hành Linux

2. Lịch sử hình thành và phát triển của cURL

Dưới đây là một cái nhìn tổng quan về lịch sử hình thành và phát triển của cURL:

  • Bắt đầu với libcurl: cURL bắt đầu dưới dạng một thư viện gọi là libcurl, được phát triển bởi Daniel Stenberg từ năm 1997. Ban đầu, nó được thiết kế để hỗ trợ truy cập vào các tài nguyên từ các máy chủ web bằng dòng lệnh Unix.
  • Ra đời của cURL Command Line Tool: Sau khi libcurl trở nên phổ biến, Daniel Stenberg đã phát triển một công cụ dòng lệnh riêng biệt được gọi là cURL. Công cụ này cung cấp một giao diện dễ sử dụng để truy cập và tương tác với các tài nguyên web từ dòng lệnh.
  • Open Source và Độ phổ biến: cURL Linux nhanh chóng trở thành một trong những công cụ phổ biến nhất cho việc truy cập web từ dòng lệnh. Sự phổ biến của nó phần lớn là nhờ tính năng đa dạng, dễ sử dụng và mã nguồn mở, cho phép những người sử dụng và nhà phát triển trên toàn thế giới tùy chỉnh và tích hợp nó vào các dự án của họ.
  • Hỗ trợ cho nhiều giao thức: cURL Linux không chỉ hỗ trợ các giao thức phổ biến như HTTP và FTP mà còn hỗ trợ SCP, SFTP, LDAP, và nhiều giao thức khác nữa.
  • Sự phát triển liên tục: Cộng đồng mã nguồn mở đã tiếp tục phát triển và cải tiến cURL Linux qua các phiên bản mới, đảm bảo tính năng mới và bảo mật. Các bản cập nhật thường xuyên được phát hành để sửa lỗi và cải thiện hiệu suất.
  • Tích hợp và Sử dụng rộng rãi: cURL Linux không chỉ được sử dụng từ dòng lệnh mà còn được tích hợp vào nhiều ứng dụng, frameworks và ngôn ngữ lập trình khác nhau như PHP, Python, Ruby, và nhiều ngôn ngữ khác.

3. Các giao thức cURL Command hỗ trợ

cURL Linux tương thích với đa dạng giao thức. Tuy nhiên, nếu không chỉ định giao thức nào, cURL tự động chọn HTTP làm giao thức mặc định. Dưới đây liệt kê các giao thức mà cURL Linux có khả năng hỗ trợ:

  • HTTP (HyperText Transfer Protocol) và HTTPS (HTTP Secure): Đây là giao thức cơ bản nhất được sử dụng để trao đổi dữ liệu trên web, với HTTPS là phiên bản mã hóa của HTTP.
  • FTP (File Transfer Protocol) và FTPS (FTP Secure): Giao thức chính để truyền tải tập tin. FTPS bổ sung mã hóa SSL/TLS cho FTP.
  • SCP (Secure Copy Protocol): Dùng để sao chép an toàn tập tin dựa trên SSH.
  • SFTP (SSH File Transfer Protocol): Một giao thức an toàn khác để truyền tập tin, sử dụng SSH.
  • SMTP (Simple Mail Transfer Protocol), SMTPS (SMTP Secure), và SMTP STARTTLS: Được sử dụng để gửi email.
  • POP3 (Post Office Protocol 3), POP3S (POP3 Secure), và POP3 STARTTLS: Giao thức nhận email.
  • IMAP (Internet Message Access Protocol), IMAPS (IMAP Secure), và IMAP STARTTLS: Một giao thức khác để nhận và quản lý email.
  • LDAP (Lightweight Directory Access Protocol) và LDAPS (LDAP over SSL): Dùng để truy cập thông tin từ các máy chủ thư mục.
  • TELNET: Một giao thức mạng cũ, cho phép truy cập từ xa đến máy chủ.
  • DICT (Dictionary Protocol): Một giao thức đơn giản để tra cứu từ điển từ xa.
  • FILE: Cho phép truy cập các tập tin cục bộ.
  • GOPHER: Giao thức mạng được thiết kế cho phân phối, tìm kiếm, và truy xuất tài liệu.
  • SMB (Server Message Block) và SMBS (SMB Secure): Giao thức chia sẻ tập tin, máy in và cung cấp các dịch vụ mạng khác trong mạng cục bộ.
  • RTSP (Real Time Streaming Protocol): Được sử dụng để điều khiển truyền phát dữ liệu video hoặc âm thanh trực tiếp.
  • RTMP (Real-Time Messaging Protocol) và RTMPS (RTMP Secure): Tương tự, được dùng để truyền phát video và âm thanh trực tiếp.
  • TFTP (Trivial File Transfer Protocol): Một giao thức truyền tập tin đơn giản, không bảo mật.
  • MQTT (Message Queuing Telemetry Transport): Giao thức nhắn tin cho các thiết bị IoT.
  • GOPHERS: Gopher qua TLS.

Lưu ý rằng danh sách cụ thể các giao thức được hỗ trợ có thể thay đổi tùy thuộc vào phiên bản cURL và cách nó được biên dịch. Để kiểm tra các giao thức được hỗ trợ trong phiên bản cURL Linux cụ thể của bạn, bạn có thể chạy lệnh curl –version trong terminal hoặc command prompt.

curl la gi
cURL Linux tương thích với đa dạng giao thức

Xem thêm: [Tổng Hợp] Các câu lệnh trong Linux mà bạn nên biết

4. Chức năng của cURL 

cURL Linux là một công cụ có chức năng giúp người dùng thực hiện việc tải xuống dữ liệu từ trang web, đồng thời hỗ trợ vận chuyển tập tin, dữ liệu, hình ảnh và truyền dữ liệu giữa client và server. Ngoài ra, cURL cũng cho phép kiểm tra các Cookie được tải trên URL. Sử dụng cURL Linux đem lại nhiều lợi ích như sau:

  • Tính linh hoạt: cURL Linux có khả năng thực hiện nhiều chức năng khác nhau như gửi yêu cầu, tải dữ liệu, và kiểm tra thông tin từ các máy chủ và URL khác nhau.
  • Khả năng tương thích rộng: Công cụ này tương thích với hầu hết các hệ điều hành và thiết bị kết nối với mạng internet, giúp người dùng trải nghiệm mượt mà trên nhiều nền tảng khác nhau.
  • Kiểm tra Endpoint: cURL Linux là công cụ hữu ích trong việc kiểm tra tính hoạt động của các điểm kết nối (endpoint), giúp người dùng xác định xem chúng có hoạt động đúng như mong muốn hay không.
  • Đáng tin cậy và chi tiết: Mặc dù cURL Linux có thể tạo ra kết quả dài, nhưng nó cung cấp thông tin chính xác về dữ liệu gửi hoặc nhận, hỗ trợ trong việc phân tích lỗi và sửa chữa.
  • Ghi log lỗi hiệu quả: cURL Linux cung cấp khả năng ghi log lỗi một cách hiệu quả, giúp người dùng theo dõi và xử lý vấn đề một cách nhanh chóng.
  • Khả năng kiểm soát tỷ lệ: Công cụ này có thể được cấu hình để kiểm soát tỷ lệ truy cập, điều này hữu ích khi cần kiểm soát lưu lượng truy cập đến một tài nguyên cụ thể.

5. Tại sao nên sử dụng cURL?

Dưới đây là một phân tích về các ưu điểm của cURL Linux này:

  • Tương thích rộng vì nó tương thích với hầu hết các hệ điều hành và thiết bị kết nối.
  • Hữu ích trong việc kiểm tra endpoint để xác định tính hoạt động của chúng.
  • Cung cấp thông tin chi tiết và chính xác về dữ liệu gửi và nhận, hỗ trợ trong việc phát hiện và khắc phục lỗi.
  • Có khả năng ghi log lỗi hiệu quả.
  • Có thể được cấu hình để giới hạn tỷ lệ truy cập.

6. Hướng dẫn cách sử dụng cơ bản cURL PHP

Để sử dụng cURL trong PHP thông qua XAMPP, WAMP hoặc MAMP, bạn cần cài đặt thêm thư viện libcurl của PHP. Tuy nhiên, nếu bạn sử dụng các gói cài đặt PHP thì không cần phải thêm vì chúng đã được tích hợp sẵn. Dưới đây là các bước cơ bản để bắt đầu sử dụng cURL Linux:

6.1. Hàm khởi tạo cURL

Để bắt đầu sử dụng cURL Linux, bạn cần gọi hàm curl_init(). Kết quả của việc này sẽ là một resource, một loại dữ liệu được định nghĩa trong PHP.

curl init()

6.2. Thiết lập tùy chọn request

Để thiết lập các tùy chọn cho yêu cầu, bạn cần sử dụng hàm curl_setopt(). Tuy nhiên, lưu ý rằng các hàm này cần được gọi trước khi gọi curl_exec() để có hiệu lực. curl_exec() là một hàm quan trọng trong cURL, được sử dụng để xử lý dữ liệu đầu vào như charset, content-type, giá trị cookies, giao thức HTTP, và nhiều thông tin khác.

curl_setopt()

curl_setopt() được sử dụng với 3 tham số sau:

  • Tham số đầu tiên: cURL.
  • Tham số thứ hai: Tên cấu hình.
  • Tham số thứ ba: Giá trị cấu hình.

Các tham số được phân tách bằng dấu phẩy (,). Dưới đây là một ví dụ cụ thể:

curl_setopt($curl, CURLOPT_URL, “https://vinahost.vn”);

Bên cạnh đó, bạn có thể thiết lập nhiều tùy chọn cùng một lúc bằng hàm curl_setopt_array(). Cấu trúc của nó sẽ có dạng như sau:

curl_setopt_array($curl, array(

  CURLOPT_RETURNTRANSFER => 1,

  CURLOPT_URL => ‘https://vinahost.vn/’,

  CURLOPT_USERAGENT => ‘Exmaple POST’,

  CURLOPT_POST => 1,

  CURLOPT_POSTFIELDS => $data

));

curl_setopt_array($curl, $options);

Các tùy chọn cấu hình phổ biến thường được sử dụng bao gồm:

  • CURLOPT_URL: Đường dẫn URL mà cURL gửi yêu cầu đến.
  • CURLOPT_RETURNTRANSFER: Nếu được đặt thành TRUE, kết quả trả về từ hàm curl_exec sẽ là một chuỗi; nếu là FALSE, kết quả sẽ được xuất ra trình duyệt.
  • CURLOPT_TIMEOUT: Thời gian tối đa để duy trì kết nối cURL.
  • CURLOPT_USERAGENT: Chuỗi giả lập user agent của trình duyệt gửi dữ liệu.
  • CURLOPT_FILE: Lưu kết quả vào một tập tin.
  • CURLOPT_POST: Nếu được đặt thành TRUE, dữ liệu được gửi dưới dạng phương thức POST.
  • CURLOPT_POSTFIELDS: Dữ liệu được gửi dưới dạng mảng.

6.3. Hàm thực thi cURL 

Để thực hiện request, bạn sử dụng hàm curl_exec(). Sau khi bạn đã thiết lập các tùy chọn yêu cầu ở Bước 2, nếu bạn đặt CURLOPT_RETURNTRANSFER thành TRUE, kết quả từ curl_exec() sẽ là một chuỗi.

curl_setopt($curl, CURLOPT_URL, “https://vinahost.vn”);

6.4. Đóng request và giải phóng tài nguyên

Kết thúc việc sử dụng cURL Linux, bạn cần dùng lệnh curl_close() để đóng phiên cURL và giải phóng tài nguyên. Điều này giúp tiết kiệm tài nguyên hệ thống và cải thiện hiệu suất cho máy chủ.

curl_close()

Hãy nhớ rằng việc sử dụng cURL trong PHP đòi hỏi người dùng phải chú ý đến cấu hình, và có thể yêu cầu kiểm tra cấu hình máy chủ cũng như quyền truy cập để đảm bảo tính đúng đắn và an toàn.

7. Hướng dẫn cài đặt cURL trên Linux

Mặc dù cURL thường có sẵn trên hầu hết các phiên bản phân phối Linux, nếu máy của bạn chưa có cài đặt, bạn có thể tải và cài đặt cURL Linux bằng các lệnh sau đây.

Đối với các bản phân phối dựa trên Debian/Ubuntu:

Sử dụng apt để cài đặt cURL trên Debian, Ubuntu và các phiên bản dựa trên chúng:

curl la gi
Sử dụng apt để cài đặt cURL trên Debian, Ubuntu

Đối với các bản phân phối như RHEL, CentOS, Fedora và các phiên bản tương tự:

Nếu sử dụng yum hoặc dnf, bạn có thể thực hiện việc cài đặt cURL như sau:

curl la gi
Hướng dẫn cài đặt cURL trên Linux

Đối với OpenSUSE và các phiên bản tương tự:

Sử dụng lệnh zipper để cài đặt cURL Linux trên hệ thống của bạn.

curl la gi
Hướng dẫn cài đặt cURL trên Linux

Trước khi tiến hành cài đặt, cần có quyền root hoặc quyền sudo trên hệ thống của bạn. Đảm bảo rằng bạn đã có đủ quyền trước khi thực hiện các lệnh cài đặt.

8. Các lệnh cần nhớ của cURL trong Linux

Các lệnh cơ bản của cURL Linux thường được sử dụng phổ biến.

8.1. Lệnh kiểm tra phiên bản cURL là gì?

Để sử dụng cURL Linux, việc đăng nhập vào VPS qua SSH là bắt buộc. Để kiểm tra xem cài đặt cURL đã được thực hiện trên hệ thống hay chưa, bạn có thể sử dụng lệnh curl_version. Kết quả từ lệnh này sẽ cung cấp thông tin về phiên bản hiện tại của cURL, giúp bạn nhận biết các giao thức được hỗ trợ.

curl –version

8.2. Cú pháp của lệnh cURL 

Dưới đây là cú pháp căn bản của lệnh cURL trong môi trường Linux. Nó cho phép bạn thực hiện các yêu cầu đến một địa chỉ URL cụ thể. Ví dụ, để hiển thị nội dung của một trang web, bạn có thể sử dụng lệnh curl yourdomain.com. Mặc định, nếu không chỉ định giao thức, cURL Linux sẽ tự động sử dụng giao thức HTTP.

curl [OPTIONS] [URL]

8.3. Dùng cURL Command để tải file 

Để tải dữ liệu từ một máy chủ từ xa, bạn có thể sử dụng lệnh cURL Linux theo hai cách sau đây:

Cách 1: Lưu file trên thư mục hiện tại với tên file từ xa.

Lệnh này tải file từ một URL và lưu nó trong thư mục làm việc hiện tại với tên file giống với tên file trên máy chủ từ xa.

curl -O http://yourdomain.com/yourfile.tar.gz

Cách 2: Đặt tên file và đường dẫn lưu trữ tùy chọn.

Lệnh này cũng tải file từ một URL nhưng cho phép bạn chỉ định tên file và đường dẫn lưu trữ cho file được tải xuống.

curl -o newyourfile.tar.gz http://yourdomain.com/yourfile.tar.gz

8.4. Lệnh HTTP cURL Command

cURL Linux được sử dụng để gửi yêu cầu POST hoặc GET đến các URL được chỉ định, hoặc để gửi yêu cầu lấy thông tin header của trang web được chỉ định bởi URL. 

curl -I www.yourdomain.com

Khi sử dụng lệnh curl -I www.yourdomain.com, thông tin header của trang web HTTP được kiểm tra. Ví dụ, khi bạn thực hiện lệnh này trong Terminal hoặc Command Prompt, nó sẽ trả về các thông tin tiêu đề HTTP như Content-Type, Date, Server, Content-Length, Last-Modified, và các trường thông tin khác.

Dưới đây là một ví dụ về kết quả trả về của lệnh curl -I www.yourdomain.com:

curl la gi
Các lệnh cần nhớ của cURL trong Linux

Để gửi yêu cầu POST với dữ liệu, bạn có thể sử dụng lệnh sau: 

curl –data “text=Howareyou” https://mydomain.com/firstpage.jsp.

Để gửi yêu cầu GET, bạn có thể sử dụng lệnh: 

curl http://mydomain.com.

8.5. Lệnh cURL cho Cookies 

Lệnh này cho phép bạn gửi yêu cầu đến một trang web và lưu các cookies mà trang web đó gửi lại vào một tệp tin. Điều này rất hữu ích khi bạn muốn duy trì phiên đăng nhập hoặc các thông tin liên quan giữa các yêu cầu cURL khác nhau.

curl –cookie-jar Mycookies.txt https://www.samplewebsite.com /index.html -O:

Với lệnh sau, bạn có thể yêu cầu trang web và sử dụng các cookies đã lưu từ trước trong tệp tin cookies.

curl –cookie Mycookies.txt https://www.samplewebsite.com:

8.6. Lệnh cURL cho FTP

curl -u username:password -O ftp://nameftpserver/yourfile.tar.gz

Bạn có thể sử dụng lệnh này để tải file từ một FTP server bằng cách cung cấp tên người dùng và mật khẩu. Đơn giản chỉ cần thay thế username, password và name ftp server bằng thông tin tương ứng của FTP server mà bạn muốn tải file từ đó.

curl -u username:password -T yourfile.tar.gz ftp://nameftpserver:

Bạn có thể sử dụng lệnh này để tải lên một file lên FTP server bằng cách cung cấp tên người dùng, mật khẩu và đường dẫn của file cần tải lên.

8.7. Lệnh giới hạn output của cURL

curl –limit-rate 100K http://testdomain.com/samplefile.tar.gz -O

Lệnh trên sẽ hạn chế tốc độ tải xuống của cURL tới 100KB/s, giúp bạn quản lý việc sử dụng băng thông trong quá trình tải file từ một URL cụ thể.

8.8. Gửi biểu mẫu với cURL

cURL Linux cũng hỗ trợ việc sử dụng phương thức POST của HTTP để gửi biểu mẫu. Để thực hiện việc gửi biểu mẫu, bạn cần tạo hai tệp sau:

  • index.php: Để chứa mã lệnh cURL.
  • form.php: Để chứa biểu mẫu cần gửi.

Dưới đây là một ví dụ mẫu bạn có thể tham khảo:

<?php

if(isset($_POST[“submit”]))

{

  echo “Full name is ” . $_POST[“firstName”] .

     ”  ” . $_POST[“lastName”];

  exit;

}

?>

<html>

<body>

<form method = “POST” action = “” >

  <input  name=”firstName”  type=”text”> 

  <input  name=”lastName”  type=”text”>

  <input  type=”submit”  name=”submit”  value=”שלח” >

</form>

</body>

</html>

8.9. Sử dụng cURL để xác thực HTTP

Bạn có thể sử dụng lệnh cURL Linux sau:

curl_setopt_array($handle,

  array(

    CURLOPT_URL => $url,

   CURLOPT_HTTPAUTH => CURLAUTH_ANY,

   CURLOPT_USERPWD  => “$username:$password”,

   CURLOPT_RETURNTRANSFER   => true,

  )

);

9. Tổng kết

Trên đây là tất cả thông tin liên quan đến khái niệm cURL là gì, hướng dẫn cài đặt cURL trên Linux và một số lệnh cURL cơ bản mà bạn nên biết trong môi trường Linux. Hy vọng rằng qua bài viết này, bạn sẽ được bổ sung thêm nhiều kiến thức hữu ích. Để có thể tìm hiểu thêm thông tin, mời bạn truy cập vào Blog của VinaHost TẠI ĐÂY hoặc liên hệ ngay cho chúng tôi nếu cần tư vấn về dịch vụ.

Xem thêm một số bài viết khác:

Fedora là gì? | Hướng dẫn Cài đặt & Cấu hình Fedora A-Z

[Tìm Hiểu] CentOS là gì? | Tổng hợp kiến thức về hệ điều hành CentOS

Ubuntu là gì? | [So Sánh] hệ điều hành Ubuntu & Windows

Arch Linux là gì? | Cách Cài đặt & Cấu hình Arch Linux A-Z

Đánh giá
5/5 - (6 bình chọn)
Đăng ký nhận tin

Để không bỏ sót bất kỳ tin tức hoặc chương trình khuyến mãi từ Vinahost

    Bài viết liên quan
    Bình luận
    Theo dõi
    Thông báo của
    guest
    0 Góp ý
    Cũ nhất
    Mới nhất Được bỏ phiếu nhiều nhất
    Phản hồi nội tuyến
    Xem tất cả bình luận
    Tổng lượt truy cập: lượt xem