:quality(75)/2023_12_14_638381818139560928_curl_.jpg)
cURL là gì? Cách sử dụng cURL và các lệnh cURL cơ bản cần biết trong Linux
cURL là một công cụ đa năng không chỉ giúp hỗ trợ xác thực người dùng, gửi yêu cầu HTTP POST, kết nối an toàn qua SSL, hỗ trợ proxy hay tải xuống từ FTP, mà còn nhiều có tính năng khác. Bạn cũng có thể thực hiện những công việc đơn giản như tải xuống các trang web hoặc hình ảnh web. Điều này cho phép cURL trở thành một công cụ linh hoạt, đa năng trong việc tương tác với các dịch vụ và nguồn thông tin trên internet.
1. Thông tin chung về cURL
1.1. cURL là gì?
cURL là từ viết tắt của Client URL - một công cụ dòng lệnh (command line tool) được sử dụng để kiểm tra kết nối từ URL, thực hiện truyền dữ liệu giữa các máy chủ và thiết bị. Hiện nay, cURL đang sử dụng nhiều giao thức hỗ trợ như: HTTPS, HTTP, FTPS,… cho phép xác thực request bằng cách thiết lập các header cho request hoặc sử dụng cookies, giúp tăng tính linh hoạt, khả năng an ninh trong việc giao tiếp và truyền dữ liệu.

Được viết ra bởi Daniel Stenberg vào năm 1997, cURL cho phép tự động hóa việc kiểm tra giao tiếp giữa các thiết bị và máy chủ mà không cần sự can thiệp của con người. Điều này làm cho cURL trở thành một công cụ linh hoạt và hiệu quả trong việc thực hiện các tác vụ kiểm tra, truyền dữ liệu qua mạng, đặc biệt là trên các thiết bị chỉ có dòng lệnh và kết nối mạng.
1.2. Chức năng của cURL
Chức năng của cURL là giúp người dùng tải xuống trang web hay hình ảnh từ mạng internet. Đồng thời, nó cũng 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. Bên cạnh đó, cURL còn cho phép người dùng kiểm tra các Cookie được tải trên URL. Sử dụng cURL còn mang lại nhiều lợi ích như sau:
- Tính linh hoạt cao: cURL linh hoạt trong việc thực hiện nhiều chức năng khác nhau như gửi yêu cầu, tải xuống dữ liệu, 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ị được kết nối với mạng internet, giúp người dùng có trải nghiệm mượt mà trên nhiều nền tảng khác nhau.
- Kiểm tra Endpoint: cURL rất 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ù có thể tạo ra kết quả dài, nhưng cURL cũng 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 tốt: cURL cung cấp khả năng ghi log lỗi tốt, giúp người dùng theo dõi và giải quyết vấn đề một cách hiệu quả.
- Khả năng giới hạn tỷ lệ: Công cụ này có thể được cấu hình để giới hạn tỷ lệ truy cập, điều này hữu ích khi cần kiểm soát lưu lượng hoặc truy cập đến một tài nguyên cụ thể.

1.3. Các giao thức được cURL Command hỗ trợ
cURL hỗ trợ nhiều giao thức khác nhau. Tuy nhiên, trong trường hợp không có giao thức nào được cung cấp, cURL sẽ mặc định sử dụng giao thức HTTP. Dưới đây là danh sách các giao thức được cURL hỗ trợ:
Tên giao thức | Mô tả |
DICT | Cho phép truy vấn từ điển từ xa. |
FTP | Truy cập và truyền tải dữ liệu qua giao thức File Transfer Protocol. |
FTPS | Phiên bản an toàn của FTP sử dụng SSL/TLS để bảo vệ dữ liệu. |
GOPHER | Truy cập thông tin từ các máy chủ gopher. |
HTTP | Truy cập và tương tác với các trang web qua giao thức Hypertext Transfer Protocol. |
HTTPS | Phiên bản an toàn của HTTP sử dụng SSL/TLS để bảo vệ dữ liệu truyền tải. |
IMAP | Truy cập và quản lý email trên máy chủ IMAP. |
IMAPS | Phiên bản an toàn của IMAP sử dụng SSL/TLS để bảo vệ dữ liệu truyền tải. |
LDAP | Truy cập và tương tác với dữ liệu trên máy chủ LDAP. |
POP3 | Truy cập và quản lý email trên máy chủ POP3. |
RTMP | Truyền dữ liệu qua giao thức RTMP (Real-Time Messaging Protocol). |
RTSP | Truyền dữ liệu thời gian thực qua giao thức RTSP (Real-Time Streaming Protocol). |
SCP | Truyền tải tệp qua SSH. |
SFTP | Truyền dữ liệu qua SSH sử dụng giao thức SFTP (SSH File Transfer Protocol). |
SMB | Truy cập và tương tác với tài nguyên trên mạng Windows qua SMB. |
SMBS | Phiên bản an toàn của SMB sử dụng SSL/TLS. |
TELNET | Truy cập và tương tác với máy chủ qua giao thức Telnet. |
TFTP | Truyền dữ liệu qua giao thức TFTP (Trivial File Transfer Protocol). |
2. Cách sử dụng cURL trong PHP
Để sử dụng cURL trong PHP, người dùng cần cài đặt thư viện libcurl trong hệ thống của mình. Tuy nhiên, nếu bạn sử dụng các package như XAMPP, MAMP, WAMP, bạn có thể không cần phải cài đặt thêm libcurl vì thư viện này thường được tích hợp sẵn trong các gói cài đặt đó.

