curl command: Cách tải file và thao tác HTTP từ dòng lệnh | Hướng dẫn sử dụng cURL

Hướng dẫn sử dụng cURL

Client URL, hay cURL, là một thư viện và tiện ích dòng lệnh dùng để chuyển dữ liệu giữa các hệ thống. Nó hỗ trợ nhiều giao thức và thường được cài đặt mặc định trên nhiều hệ điều hành kiểu Unix. Nhờ tính phổ biến này, cURL là lựa chọn tuyệt vời khi bạn cần tải một tệp tin về hệ thống cục bộ, đặc biệt trong môi trường máy chủ.

Trong bài hướng dẫn này, bạn sẽ sử dụng lệnh curl để tải một tệp văn bản từ máy chủ web. Bạn sẽ xem nội dung của nó, lưu trữ cục bộ và chỉ định cho curl theo dõi các chuyển hướng nếu tệp tin đã được di chuyển.

Tải tệp tin từ Internet có thể khá nguy hiểm, vì vậy hãy đảm bảo rằng bạn chỉ tải về từ các nguồn uy tín. Trong bài hướng dẫn này, bạn sẽ tải tệp từ DataOnline, và bạn sẽ không thực thi bất kỳ tệp nào tải về.

Bước 1 – Lấy tệp tin từ xa

Mặc định, nếu không truyền thêm bất kỳ tham số dòng lệnh nào, lệnh curl sẽ lấy tệp tin và hiển thị nội dung của nó ra đầu ra tiêu chuẩn.

Hãy thử bằng cách tải tệp robots.txt từ DataOnline.vn:

curl https://dataonline.vn/robots.txt

Bạn sẽ thấy nội dung của tệp được hiển thị trên màn hình:

Output
User-agent: *
Disallow: /wp-admin/
Allow: /wp-admin/admin-ajax.php

Sitemap: https://dataonline.vn/sitemap_index.xml

Khi bạn cung cấp cho curl một URL, nó sẽ lấy tài nguyên đó và hiển thị nội dung của nó.

curl command: Cách tải file và thao tác HTTP từ dòng lệnh | Hướng dẫn sử dụng cURL

Lưu trữ tệp từ xa

Lấy tệp tin và hiển thị nội dung có vẻ ổn, nhưng nếu bạn muốn lưu tệp tin vào hệ thống của mình thì sao?

Để lưu tệp tin từ xa về hệ thống cục bộ, với tên tệp giống như trên máy chủ mà bạn đang tải, hãy thêm tham số -remote-name hoặc dùng tùy chọn -O:

curl -O https://dataonline.vn/robots.txt

Tệp của bạn sẽ được tải về:

Output
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   286    0   286    0     0   5296      0 --:--:-- --:--:-- --:--:--  5296

Thay vì chỉ hiển thị nội dung của tệp, curl sẽ hiển thị thanh tiến trình dạng văn bản và lưu tệp với tên giống như trên máy chủ. Bạn có thể kiểm tra bằng lệnh cat:

cat robots.txt

Tệp tin chứa nội dung giống như bạn đã thấy trước đó:

Output
User-agent: *
Disallow:

sitemap: https://dataonline.vn/sitemap.xml
sitemap: https://dataonline.vn/community/main_sitemap.xml.gz
sitemap: https://dataonline.vn/community/questions_sitemap.xml.gz
sitemap: https://dataonline.vn/community/users_sitemap.xml.gz

Bây giờ, hãy cùng xem cách chỉ định tên tệp cụ thể cho tệp tải về.

Bước 2 – Lưu tệp tin từ xa với tên tệp cụ thể

Có thể bạn đã có một tệp tin cục bộ có cùng tên với tệp trên máy chủ từ xa.

Để tránh ghi đè lên tệp cục bộ có cùng tên, hãy sử dụng tham số -o hoặc --output, sau đó là tên tệp cục bộ mà bạn muốn lưu nội dung vào.

Thực hiện lệnh sau để tải tệp robots.txt từ xa và lưu với tên do-bots.txt trên máy cục bộ:

curl -o do-bots.txt  https://dataonline.vn/robots.txt

Một lần nữa, bạn sẽ thấy thanh tiến trình:

