Liên hệProfile
Danh mục

Mục Lục

    Hướng dẫn sử dụng lệnh curl Linux để truyền dữ liệu và kiểm thử HTTP chi tiết

    Nguyễn Hưng

    Ngày đăng:

    26/03/2026

    Cập nhật lần cuối:

    26/03/2026

    Lượt xem:
    Chia sẻ
    Đánh giá
    Đánh giá bài viết

    Nguyễn Hưng

    Lượt xem:
    Ngày đăng:

    26/03/2026

    Cập nhật lần cuối:

    26/03/2026

    Mục lục

    Lệnh curl là một công cụ dòng lệnh linh hoạt và mạnh mẽ, được sử dụng để truyền dữ liệu đến hoặc từ một máy chủ. Công cụ này hỗ trợ nhiều giao thức khác nhau như HTTP, HTTPS, FTP, FTPS, SCP, SFTP,… và thường được dùng để kiểm thử API, tải file hoặc mô phỏng các yêu cầu trình duyệt. Với cá nhân mình, việc thành thạo lệnh curl trên Linux gần như là kỹ năng bắt buộc nếu bạn muốn làm việc với hệ thống một cách chuyên nghiệp và kiểm soát tốt mọi luồng dữ liệu ra – vào server. Trong bài viết dưới đây, mình sẽ hướng dẫn bạn chi tiết cách sử dụng lệnh curl với các tùy chọn phổ biến, giúp bạn thao tác với dữ liệu trên Internet một cách hiệu quả từ Terminal.

    Những điểm chính

    • Quan điểm của mình: Việc thành thạo lệnh curl giúp bạn thao tác với dữ liệu nhanh chóng và là giải pháp để gỡ lỗi hệ thống, kiểm thử API chuẩn xác, giúp quy trình làm việc trở nên chuyên nghiệp và linh hoạt hơn.
    • Khái niệm: Nắm được bản chất lệnh curl giúp truyền tải dữ liệu giữa máy chủ và máy khách linh hoạt qua Terminal.
    • Lợi ích khi sử dụng: Biết cách tận dụng curl để kiểm thử API, tự động hóa Script và giả lập các yêu cầu trình duyệt phức tạp.
    • Cách cài đặt: Làm chủ các bước cài đặt curl trên Debian/Ubuntu và CentOS/RHEL chỉ với vài câu lệnh đơn giản.
    • Cách sử dụng chi tiết: Thành thạo các thao tác xem nội dung URL, tải file, theo dõi chuyển hướng và quản lý Header phản hồi.
    • Kiểm tra kết quả: Biết cách xác định trạng thái 200 OK và kiểm tra tính chính xác của dữ liệu sau khi thực thi lệnh.
    • Xử lý lỗi phổ biến: Trang bị kỹ năng khắc phục các lỗi kết nối thường gặp như sai DNS, từ chối kết nối hoặc lỗi xác thực 401/403.
    • Lưu ý khi dùng: Nắm vững các quy tắc an toàn về bảo mật SSL, bảo vệ thông tin đăng nhập và cách gỡ lỗi hiệu quả với chế độ Verbose.
    • Câu hỏi thường gặp: Giải đáp các thắc mắc thường gặp liên quan đến lệnh curl Linux.

    Lệnh curl Linux là gì?

    Lệnh cURL là lệnh được xây dựng dựa trên nền tảng thư viện libcurl, chuyên dùng để truyền tải dữ liệu giữa máy chủ và máy khách. Điểm mạnh của curl so với trình duyệt web thông thường là khả năng hoạt động hoàn toàn trong môi trường dòng lệnh, cho phép người dùng gửi các yêu cầu HTTP/HTTPS phức tạp như POST, PUT, DELETE hay tùy biến Header một cách linh hoạt. Nhờ đặc tính này, curl trở thành công cụ hữu ích của các nhà phát triển và quản trị viên hệ thống trong việc kiểm tra API, gỡ lỗi kết nối mạng hoặc viết kịch bản để tự động hóa quy trình trao đổi dữ liệu.

    Lệnh cURL được sử dụng để truyền tải dữ liệu giữa máy chủ và máy khách.
    Lệnh cURL được sử dụng để truyền tải dữ liệu giữa máy chủ và máy khách.

    Những lợi ích khi sử dụng lệnh curl

    Dưới đây là những lợi ích chính của lệnh curl đối với các lập trình viên và quản trị trị viên hệ thống:

    • Công cụ hỗ trợ tốt trong kiểm thử và gỡ lỗi API: Lệnh curl cho phép bạn gửi các yêu cầu HTTP phức tạp như POST, PUT, DELETE,… kèm theo dữ liệu JSON hoặc XML để kiểm tra phản hồi của Server. Lệnh này giúp hiển thị chi tiết các HTTP Header, mã trạng thái và luồng dữ liệu, giúp lập trình viên nhanh chóng tìm ra lỗi trong quá trình phát triển Backend hoặc tích hợp hệ thống.
    • Hỗ trợ đa dạng các giao thức truyền tải: Ngoài HTTP/HTTPS, curl cũng hỗ trợ giao thức khác như FTP, FTPS, SCP, SFTP, TFTP, LDAP và SMTP, giúp bạn có thể dùng một công cụ duy nhất cho nhiều mục đích quản trị mạng khác nhau.
    • Khả năng tự động hóa mạnh mẽ: Được thiết kế để hoạt động không cần tương tác người dùng, curl có thể nhúng vào các Shell Script, Cron Job hoặc quy trình CI/CD.
    • Tùy biến yêu cầu linh hoạt: curl cho phép bạn can thiệp sâu vào gói tin gửi đi. Bạn có thể giả lập trình duyệt, quản lý Cookies, đặt giới hạn tốc độ tải hoặc bỏ qua kiểm tra chứng chỉ SSL. Đây là những tính năng mà trình duyệt web thông thường rất khó thực hiện.
    • Tính sẵn có và tương thích cao: curl được cài đặt sẵn trên hầu hết các bản phân phối Linux, macOS và cả Windows 10/11 trở về sau. Tính ổn định và đa nền tảng của curl giúp các giải pháp sử dụng curl có thể chạy trơn tru ở mọi môi trường mà không cần cài đặt thêm phần mềm phụ thuộc.
    Những lợi ích khi sử dụng lệnh curl
    Những lợi ích khi sử dụng lệnh curl

    Cách cài đặt lệnh curl trong Linux

    Lệnh curl thường được cài đặt sẵn trên hầu hết các bản phân phối Linux. Nếu lệnh không có sẵn khiến hệ thống báo lỗi command not found, bạn có thể cài đặt bằng lệnh sau:

    • Trên Debian/Ubuntu:
    sudo apt install curl
    • Trên CentOS/RHEL:
    sudo yum install curl

    1. Xem nội dung của một URL

    Để gửi một yêu cầu GET đơn giản để lấy nội dung HTML của website hoặc API, bạn sử dụng cú pháp lệnh sau:

    curl <URL_hoac_ten_mien>

    Để gửi một yêu cầu HTTP GET đến website vietnix.vn và in nội dung HTML của trang đó trực tiếp ra màn hình Terminal, bạn thực thi lệnh sau:

    curl vietnix.vn

    Theo mặc định, curl sẽ thực hiện yêu cầu GET và in toàn bộ nội dung phản hồi ra màn hình Terminal.

    Xem nội dung của một URL
    Xem nội dung của một URL

    2. Tải file xuống

    Để tải một file từ URL xuống thư mục hiện tại, bạn dùng lệnh sau:

    curl -O <URL_den_file_can_tai_xuong>

    Để tải file techtest.index từ server về máy và lưu lại với đúng tên file gốc trong thư mục hiện tại, bạn thực hiện lệnh dưới đây:

    curl -O https://tech1.vietnix.tech/techtest.index

    iconLưu ý

    Tùy chọn -O là chữ O viết hoa.

    Tải một file từ URL xuống thư mục hiện tại
    Tải một file từ URL xuống thư mục hiện tại

    Tùy chọn -O sẽ lưu file bằng tên gốc của chính file đó vào thư mục làm việc hiện tại.

    3. Chỉ hiển thị Header phản hồi

    Bạn có thể kiểm tra các thông tin metadata của phản hồi như mã trạng thái HTTP (Status Code), loại nội dung (Content-Type) và ngày giờ mà không hiển thị nội dung trang. Để xem riêng phần Header, bạn sử dụng lệnh dưới đây:

    curl -I <ten_mien_hoac_URL>

    Bạn chạy lệnh sau để gửi một yêu cầu HTTP đến vietnix.vn nhưng chỉ lấy phần Header của phản hồi, không tải nội dung HTML/body của trang:

    curl -I vietnix.vn

    iconLưu ý

    Tùy chọn -I là chữ I viết hoa.

    Chỉ hiển thị Header phản hồi
    Chỉ hiển thị Header phản hồi

    Tùy chọn -I sẽ chỉ hiển thị Header của phản hồi, tính năng này rất cần thiết khi bạn gỡ lỗi hoặc kiểm tra mã trạng thái HTTP, ví dụ như 200 OK, 301 Redirect, 404 Not Found.

    4. Hiển thị cả Header và Body

    Để hiển thị chi tiết phần Header và nội dung (Body) của phản hồi, bạn dùng lệnh sau đây:

    curl -i <ten_mien_hoac_URL>

    Lệnh sau dùng để gửi yêu cầu đến vietnix.vn và hiển thị cả phần Header lẫn phần Body của phản hồi HTTP trong Terminal:

    curl -i vietnix.vn

    iconLưu ý

    Tùy chọn -i là chữ i viết thường.

    Hiển thị cả Header và Body của phản hồi
    Hiển thị cả Header và Body của phản hồi

    5. Theo dõi các bước chuyển hướng

    Để tự động theo dõi và hiển thị kết quả cuối cùng khi máy chủ phản hồi bằng mã chuyển hướng như 301, 302,… bạn dùng lệnh sau:

    curl -L <URL>

    Bạn có thể thực hiện lệnh sau để gửi yêu cầu đến URL https://tech.vietnix.xyz và tự động follow tất cả các redirect cho đến URL cuối cùng, rồi in nội dung phản hồi ra Terminal:

    curl -L https://tech.vietnix.xyz
    Theo dõi các bước chuyển hướng
    Theo dõi các bước chuyển hướng

    Cách kiểm tra kết quả thành công

    Để kiểm tra, bạn thực hiện theo 2 thao tác sau:

    • Thao tác tải xuống: Bạn hãy kiểm tra thư mục hiện tại để xem file đã được tải xuống với tên và kích thước chính xác hay chưa.
    • Thao tác API/GET:
      • Nếu dùng -I, kiểm tra mã trạng thái phải là 200 OK hoặc 3xx nếu có chuyển hướng.
      • Nội dung Body phải trả về dữ liệu mong muốn như HTML, JSON, XML,…

    Cách xử lý lỗi phổ biến khi sử dụng lệnh curl

    1. Lỗi: curl: (6) Could not resolve host

    Theo kinh nghiệm của mình, đây là lỗi mà người mới gặp phải nhiều nhất khi bắt đầu làm quen với curl và phần lớn trường hợp chỉ đơn giản là do gõ sai tên miền hoặc quên kiểm tra kết nối mạng trước khi chạy lệnh.

    Dấu hiệu nhận biết lỗi: curl: (6) Could not resolve host là khi bạn gõ lệnh nhưng hệ thống trả về ngay lập tức thông báo không thể tìm thấy máy chủ. Đây là lỗi liên quan đến DNS khiến máy tính của bạn không thể dịch tên miền sang địa chỉ IP để thiết lập kết nối. Nguyên nhân có thể do mất mạng, gõ sai tên miền hoặc DNS server cấu hình sai. Để khắc phục, bạn thực thi theo các bước sau:

    • Bước 1: Bạn kiểm tra lại chính tả của URL xem có thừa/thiếu ký tự nào không.
    • Bước 2: Tiếp theo, bạn kiểm tra kết nối mạng bằng lệnh ping google.com.
    • Bước 3: Cuối cùng, bạn kiểm tra file cấu hình DNS /etc/resolv.conf và đảm bảo file này có chứa nameserver hợp lệ.

    2. Lỗi: curl: (7) Failed to connect to host port 80: Connection refused

    Nguyên nhân phổ biến của lỗi này là gói tin đã đến được máy chủ đích nhưng kết nối bị từ chối ngay tại đó, không được phép thiết lập phiên làm việc. Có hai nhóm nguyên nhân chính là:

    • Dịch vụ chưa chạy: Web Server trên máy đích bị tắt hoặc bị lỗi.
    • Firewall chặn: Tường lửa đang chặn cổng 80 hoặc 443.

    Để khắc phục, bạn thực hiện như sau:

    • Nếu là server của bạn: Bạn hãy SSH vào và kiểm tra trạng thái dịch vụ bằng lệnh systemctl status nginx hoặc apache2.
    • Kiểm tra tường lửa: Đảm bảo cổng cần kết nối đã được mở.

    3. Lỗi: HTTP Status Code 401 hoặc 403

    Lỗi này xảy ra khi kết nối thành công, server có phản hồi, nhưng không trả về dữ liệu mà trả về mã lỗi. Nguyên nhân chính của lỗi thường do bạn chưa đăng nhập hoặc Token/Mật khẩu bị sai. Ngoài ra cũng có thể là do bạn đã đăng nhập đúng, nhưng tài khoản của bạn không có quyền truy cập vào tài nguyên này. Để khắc phục, bạn thực hiện như sau:

    • Kiểm tra lại khóa API hoặc Bearer Token trong phần Header.
    • Nếu dùng Basic Auth, hãy chắc chắn bạn đã dùng đúng cú pháp -u username:password.
    HTTP Status Code 401 hoặc 403 là các lỗi thường gặp khi dùng lệnh curl
    HTTP Status Code 401 hoặc 403 là các lỗi thường gặp khi dùng lệnh curl (Nguồn: Internet)

    Những lưu ý khi sử dụng lệnh curl trong Linux

    Dưới đây là những lưu ý quan trọng khi sử dụng lệnh curl để đảm bảo an toàn bảo mật và tránh các lỗi kỹ thuật không đáng có, được trình bày súc tích:

    • Cẩn trọng khi bỏ qua kiểm tra SSL: Nhiều người dùng có thói quen dùng tùy chọn -k để bỏ qua lỗi chứng chỉ SSL khi test server nội bộ. Tuy nhiên, bạn không nên dùng cờ này trong môi trường Production hoặc khi truyền tải dữ liệu quan trọng vì điều này có thể khiến kết nối của bạn dễ bị tấn công Man-in-the-Middle.
    • Lưu ý về việc chuyển hướng: Khác với trình duyệt web tự động chuyển sang trang mới, curl mặc định sẽ đứng yên nếu gặp mã phản hồi chuyển hướng như 301 hoặc 302. Do đó, bạn bắt buộc phải thêm tùy chọn -L (Location) để yêu cầu curl đi theo đường dẫn mới đến đích cuối cùng.
    • Bảo vệ thông tin đăng nhập: Bạn nên hạn chế việc nhập trực tiếp mật khẩu vào dòng lệnh theo dạng curl -u user:password vì lệnh này sẽ được lưu lại trong lịch sử hệ thống khiến người khác có thể xem được mật khẩu của bạn. Thay vào đó, bạn chỉ nên dùng -u user để curl hiển thị lời nhắc nhập mật khẩu an toàn hơn.
    • Sử dụng chế độ Verbose (-v) để kiểm tra: Khi kết nối thất bại và hiển thị thông báo lỗi, bạn hãy thêm tùy chọn -v (verbose) để hiển thị toàn bộ quá trình bắt tay, các HTTP Header gửi đi và nhận về, giúp bạn xác định được nguyên nhân lỗi.
    • Tránh làm lỗi giao diện Terminal: Nếu bạn dùng curl để tải một file nhị phân mà quên dùng tùy chọn lưu file, curl sẽ in nội dung mã hóa ra màn hình và điều này có thể làm treo hoặc lỗi hiển thị của cửa sổ Terminal. Do đó bạn hãy định hướng đầu ra vào file khi tải dữ liệu không phải văn bản.
    Bạn cần bảo vệ thông tin đăng nhập của mình
    Bạn cần bảo vệ thông tin đăng nhập của mình (Nguồn: Internet)

    Câu hỏi thường gặp

    Sự khác biệt giữa tùy chọn -o (chữ thường) và -O (chữ hoa) là gì?

    Điểm khác biệt chính giữa -o (chữ thường) và -O (chữ hoa) là:
    -O (Remote Name): Lưu file với tên gốc giống trên server.
    -o (Output File): Cho phép bạn đổi tên file khi lưu về máy.

    Lệnh curl và lệnh wget khác nhau như thế nào?

    wget: Chuyên dụng để tải file, hỗ trợ tải đệ quy, hoạt động tốt khi mạng yếu và dễ sử dụng cho việc download đơn thuần.
    curl: Đa năng hơn, hỗ trợ nhiều giao thức và phương thức HTTP và được dùng chủ yếu để kiểm thử API, debug mạng và truyền dữ liệu phức tạp.

    Làm sao để bỏ qua lỗi kiểm tra chứng chỉ SSL?

    Khi bạn làm việc với server sử dụng Self-signed Certificate hoặc server nội bộ, curl sẽ báo lỗi bảo mật. Để bỏ qua bước kiểm tra này, hãy thêm tùy chọn -k hoặc –insecure.
    Ví dụ: curl -k https://localhost

    Lệnh curl là công cụ không thể thiếu đối với bất kỳ ai làm việc với mạng và web services trên Linux. Bằng cách nắm vững các tùy chọn quan trọng như tải tập tin (-o, -O), chỉ định phương thức (-X), thêm dữ liệu (-d) và quản lý Header (-H, -I), bạn đã trang bị cho mình khả năng kiểm thử kết nối và tương tác với các giao thức mạng một cách mạnh mẽ, chi tiết và an toàn ngay từ dòng lệnh.

    Đánh giá bài viết
    Nguyễn Hưng
    Tôi là Nguyễn Hưng hay còn được biết đến với nickname là Bo, chuyên gia về hệ thống, mạng và bảo mật. Tôi là Co-Founder của Vietnix và Co-Founder của dự án Chống Lừa Đảo.
    0 0 đánh giá
    Đánh giá bài viết
    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

    BÀI VIẾT LIÊN QUAN

    Hướng dẫn cách gán output của Linux cho một biến nhanh chóng, chi tiết
    Hướng dẫn cách gán output của Linux cho một biến nhanh chóng, chi tiết

    Việc gán output của lệnh vào một biến giúp bạn lưu trữ kết quả đó trong biến và tái sử dụng linh hoạt trong suốt script, từ kiểm tra điều kiện, xử lý chuỗi cho đến log hoặc tự động hóa các tác vụ phức tạp. Trong bài viết này, mình sẽ hướng dẫn bạn…

    26/03/2026

    Cách dùng SFTP Linux để truyền file quan SSH an toàn và nhanh chóng
    Cách dùng SFTP Linux để truyền file quan SSH an toàn và nhanh chóng

    SFTP Linux là một giao thức chạy trên nền SSH, dùng để kết nối tới server và upload/download, quản lý file từ xa một cách an toàn hơn FTP thường. Khác với giao thức FTP truyền thống, SFTP hoạt động dựa trên nền tảng của giao thức SSH, giúp toàn bộ phiên làm việc đều…

    26/03/2026

    Lệnh ping trong Linux là gì? Cácg sử dụng lệnh ping để kiểm tra kết nối mạng và độ trễ
    Lệnh ping trong Linux là gì? Cácg sử dụng lệnh ping để kiểm tra kết nối mạng và độ trễ

    Lệnh ping Linux là công cụ dòng lệnh dùng để kiểm tra kết nối mạng và đo độ trễ giữa máy của bạn với một địa chỉ IP hoặc tên miền cụ thể thông qua các gói ICMP Echo Request/Echo Reply. Trong bài viết này, mình sẽ cùng bạn tìm hiểu cách dùng ping Linux…

    26/03/2026

    Hướng dẫn sử dụng lệnh nice Linux để điều chỉnh độ ưu tiên tiến trình hiệu quả
    Hướng dẫn sử dụng lệnh nice Linux để điều chỉnh độ ưu tiên tiến trình hiệu quả

    Lệnh nice Linux là công cụ điều chỉnh mức ưu tiên CPU cho tiến trình thông qua giá trị niceness, giúp phân phối tài nguyên hợp lý giữa các tác vụ chạy đồng thời trên hệ thống. Trong bài viết này, mình sẽ cùng bạn tìm hiểu cách hoạt động của nice Linux, cách thiết…

    26/03/2026

    linux

    lenh

    text