Để sử dụng cURL trong PHP, trước hết người dùng cần kiểm tra xem libcurl đã được cài đặt trong hệ thống chưa. Sau đó, tiếp tục thực hiện 4 bước dưới đây.
2.1. Khởi tạo và cấu hình cURL
Để bắt đầu sử dụng cURL, bạn cần khởi tạo một phiên cURL bằng hàm curl_init(). Hàm này trả về một biến resource cURL.
Sau đó, bạn có thể cấu hình các tùy chọn của request với hàm curl_setopt(). Điều này bao gồm việc đặt URL, phương thức request, header, dữ liệu gửi đi, và thời gian chờ.

2.2. Thiết lập các tuỳ chọn request
Hàm curl_setopt() là trọng tâm chính của cURL, cho phép bạn xử lý các dữ liệu gửi đi như: content-type, cookie, giao thức HTTP, charset,... Chú ý rằng curl_setopt phải được sử dụng trước curl_exec để có hiệu lực. Hàm này nhận vào 3 tham số: biến cURL, tên cấu hình và giá trị cấu hình.
Các tùy chọn thông dụng với cURL là:
- CURLOPT_URL: Đường dẫn URL của request.
- CURLOPT_RETURNTRANSFER: Trả về kết quả từ curl_exec dưới dạng chuỗi khi là TRUE hoặc hiển thị trực tiếp trên trình duyệt nếu là FALSE.
- CURLOPT_TIMEOUT: Thời gian duy trì kết nối của cURL.
- CURLOPT_USERAGENT: Giả lập trình duyệt đang gửi dữ liệu user agent.
- CURLOPT_FILE: Lưu kết quả vào file.
- CURLOPT_POST: TRUE thì dữ liệu gửi về dưới dạng POST.
- CURL_POSTFIELDS: Mảng dữ liệu.
Nếu muốn thiết lập nhiều tùy chọn cùng lúc, sử dụng curl_setopt_array(). Ví dụ:

2.3. Thực thi request cURL
Sử dụng hàm curl_exec() để thực hiện request. Sau khi đã thiết lập tùy chọn request ở Bước 2, nếu cấu hình CURLOPT_RETURNTRANSFER là TRUE, kết quả trả về từ curl_exec() sẽ là một chuỗi.

2.4. Đóng cURL và giải phóng tài nguyên
Cuối cùng, sau khi hoàn tất việc sử dụng cURL, sử dụng 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ủ.

Lưu ý 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.
3. Cài đặt cURL trên Linux
Mặc dù cURL thường được cài đặt sẵn trên hầu hết các bản phân phối Linux, tuy nhiên nếu nó chưa được cài đặt trên máy của bạn, bạn có thể tải xuống và cài đặt cURL bằng cách sử dụng các lệnh dưới đây.
Debian/Ubuntu và các dẫn xuất:
Sử dụng apt để cài đặt cURL trên Debian, Ubuntu và các dẫn xuất dựa trên chúng:

RHEL, CentOS, Fedora và các dẫn xuất tương tự:
Đối với các bản phân phối sử dụng yum hoặc dnf, bạn có thể cài đặt cURL như sau:

OpenSUSE và các dẫn xuất tương tự:
Sử dụng zipper để cài đặt cURL trên OpenSUSE:

Để thực hiện các lệnh cài đặt, bạn cần quyền root hoặc quyền sudo trên hệ thống của mình. Hãy chắc chắn rằng bạn có đủ quyền hạn trước khi thực hiện các lệnh cài đặt này.
4. Các lệnh cURL cơ bản trong Linux
4.1. Lệnh kiểm tra phiên bản cURL
Để sử dụng cURL, bạn cần đăng nhập vào VPS thông qua SSH. Để kiểm tra cài đặt cURL trong hệ thống, sử dụng lệnh curl_version. Kết quả trả về sẽ hiển thị phiên bản hiện tại của cURL, giúp bạn xác định danh sách các giao thức mà cURL hỗ trợ.
Lệnh: curl –version:

