cURL là gì ?
cURL viết tắt của client URL là một công cụ dòng lệnh (command-line tool) vô cùng hữu ích, cho phép bạn truyền dữ liệu qua nhiều giao thức khác nhau. Nó được sử dụng rộng rãi trong việc tương tác với các máy chủ, tải xuống dữ liệu, thực hiện các yêu cầu HTTP và nhiều tác vụ khác.
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.
Ví dụ đơn giản:
Để tải xuống trang chủ của Google, bạn chỉ cần chạy lệnh sau trong terminal:
curl google.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 https://www.google.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 |
Tại sao sử dụng curl?
Vậy tại sao bạn nên sử dụng cURL? Hãy xem xét những lợi ích sau của công cụ này:
- Nó có tính di động cao. Nó tương thích với hầu hết mọi hệ điều hành và thiết bị được kết nối.
- Nó hữu ích khi thử nghiệm các điểm cuối để kiểm tra xem chúng có hoạt động hay không.
- Nó có thể dài dòng, cung cấp thông tin chi tiết về những gì đã được gửi/nhận, điều này hữu ích cho việc gỡ lỗi.
- Có chức năng ghi lại lỗi tốt.
- Có thể giới hạn tốc độ.
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 một trang web hoặc hình ảnh trên mạng Internet. Ngoài ra, nó cũng hỗ trợ người dùng vận chuyển tập tin, dữ liệu, hình ảnh, hoặc truyền dữ liệu đến và đi từ server. Bên cạnh đó, cURL cho phép bạn kiểm tra Cookie được tải trên URL.
>> Tham khảo: Cách cài đặt và kích hoạt cURL trên máy chủ OpenLiteSpeed
Sử dụng cURL trong PHP
cURL là một thư viện mạnh mẽ được tích hợp sẵn trong PHP, cho phép bạn thực hiện các yêu cầu HTTP để tương tác với các dịch vụ web. Nó được sử dụng rộng rãi để:
- Truy xuất dữ liệu từ API: Lấy dữ liệu từ các API RESTful, GraphQL để hiển thị trên website hoặc ứng dụng của bạn.
- Gửi dữ liệu đến các dịch vụ: Gửi dữ liệu đến các form, thực hiện các thanh toán trực tuyến, gửi email qua API, v.v.
- Tải xuống file: Tải xuống hình ảnh, tài liệu, hoặc bất kỳ loại file nào từ một URL.
Các hàm cURL cơ bản trong PHP
- curl_init(): Khởi tạo một phiên cURL mới.
- curl_setopt(): Thiết lập các tùy chọn cho phiên cURL.
- curl_exec(): Thực thi yêu cầu.
- curl_close(): Đóng phiên cURL.
Ví dụ cơ bản: Lấy nội dung của một trang web
$ch = curl_init(); // Thiết lập URL curl_setopt($ch, CURLOPT_URL, "https://www.example.com"); // Thực thi yêu cầu và lấy kết quả $result = curl_exec($ch); // Đóng phiên cURL curl_close($ch); // Hiển thị kết quả echo $result;
Ví dụ nâng cao: Gửi dữ liệu POST
$ch = curl_init(); // Thiết lập URL và phương thức curl_setopt($ch, CURLOPT_URL, "https://api.example.com/data"); curl_setopt($ch, CURLOPT_POST, 1); // Dữ liệu gửi đi $postData = array( 'name' => 'John Doe', 'email' => 'johndoe@example.com' ); // Chuyển đổi mảng thành JSON $jsonData = json_encode($postData); // Thiết lập header curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json')); // Thiết lập dữ liệu POST curl_setopt($ch, CURLOPT_POSTFIELDS, $jsonData); // Thực thi yêu cầu $result = curl_exec($ch); // Đóng phiên cURL curl_close($ch); // Hiển thị kết quả var_dump($result);
Các tùy chọn cURL thường dùng
- CURLOPT_RETURNTRANSFER: Trả về kết quả dưới dạng chuỗi.
- CURLOPT_HEADER: Trả về cả header và body của response.
- CURLOPT_FOLLOWLOCATION: Theo dõi các chuyển hướng.
- CURLOPT_SSL_VERIFYPEER: Kiểm tra chứng chỉ SSL.
- CURLOPT_USERAGENT: Thiết lập user-agent.
- CURLOPT_TIMEOUT: Thiết lập thời gian chờ.
Sử dụng cURL với các framework PHP
Hầu hết các framework PHP phổ biến như Laravel, Symfony đều cung cấp các lớp wrapper để đơn giản hóa việc sử dụng cURL. Bạn có thể tham khảo tài liệu của từng framework để biết cách sử dụng cụ thể.
Lưu ý khi sử dụng cURL trong PHP
- Bảo mật: Khi gửi dữ liệu nhạy cảm, hãy đảm bảo mã hóa dữ liệu và sử dụng HTTPS để bảo vệ thông tin.
- Tốc độ: Để tăng tốc độ, bạn có thể sử dụng các kỹ thuật như caching, compression, và kết nối keep-alive.
- Error handling: Luôn kiểm tra lỗi khi sử dụng cURL để đảm bảo ứng dụng của bạn hoạt động ổn định.
Ví dụ sử dụng Guzzle (một thư viện HTTP client phổ biến cho PHP):
</pre> use GuzzleHttp\Client; $client = new Client(); $response = $client->request('POST', 'https://api.example.com/data', [ 'json' => [ 'name' => 'John Doe', 'email' => 'johndoe@example.com' ] ]); echo $response->getBody(); <pre>
Guzzle cung cấp một cách đơn giản và linh hoạt để thực hiện các yêu cầu HTTP, với nhiều tính năng hỗ trợ như async, middleware, và retry.
Sử dụng curl gửi yêu cầu API
cURL là một công cụ dòng lệnh vô cùng hữu ích để tương tác với các API. Nó cho phép bạn thực hiện các yêu cầu HTTP (GET, POST, PUT, DELETE,…) để truy xuất, tạo, cập nhật hoặc xóa dữ liệu từ một API.
Cú pháp cơ bản
Cú pháp cơ bản của lệnh cURL:
curl [options] [URL]
- options: Các tùy chọn để cấu hình yêu cầu.
- URL: Địa chỉ của API endpoint bạn muốn truy cập.
Các tùy chọn thường dùng khi gửi yêu cầu API
- -X, –request: Thiết lập phương thức HTTP (GET, POST, PUT, DELETE, …).
curl -X POST https://api.example.com/data
- -d, –data: Gửi dữ liệu POST.
curl -X POST -d "name=John&amp;amp;amp;amp;amp;amp;amp;amp;email=john@example.com" https://api.example.com/users
- -H, –header: Thêm header vào yêu cầu.
curl -X POST -H "Content-Type: application/json" https://api.example.com/data -d '{"name":"John Doe"}'
- -u, –user: Xác thực cơ bản.
curl -u user:password https://api.example.com
Ví dụ thực tế
- Gửi yêu cầu POST với dữ liệu JSON:
curl -X POST -H "Content-Type: application/json" -d '{"name":"John Doe", "age": 30}' https://api.example.com/users
- Gửi yêu cầu GET với tham số:
curl "https://api.example.com/products?category=electronics"
- Xóa một tài nguyên:
curl -X DELETE https://api.example.com/users/123
Xác thực với API
- Token:
curl -H "Authorization: Bearer your_token" https://api.example.com/user
- Basic Authentication:
curl -u user:password https://api.example.com
- API Key:
curl -H "X-API-Key: your_api_key" https://api.example.com
Sử dụng cURL trong script
Bạn có thể sử dụng cURL trong các script của mình (bash, Python, PHP, …) để tự động hóa các tác vụ.
- Bash:
#!/bin/bash output=$(curl -X POST -H "Content-Type: application/json" -d '{"name":"John Doe"}' https://api.example.com/users) echo $output
- Python:
import requests response = requests.post('https://api.example.com/users', json={'name': 'John Doe'}) print(response.text)
Lưu ý khi sử dụng cURL trong API
- Đọc kỹ tài liệu API: Mỗi API có cách xác thực và cấu trúc dữ liệu khác nhau.
- Bảo mật: Khi gửi dữ liệu nhạy cảm, hãy sử dụng HTTPS và các phương pháp xác thực an toàn.
- Xử lý lỗi: Kiểm tra mã trạng thái HTTP để đảm bảo yêu cầu thành công.
- Tùy chỉnh: cURL cung cấp nhiều tùy chọn khác để bạn có thể tùy chỉnh yêu cầu của mình.
Các lệnh cần biết của cURL trong Linux
Một số lệnh cơ bản được sử dụng dụng phổ biến của cURL trong Linux
Lệnh kiểm tra phiên bản cURL
Lệnh kiểm tra phiên bản cURL là gì? Khi muốn dùng cURL, bạn cần phải đăng nhập VPS bằng cách sử dụng SSH. Để chắc chắn rằng cURL đã được cài đặt vào hệ thống, bạn hãy kiểm tra cURL bằng lệnh:
curl –version.
Sau đó, hệ thống sẽ hiển thị phiên bản cURL đang có trên máy, lúc này bạn sẽ biết được danh sách các giao thức mà cURL có thể hỗ trợ được
Dùng cURL Command để tải file
curl -O https://example.com/file1.zip
Bạn có thể tải nhiều file cùng lúc bằng cách chỉ định nhiều URL:
curl -O https://example.com/file1.zip -O https://example.com/file2.zip
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 https://example.com/file.zip
Lệnh cURL Lưu và Đọc Cookies
Lưu cookies vào file:
curl -c cookies.txt https://example.com
Đọc cookies từ file:
curl -b cookies.txt https://example.com
Lệnh cURL cho FTP
Tải file xuống
cURL có thể được dùng để hỗ trợ giao thức FTP với mục đích tải file từ máy chủ từ xa. Dưới đây là câu lệnh mẫu:
curl -u username:password -O ftp://nameftpserver/yourfile.tar.gz
Với dòng lệnh trên, ftp://nameftpserver
chính là FTP server nhận request kết nối. Nếu sever hỗ trợ FTP ẩn danh, bạn có thể không cần điền username và password cũng được.
Upload file
Trong trường hợp nếu muốn upload file lên FTP server, bạn có thể sử dụng lệnh sau:
curl -u username:password -T yourfile.tar.gz ftp://nameftpserver
Cũng tương tự như trường hợp tải file từ FTP server xuống, người dùng có thể bỏ qua username và password nếu sử dụng được kết nối ẩn danh.
Lệnh Giới Hạn Tốc Độ Tải Dữ Liệu
Việc không biết được outpout lớn đến đâu khi sử dụng cURL có thể gây một số rắc rối sau này cho bạn, ví dụ như dung lượng file quá lớn khiến máy download chậm, nghẽn mạng,… Do đó để hạn chế tình trạng sử dụng băng thông lớn, bạn có thể giới hạn cURL output bằng cách sử dụng lệnh có dạng như sau:
Sử dụng –limit-rate để giới hạn tốc độ tải, ví dụ giới hạn ở 200KB/s:
curl --limit-rate 200K -O https://example.com/file.zip
Lệnh Kiểm Tra Trạng Thái HTTP
Dùng -w để hiển thị mã trạng thái HTTP:
curl -o /dev/null -s -w "%{http_code}\n" https://example.com
Những lệnh này sẽ giúp bạn sử dụng cURL hiệu quả hơn trong các tác vụ mạng hàng ngày trên Linux.
Kết luận
cURL là một công cụ vô cùng mạnh mẽ nếu bạn biết tận dụng hết chức năng của nó. Bằng cách hiểu rõ các dòng lệnh và cách sử dụng, bạn có thể tự động hóa nhiều tác vụ liên quan, từ việc lấy dữ liệu đến cập nhật thông tin.