CURL (Client URL) là một công cụ dòng lệnh mạnh mẽ dùng để truyền dữ liệu qua nhiều giao thức mạng khác nhau như HTTP, HTTPS, FTP, SFTP v.v., thường được sử dụng trong việc kiểm thử API, thu thập dữ liệu và truyền tải file. Dưới đây là hướng dẫn chi tiết về cách sử dụng CURL:
Cú Pháp Cơ Bản
curl [tùy chọn] [URL]
- tùy chọn: Điều khiển hành vi của CURL (như phương thức yêu cầu, thông tin tiêu đề, xác thực v.v.).
- URL: Địa chỉ máy chủ đích (phải bao gồm giao thức, ví dụ:
http://example.com).
Tính Năng Chính Và Các Tùy Chọn Thường Dùng
1. Gửi Yêu Cầu GET (Phương Thức Mặc Định)
# Yêu cầu GET đơn giản
curl https://example.com
# Nhận thông tin phản hồi đầy đủ (bao gồm tiêu đề)
curl -v https://example.com
# Chỉ nhận tiêu đề phản hồi
curl -I https://example.com
# Lưu nội dung phản hồi vào tệp
curl -o ketqua.html https://example.com
2. Gửi Yêu Cầu POST (Gửi Dữ Liệu)
# Gửi dữ liệu biểu mẫu (định dạng biểu mẫu)
curl -X POST https://example.com/api/nop \
--data "ten=John&tuoi=30"
# Gửi dữ liệu JSON (cần chỉ định Content-Type)
curl -X POST https://example.com/api/thongtin \
-H "Content-Type: application/json" \
-d '{"khóa": "giá trị", "mang": [1, 2, 3]}'
# Đọc dữ liệu từ tệp và gửi
curl -X POST https://example.com/tai-len \
-T du_lieu.json
3. Tiêu Đề Yêu Cầu Và Xác Thực
# Thêm tiêu đề tùy chỉnh
curl -H "User-Agent: UngDungCuaToi/1.0" https://example.com
# Xác thực cơ bản (tên người dùng:mật khẩu)
curl -u nguoidung:matkhau https://example.com/xac-thuc
# Xác thực bằng Bearer Token
curl -H "Authorization: Bearer TOKEN_CUA_BAN" https://example.com/api
# Gửi Cookie
curl -b "id_phien=12345" https://example.com
4. Proxy Và Kiểm soát Mạng
# Sử dụng máy chủ proxy
curl -x proxy.example.com:8080 https://example.com
# Thiết lập thời gian chờ (giây)
curl -m 10 https://example.com
# Giới hạn băng thông (KB/s)
curl --limit-rate 100 https://example.com/tap-tin-to
5. Tải Tải Tệp Và Tải Lên
# Tải xuống tệp và hiển thị tiến trình
curl -# -O https://example.com/file.zip
# Tiếp tục tải xuống (tệp đã tải xuống có thể tiếp tục tải)
curl -C - -O https://example.com/file.zip
# Tải lên tệp lên máy chủ (phương thức PUT)
curl -X PUT https://example.com/tai-len \
-T tep-trong-local.txt
6. Chứng Chỉ Và Các Tuỳ Chọn HTTPS
# Bỏ qua xác thực chứng chỉ HTTPS (không an toàn, chỉ dùng cho thử nghiệm)
curl -k https://example.com
# Chỉ định chứng chỉ khách hàng
curl --cert chung-chi-client.crt --key khoa-client.key https://example.com
# Tin tưởng tệp chứng chỉ CA
curl --cacert chung-chi-ca.crt https://example.com
Sử Dụng Nâng Cao Và Ví Dụ Trường Hợp
1. Mô Phỏng Hành Vi Trình Duyệt Web
# Mô phỏng yêu cầu từ trình duyệt Chrome
curl -H "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36" https://example.com
# Theo dõi chuyển hướng (mặc định theo dõi 3 lần)
curl -L https://example.com/chuyen-huong
2. Kiểm Thử Và Gỡ Lỗi API
# Kiểm thử API DELETE
curl -X DELETE https://example.com/api/doituong/123 \
-H "Authorization: Bearer TOKEN"
# Xem nhật ký chi tiết về yêu cầu và phản hồi
curl -v https://example.com/api/diem-ket-noi
3. Yêu Cầu Hàng Loạt Và Tự Động Hóa
# Đọc danh sách URL từ tệp văn bản và thực hiện yêu cầu hàng loạt
cat danh-sach-url.txt | while read url; do curl -s $url | head -n 10; done
# Sử dụng CURL trong script Shell
#!/bin/bash
DIACHI="https://api.example.com/thong-tin"
TOKEN="token_cua_ban"
phan_hoi=$(curl -s -H "Authorization: Bearer $TOKEN" $DIACHI)
echo "Phản hồi: $phan_hoi"
Bảng Tóm Tắt Các Tùy Chọn Thường Dùng
| Tùy chọn | Mô tả |
|---|---|
-v / --verbose |
Hiển thị quá trình truyền tải chi tiết (dùng cho gỡ lỗi) |
-X / --request |
Chỉ định phương thức yêu cầu (GET/POST/PUT/DELETE v.v.) |
-d / --data |
Gửi dữ liệu POST (định dạng biểu mẫu) |
-H / --header |
Thêm tiêu đề yêu cầu tùy chỉnh |
-u / --user |
Xác thực cơ bản (tên người dùng:mật khẩu) |
-o / --output |
Lưu phản hồi vào tệp |
-O / --remote-name |
Lưu phản hồi với tên tệp từ xa |
-k / --insecure |
Bỏ qua xác thực chứng chỉ HTTPS |
-x / --proxy |
Sử dụng máy chủ proxy |
-m / --max-time |
Thiết lập thời gian chờ tối đa (giây) |
Lưu Ý
- Mã hóa URL: Nếu tham số chứa các ký tự đặc biệt (như khoảng trắng,
&,=), hãy sử dụng mã hóa như%20hoặc bao quanh tham số bằng dấu nháy đơn (ví dụ:'ten=John Doe'). - An ninh: Tránh viết mật khẩu rõ ràng trong câu lệnh, hãy sử dụng biến môi trường (như
CURL_USER_PASSWORD) hoặc tệp cấu hình để truyền thông tin xác thực. - Hệ thống Windows: Một số cú pháp tùy chọn cần điều chỉnh (ví dụ: sử dụng dấu ngoặc kép thay vì dấu ngoặc đơn), khuyến nghị sử dụng PowerShell hoặc Git Bash để chạy CURL.
Bằng cách kết hợp linh hoạt các tùy chọn trên, CURL có thể đáp ứng hầu hết các tình huống yêu cầu mạng. Để có thêm thông tin chi tiết, hãy chạy curl --help hoặc tham khảo tài liệu chính thức.