Có thể bạn đã biết về URL, nhưng còn cURL là gì? Nó có vai trò và vị trí như thế nào trong các giao thức mạng và website? Cùng BKNS tìm hiểu thông qua bài viết dưới đây nhé.
Tóm Tắt Bài Viết
cURL là gì?
cURL là một công cụ dòng lệnh (command-line tool) được sử dụng để gửi và nhận dữ liệu qua các giao thức mạng như HTTP, HTTPS, FTP, FTPS, SCP, SFTP và nhiều giao thức khác. Công cụ này thường được sử dụng để tương tác với các API web và truy xuất các trang web từ dòng lệnh của hệ điều hành.
Với cURL, bạn có thể thực hiện các yêu cầu HTTP GET, POST, PUT, DELETE và các yêu cầu khác thông qua các tùy chọn và tham số linh hoạt. Nó hỗ trợ các tính năng như gửi dữ liệu biểu mẫu (form data), gửi và nhận dữ liệu JSON, xác thực qua giao thức cơ bản (Basic authentication) hoặc thông qua mã thông báo (token), và nhiều chức năng khác.
Ví dụ, bạn có thể sử dụng cURL để gửi một yêu cầu POST đến một API web như sau:
“`
curl -X POST -H “Content-Type: application/json” -d ‘{“key”: “value”}’ https://example.com/api
“`
Trong đó:
– `-X POST` xác định phương thức HTTP là POST.
– `-H “Content-Type: application/json”` đặt tiêu đề Content-Type là application/json.
– `-d ‘{“key”: “value”}’` gửi dữ liệu JSON `{“key”: “value”}`.
– `https://example.com/api` là URL của API mà bạn muốn gửi yêu cầu đến.
CURL là một công cụ rất phổ biến và mạnh mẽ trong việc kiểm thử API, tương tác với các dịch vụ web, và thực hiện các tác vụ liên quan đến mạng từ dòng lệnh.
Lịch sử của cURL
Tìm hiểu rõ hơn cURL là gì, bạn nên tham khảo qua về lịch sử của cURL để nắm được nhiều thông tin cặn kẽ hơn về nó.
Quay trở lại thời kỳ những năm 90s khi mọi người vẫn sử dụng các công cụ dòng lệnh, Daniel Sterberg muốn phát triển một IRC script đơn giản có thể chuyển đổi tiền tệ cho các thành viên trong phòng chat room.
Vào năm 1997, không có nhiều lựa chọn để xây dựng nền tảng cho việc phân phối dữ liệu data qua giao thức internet. Do đó, Httpget xuất hiện và sử dụng khoảng vài trăm dòng code để truyền dữ liệu dựa trên HTTP. Nó đã trở thành nguồn gốc của cURL và được đặt tên là HTTPGET 1.0.
Nhiều tháng sau, FTP support đã được phát triển và tên này đã bị loại bỏ. Bây giờ nó được gọi là urlget 2.0. Sau một vài bản cập nhật, vào ngày 30 tháng 3 năm 1998, tên này một lần nữa được thay đổi thành cURL 3.0 và được nhiều người biết đến.
Giao thức được hỗ trợ trong cURL Command
cURL Command có thể hỗ trợ các giao thức (protocol) sau: HTTP, HTTPS, IMAP, IMAPS, SMB, MBS, SFTP, GOPHER, LDAP, LDAPS, SCP, FTP, FTPS, TELNET, POP3, POP3S, SMTP, SMTPS.
cURL có nhiều giao thức được hỗ trợ khác nhau. Tuy nhiên, cURL sẽ sử dụng giao thức HTTP theo mặc định nếu không có giao thức nào được cung cấp. Chẳng hạn như nếu bạn chạy ví dụ sau, nó sẽ tải xuống trang chủ của example.com.
curl example.com
Bạn có thể gọi một giao thức cụ thể bằng cách đặt trước URL bằng tên giao thức.
curl http://example.com
Ví dụ trên sử dụng giao thức HTTP. Nếu bạn muốn sử dụng một giao thức khác, hãy chuyển HTTP thành một giao thức khác. Ví dụ: nếu bạn muốn sử dụng giao thức FTP, nó sẽ trông như thế này:
curl ftp://example.com
cURL cũng sẽ thử các giao thức khác nhau nếu giao thức mặc định không hoạt động. Nếu bạn đưa ra gợi ý, cURL có thể đoán bạn muốn sử dụng giao thức nào.
Ví dụ: Nếu bạn viết command sau, cURL sẽ có thể đoán một cách thông minh rằng bạn muốn sử dụng giao thức FTP: //.
curl ftp.example.com
Dưới đây là danh sách các giao thức được hỗ trợ cURL:
DICT | FILE | FTP |
FTP FTPS | GOPHER | HTTP |
HTTPS | IMAP | IMAPS |
LDAP | POP3 | RTMP |
RTSP | SCP | SFTP |
SMB | SMBS | TELNET |
TFTP |
Chức năng của cURL
cURL là một công cụ hữu ích cho phép người dùng tải về các trang web hoặc hình ảnh từ Internet. Ngoài ra, nó còn hỗ trợ chức năng truyền tải các tệp tin, dữ liệu và hình ảnh, cũng như gửi và nhận dữ liệu từ server. Điều đáng chú ý, cURL cũng cung cấp khả năng kiểm tra các Cookie được tải xuống từ URL.
Tại sao bạn nên sử dụng cURL?
Sau khi bạn đã hiểu được cURL, chắc chắn bạn không thể bỏ qua nó. Dưới đây là những lý do mà bạn nên sử dụng cURL:
- Tính linh động cao.
- Tính tương thích cao, với hầu hết mọi hệ điều hành và thiết bị được kết nối.
- Cực kì hữu ích trong việc kiểm tra endpoint, về tình trạng hoạt động hay không.
- Cung cấp chi tiết chính xác những gì đã được gửi hoặc nhận, rất hữu ích cho việc tìm và khắc phục lỗi.
- Khả năng error logging tốt.
- Có thể được giới hạn tỷ lệ.
Cách sử dụng cURL trong PHP cơ bản
Để sử dụng cURL trong PHP cơ bản bằng cách sử dụng XAMPP, WAMP, MAMP thì bạn không cần cài đặt thêm libcurl trong PHP vì nó đã được tích hợp sẵn trong các phần mềm này. Các bước cơ bản để sử dụng cURL gồm:
- Bước 1: Hàm khởi tạo cURL.
- Bước 2: Thiết lập các tùy chọn request.
- Bước 3: Hàm thực thi cURL.
- Bước 4: Đóng Request và giải phóng tài nguyên.
Chúng ta cùng thực hiện các bước được mô tả chi tiết dưới đây.
Bước 1: Hàm khởi tạo cURL
Để khởi tạo cURL bạn thực hiện hàm như sau:
curl init()
Thiết lập tùy chọn request
Để thiết lập tùy chọn request bạn thực hiện hàm sau:
curl_setopt()
Đây là một hàm quan trọng trong cURL có nhiệm vụ để xử lý các dữ liêu được input như: giao thức HTTP, content-type, cookie, charset,… Và lưu ý đặt hàm curl_setopt()
trước hàm curl_exec()
thì mới đúng và có tác dụng.
curl_setopt()
gồm 3 tham số sau:
- Tham số thứ 1: cURL.
- Tham số thứ 2: Tên cấu hình.
- Tham số thứ 3: Giá trị cấu hình
Các tham số cách với nhau bằng dấu (,). Có thể xem ví dụ cụ thể dưới đây:
curl_setopt($curl, CURLOPT_URL, "https://vietnix.vn");
Ngoài ra, bạn 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://vietnix.vn/',
CURLOPT_USERAGENT => 'Exmaple POST',
CURLOPT_POST => 1,
CURLOPT_POSTFIELDS => $data
));
curl_setopt_array($curl, $options);
Trong đó, một số tên cấu hình phổ biến được sử dụng như:
CURLOPT_URL
: Đường dẫn URL mà cURL gửi request.CURLOPT_RETURNTRANSFER:
TRUE thì kết quả trả về là hàmcurl_exec
theo dạng chuỗi, còn nếu FALSE thì kết quả được xuất lên trình duyệt.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.
Hàm thực thi cURL
Thực thi cURL, bạn sủ dụng hàm như sau:
curl_exec()
Bước ở trên bạn thực hiện hàm “curl_setopt($curl, CURLOPT_URL, "https://vietnix.vn");
” nếu kết quả là TRUE thì kết quả trả về một chuỗi kết quả hàm curl_exec()
.
curl_setopt($curl, CURLOPT_URL, "https://vietnix.vn");
Đóng request, giải phóng tài nguyên
Cuối cùng là đóng request thì bạn sử dụng hàm sau. Thao tác này giúp bạn tiết kiệm tài nguyên và nâng cao hiệu suất cho server.
curl_close()
Các lệnh cần biết của cURL trong Linux
Dưới đây là một số lệnh cơ bản trong Linux của cURL mà BKNS tổng hợp và gửi tới bạn.
Lệnh kiểm tra phiên bản cURL
Trước khi sử dụng lệnh này, bạn phải đảm bảo cURL được cài đặt vào hệ thống bằng cách đăng nhập VPS:
curl --version
Kết quả version đucợ trả về trên máy và bạn có thể biết được các giao thức mà cURL được hỗ trợ.
Dùng cURL Command để tải file
Để tải file bạn có thể dùng lệnh sau:
curl -o newyourfile.tar.gz http://example.com/yourfile.tar.gz
Thì file của bạn sẽ được lưu lại với tên newyourfile.tar.gz. Ngoài ra, bạn có thể tải cùng lúc nhiều file với lệnh:
curl -O http://example.com/yourfile.tar.gz -O http://example1.com/myfile.tar.gz
Lệnh HTTP cURL Command
Dưới đây là minh họa một chức năng của cURL sử dụng như một server proxy để tải file.
curl -x sampleproxy.com:8090 -U username:password -O http://testdomain.com/testfile.tar.gz
Lệnh cURL kiểm tra Cookies
Bạn có thể kiểm tra Cookie nào được tải trên URL bằng cách sử dụng cURL Command
curl --cookie-jar Mycookies.txt https://example/index.html -O
Bên cạnh đó, bạn có thể upload cookie có sẵn lên website với lệnh:
curl --cookie Mycookies.txt https://www.example.com
Lệnh cURL cho FTP
- cURL hỗ trợ giao thức FTP nên có thể tải file một máy chủ từ xa với lệnh như sau:
curl -u username:password -O ftp://nameftpserver/yourfile.tar.gz
- Upload file lên FTP:
curl -u username:password -T yourfile.tar.gz ftp://nameftpserver
Lệnh giới hạn output của cURL
Giới hạn output để hạn chế tình trạng sử dụng băng thông lớn gây ra việc download chậm
curl --limit-rate 100K http://testdomain.com/samplefile.tar.gz -O
Gửi biểu mẫu với cURL
cURL cũng có thể sử dụng phương thức POST của HTTP để gửi biểu mẫu. Để thực hiện gửi biểu mẫu , bạn cần tạo 2 tệp sau:
- index.php: Để đặt tệp lệnh cURL.
- form.php: Để đặt biểu mẫu cần gửi.
Có thể xem mẫu ví dụ dưới đây:
<?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>
Sử dụng cURL để xác thực HTTP
Bạn sủ dụng lệnh sau để xác thực HTTP:
curl_setopt_array($handle,
array(
CURLOPT_URL => $url,
CURLOPT_HTTPAUTH => CURLAUTH_ANY,
CURLOPT_USERPWD => "$username:$password",
CURLOPT_RETURNTRANSFER => true,
)
);
Kết luận
cURL là gì? Qua bài viết này BKNS tin rằng bạn đã tự tìm cho mình câu trả lời cho câu hỏi trên. Đồng thời hiểu được các lệnh căn bản trong Linux. Hy vọng những kiến thức này sẽ hữu ích thật nhiều với bạn.
Đừng quên theo dõi BKNS thường xuyên để cập nhật thêm nhiều bài viết hữu ích hơn nữa bạn nhé.
Đọc thêm các bài viết liên quan:
Proxmox là gì? Những điều về môi trường ảo Proxmox có thể bạn chưa biết
Hypervisor Là Gì? Hypervisor hoạt động như thế nào?
API là gì? Tổng quát về API và ưu nhược điểm của nó