4.2. Cú pháp của lệnh cURL
Đây là cú pháp cơ bản của lệnh cURL trong Linux. Bạn có thể sử dụng lệnh này để thực hiện các yêu cầu đến một URL cụ thể. Chẳng hạn, nếu bạn chỉ muốn 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 sẽ sử dụng giao thức HTTP.
Lệnh: curl [OPTIONS] [URL]:

4.3. Dùng cURL Command để tải file
Lệnh cURL dùng để tải một dữ liệu từ máy chủ ở xa theo hai cách như sau:
Cách 1: Lưu file trên folder hiện tại với tên file từ xa.
Lệnh: curl -O http://yourdomain.com/yourfile.tar.gz:

Lệnh này cho phép 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 từ xa.
Cách 2: Tùy chọn tên file và đường dẫn lưu trữ.
Lệnh: curl -o newyourfile.tar.gz http://yourdomain.com/yourfile.tar.gz:

Lệnh này cũng tải file từ một URL nhưng cho phép bạn đặt tên và đường dẫn lưu trữ cho file tải xuống.
4.4. Lệnh HTTP cURL Command
cURL đượ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 chỉ để lấy thông tin header của trang web được chỉ định bởi URL. Trong đó:
Lệnh: curl -I www.yourdomain.com dùng để kiểm tra thông tin header web HTTP. 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:

Lệnh POST: curl --data "text=Howareyou" https://mydomain.com/firstpage.jsp dùng để gửi yêu cầu POST với dữ liệu:

Lệnh GET: curl http://mydomain.com dùng để gửi yêu cầu GET:

4.5. Lệnh cURL cho Cookies
Lệnh: curl --cookie-jar Mycookies.txt https://www.samplewebsite.com /index.html -O:

Lệnh này cho phép bạn gửi một 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. Nó 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.
Lệnh: curl --cookie Mycookies.txt https://www.samplewebsite.com:

Cho phép bạn gửi yêu cầu đến trang web và sử dụng các cookies đã được lưu từ tệp tin cookies trước đó.
4.6. Lệnh cURL cho FTP
Lệnh: curl -u username:password -O ftp://nameftpserver/yourfile.tar.gz:

Lệnh này cho phép bạn tải file từ một FTP server với việc cung cấp tên người dùng và mật khẩu. Bạn chỉ cần thay thế username, password, và nameftpserver bằng thông tin tương ứng của FTP server bạn muốn tải file từ đó.
Lệnh: curl -u username:password -T yourfile.tar.gz ftp://nameftpserver:

Lệnh này cho phép bạn upload một file lên FTP server với việc cung cấp tên người dùng, mật khẩu, và đường dẫn của file cần upload.
4.7. Lệnh giới hạn output cho cURL
Lệnh: curl --limit-rate 100K http://testdomain.com/samplefile.tar.gz -O:

Lệnh này giới hạn tốc độ tải xuống của cURL về 100KB/s, giúp bạn kiểm soát việc sử dụng băng thông khi tải file từ một URL cụ thể.
4.8. Sử dụng cURL để gửi biểu mẫu và xác thực HTTP
Bạn có thể sử dụng cURL để gửi biểu mẫu HTTP và xác thực với các server. Để thực hiện điều này, bạn có thể tạo một tệp lệnh cURL để thực hiện gửi biểu mẫu đến một địa chỉ URL cụ thể, sau đó xử lý dữ liệu gửi và nhận từ server theo cách bạn mong muốn. Điều này có thể sử dụng cùng với các tùy chọn như CURLOPT_HTTPAUTH để xác thực và CURLOPT_USERPWD để cung cấp thông tin xác thực người dùng. Ví dụ:
Gửi dữ liệu biểu mẫu:

Xác thực HTTP:

5. Tạm kết
Trên đây là tất cả các thông tin về thuật ngữ cURL, cách sử dụng Curl PHP, hướng dẫn cài đặt cURL trong Linux và một số lệnh cURL cơ bản mà bạn cần biết trong Linux, hy vọng thông qua bài viết bạn sẽ có thêm nhiều kiến thức hữu ích!
Và nếu bạn đang có nhu cầu mua các sản phẩm công nghệ cao cấp, đa dạng mẫu mã và hợp lý về giá thành như điện thoại, máy tính bảng, TV, laptop, hãy thử ghé qua gian hàng của FPT Shop nhé!
Xem thêm:
:quality(75)/estore-v2/img/fptshop-logo.png)