Output
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   286    0   286    0     0   6975      0 --:--:-- --:--:-- --:--:--  7150

Bây giờ, dùng lệnh cat để hiển thị nội dung của do-bots.txt nhằm xác nhận đó chính là tệp bạn đã tải về:

cat do-bots.txt

Nội dung hiển thị giống như sau:

Output
User-agent: *
Disallow:

sitemap: https://dataonline.vn/sitemap.xml
sitemap: https://dataonline.vn/community/main_sitemap.xml.gz
sitemap: https://dataonline.vn/community/questions_sitemap.xml.gz
sitemap: https://dataonline.vn/community/users_sitemap.xml.gz

Bước 3 – Theo dõi các chuyển hướng

Mặc định, curl không theo dõi chuyển hướng, vì vậy khi tệp tin được di chuyển, bạn có thể không nhận được kết quả như mong đợi. Hãy cùng xem cách khắc phục.

Cho đến nay, tất cả các ví dụ đều bao gồm URL đầy đủ có chứa giao thức https://. Nếu bạn cố gắng lấy tệp robots.txt chỉ bằng cách chỉ định, bạn sẽ không thấy bất kỳ đầu ra nào, vì DataOnline sẽ chuyển hướng các yêu cầu từ http:// sang https://:

Bạn có thể kiểm tra điều này bằng cách sử dụng tham số -I, tham số này sẽ hiển thị tiêu đề của yêu cầu thay vì nội dung của tệp:

curl -I dataonline.vn/robots.txt

Kết quả đầu ra cho thấy URL đã được chuyển hướng. Dòng đầu tiên của kết quả cho biết tệp đã được di chuyển, và dòng Location cho biết nơi chuyển hướng đến:

Output
HTTP/1.1 301 Moved Permanently
Cache-Control: max-age=3600
Cf-Ray: 65dd51678fd93ff7-YYZ
Cf-Request-Id: 0a9e3134b500003ff72b9d0000000001
Connection: keep-alive
Date: Fri, 11 Jun 2021 19:41:37 GMT
Expires: Fri, 11 Jun 2021 20:41:37 GMT
Location: https://dataonline.vn/robots.txt
Server: cloudflare
. . .

Bạn có thể sử dụng curl để thực hiện một yêu cầu khác thủ công, hoặc bạn có thể dùng tham số --location hoặc -L cho curl, tham số này sẽ yêu cầu curl tự động thực hiện lại yêu cầu tới địa chỉ mới mỗi khi gặp chuyển hướng. Hãy thử:

curl -L dataonline.vn/robots.txt

Lần này, bạn sẽ thấy nội dung được hiển thị vì curl đã theo dõi chuyển hướng:

Output
User-agent: *
Disallow:

sitemap: https://dataonline.vn/sitemap.xml
sitemap: https://dataonline.vn/community/main_sitemap.xml.gz
sitemap: https://dataonline.vn/community/questions_sitemap.xml.gz
sitemap: https://dataonline.vn/community/users_sitemap.xml.gz

Bạn cũng có thể kết hợp tham số -L với một số tham số đã nói ở trên để tải tệp về hệ thống cục bộ:

curl -L -o do-bots.txt dataonline.vn/robots.txt

Cảnh báo: Rất nhiều tài nguyên trên mạng sẽ yêu cầu bạn dùng curl để tải các script và thực thi chúng. Trước khi chạy bất kỳ script nào bạn tải về, hãy kiểm tra nội dung của chúng bằng lệnh less để đảm bảo rằng đó là những đoạn mã bạn muốn thực thi.

Kết luận

Với curl, bạn có thể dễ dàng tải xuống tệp từ các hệ thống từ xa và tương tác với nhiều giao thức khác nhau. Công cụ này không chỉ hỗ trợ các tác vụ đơn giản như tải tệp mà còn cho phép thực hiện các yêu cầu HTTP phức tạp, giúp bạn làm việc với API một cách hiệu quả.

Để khám phá thêm các tính năng nâng cao của curl, bạn có thể tham khảo tài liệu chính thức bằng cách chạy lệnh:man curl

Điều này sẽ cung cấp cho bạn thông tin chi tiết về cú pháp và các tùy chọn hữu ích của công cụ này.

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *