Nếu bạn đang tìm một công cụ cho phép kiểm tra proxy và thu thập dữ liệu trang web cùng lúc, thì bạn đã tìm đúng nơi. cURL là một công cụ dòng lệnh cho phép bạn kiểm tra proxy và thực hiện một số tác vụ thu thập dữ liệu web cơ bản. Trực quan và dễ học, cURL còn có thể gửi yêu cầu, thêm cookie, gỡ lỗi và kết nối với proxy, cùng nhiều chức năng khác.
Hướng dẫn từng bước này sẽ giúp bạn hiểu cURL là gì, cách sử dụng các lệnh khác nhau, cách dùng cURL để thu thập dữ liệu web cơ bản và cách dùng cURL với máy chủ proxy. Hướng dẫn có thể hơi phức tạp, vì vậy hãy đảm bảo bạn hiểu cơ bản proxy là gì trước khi bắt đầu đọc. Biết một số kiến thức cơ bản về thu thập dữ liệu web cũng sẽ hữu ích.
Mục lục
- cURL là gì?
- Cách cài đặt cURL
- Cách sử dụng cURL
- Cách sử dụng cURL với máy chủ proxy
- 7 mẹo và thủ thuật quan trọng
- Curl và Wget
- Kết luận
cURL là gì?
cURL, viết tắt của “client URL”, là một công cụ dòng lệnh hỗ trợ truyền dữ liệu qua internet. Công cụ này bao gồm dòng lệnh curl.exe và một thư viện đa nền tảng có tên libcurl, cho phép trao đổi dữ liệu giữa các máy chủ.
Tương thích với nhiều hệ điều hành hiện đại sử dụng giao thức internet, cURL hoạt động trên nhiều thiết bị, từ máy tính xách tay đến ô tô. Công cụ này hỗ trợ nhiều giao thức internet, chẳng hạn như:
- DICT
- FILE
- FTP
- FTPS
- GOPHER
- HTTP
- HTTPS
- IMAP
- IMAPS
- LDAP
- LDAPS
- MQTT
- POP3
- POP3S
- RTSP
- SCP
- SFTP
- SMB
- SMBS
- SMTP
- SMTPS
- TELNET
- TFTP
Một cộng đồng đông đảo đã phát triển nhiều công cụ dành cho cURL, trong đó có curl-loader, một công cụ kiểm thử hiệu năng phần mềm Linux mã nguồn mở. Curl-loader có thể mô phỏng hành vi ứng dụng của nhiều máy khách FTP/FTPS và HTTP/HTTPS. Một tiến trình curl-loader có thể hỗ trợ từ 2,500 đến 100,000 máy khách ảo, mỗi máy khách có địa chỉ IP nguồn riêng.
Nguồn gốc của cURL
Lịch sử của cURL bắt nguồn từ những năm 1990, khi các công cụ dòng lệnh rất phổ biến. Năm 1996, nhà phát triển người Thụy Điển Daniel Stenberg bắt đầu phát triển một tập lệnh cho phòng trò chuyện chuyển tiếp internet (IRC) để chuyển đổi tiền tệ cho những người tham gia trò chuyện. Điều này đã đưa ông đến với việc đóng góp cho một công cụ có tên httpget, một phương thức HTTP phổ biến để truyền dữ liệu qua máy chủ. Qua quá trình thử nghiệm, Stenberg đã tạo ra httpget 0.1, gồm “chưa đến 300 dòng trong một tệp C duy nhất”.
Vài tháng sau, các giao thức truyền tệp (FTP) xuất hiện, khiến Stenberg bổ sung hỗ trợ FTP cho công cụ của mình và đổi tên thành urlget 2.0. Vào ngày 30 tháng 3 năm 1998, ông bổ sung khả năng tải tệp lên qua FTP và một lần nữa đổi tên công cụ thành cURL 3.0.
Mặc dù cURL có tiềm năng lớn, ban đầu công cụ này ít được chú ý. Năm 1998, sau 15 lần cập nhật và phát hành lại, cURL đã có hơn 300 lượt tải xuống từ trang web của Stenberg. Cuối năm đó, Red Hat Linux áp dụng cURL, tiếp theo là Debian vào năm 1999 và Mac OS X 10.1 vào tháng 8 năm 2001. Kể từ năm 2001, cURL đã trở thành tính năng mặc định trên gần như mọi phần mềm có thể kết nối internet, bao gồm Windows 10, các thiết bị iOS và Android, Sony PS5, Nintendo Switch, Xbox và thậm chí cả ô tô.
Tại sao nên sử dụng cURL?
cURL là lựa chọn phổ biến của các nhà phát triển nhờ khả năng xử lý hiệu quả những thao tác phức tạp. Tính linh hoạt, khả năng viết tập lệnh và thư viện đi kèm cho phép tích hợp liền mạch với các chương trình khác mà không cần viết mã phân tích HTTP và kết nối mạng tùy chỉnh.
cURL mang lại nhiều lợi ích, chẳng hạn như:
- Khả năng kiểm tra và gỡ lỗi điểm cuối
- Thông tin chi tiết về dữ liệu đã gửi và nhận
- Ghi nhật ký lỗi toàn diện
- Hỗ trợ nhiều giao thức
- Tương thích với http2, Metalink, gzip, giải nén tự động và Content-Encoding
- Các tính năng nâng cao như tải tệp lên qua FTP, cookie, xác thực người dùng, hỗ trợ proxy, kết nối SSL và nhiều chức năng khác
- Tự động chuyển giao thức nếu giao thức mặc định không hoạt động
- Cú pháp URL phụ thuộc vào giao thức
- Chức năng giới hạn tốc độ
- Khả năng chỉ định các phần của URL hoặc nhiều URL bằng dấu ngoặc nhọn (ví dụ: https://google.{one, two, three}.com)
- Tùy chọn chỉ định bất kỳ số lượng URL nào thông qua dòng lệnh
Hơn nữa, các nhà phát triển đánh giá cao tính năng xác minh chứng chỉ SSL mặc định và hỗ trợ HTTPS của cURL. Khi cURL kết nối với máy chủ qua HTTPS, công cụ sẽ nhận chứng chỉ của máy chủ và so sánh với chứng chỉ CA để đảm bảo máy chủ từ xa là xác thực.
Cách cài đặt cURL
Hãy cùng tìm hiểu cách cài đặt cURL trên máy tính của bạn.
macOS
Không cần cài đặt cURL trên macOS vì nó đã được tích hợp sẵn trong hệ điều hành. Bạn có thể sử dụng cURL trực tiếp trong ứng dụng Terminal.
Windows
Bắt đầu từ Windows 10, hệ điều hành đã bao gồm một bản cURL. Tuy nhiên, lệnh cURL đóng vai trò là bí danh cho lệnh PowerShell Invoke-WebRequest. Do đó, khi chạy các lệnh cURL trong cửa sổ dòng lệnh Windows, lệnh Invoke-Request sẽ được thực thi ngầm. Để sử dụng cURL, hãy thay ‘curl’ bằng ‘curl.exe’ và PowerShell sẽ chạy cURL thay vì Invoke-Request.
Ví dụ: để kiểm tra phiên bản cURL hiện được cài đặt trên máy Windows của bạn, hãy nhập lệnh sau vào cửa sổ dòng lệnh:
curl.exe --versionKết quả sẽ tương tự như sau:
curl 7.83.1 (Windows) libcurl/7.83.1 Schannel Release-Date: 2022-05-13 Protocols: dict file ftp ftps http https imap imaps pop3 pop3s smtp smtps telnet tftp Features: AsynchDNS HSTS IPv6 Kerberos Largefile NTLM SPNEGO SSL SSPI UnixSocketsNếu bạn muốn tìm hiểu thêm về cURL và Windows, chúng tôi khuyên bạn nên xem video này. Bạn sẽ biết cURL là gì, cách chạy cURL trên Windows và cách gửi các yêu cầu API GET, POST, PUT, DELETE bằng cURL.
Linux
Đối với người dùng Linux, quy trình cài đặt cURL sẽ khác nhau tùy theo bản phân phối cụ thể. Các bản phân phối phổ biến như Ubuntu và Fedora đã cài đặt sẵn cURL, vì vậy bạn có thể sử dụng trực tiếp trong cửa sổ dòng lệnh.
Đối với các bản phân phối không tích hợp cURL theo mặc định, bạn có thể cài đặt bằng trình quản lý gói của bản phân phối đó. Ví dụ: trên các hệ điều hành dựa trên Debian, hãy dùng lệnh sau để cài đặt cURL:
sudo apt-get install curlCách sử dụng cURL
Đảm bảo cURL đã được cài đặt trên thiết bị của bạn. Trước khi sử dụng cURL, hãy chắc chắn rằng chương trình đã được cài đặt trên hệ thống. Nếu chưa, hãy tải xuống từ trang web cURL.
A. Kiểm tra cURL đã được cài đặt trên thiết bị của bạn hay chưa
Để kiểm tra cURL đã được cài đặt trên hệ thống hay chưa, hãy làm theo các bước sau:
- Trên máy tính Windows hoặc MacBook, mở giao diện dòng lệnh hoặc cửa sổ PowerShell.
- Nhập
'curl --version' - Nhấn Enter.
Nếu cURL đã được cài đặt trên thiết bị, bạn sẽ nhận được thông báo tương tự như sau:
curl --version curl 7.55.1 (Windows) libcurl/7.55.1 WinSSL Release-Date: 2017-11-14, security patched: 2020-11-05 Protocols: dict file ftp ftps http https imap imaps pop3 pop3s smtp smtps telnet tftp Features: AsynchDNS IPv6 Largefile SSPI Kerberos SPNEGO NTLM SSLHOẶC
curl --version curl 7.31.0 (x86_64-apple-darwin12.4.0) libcurl/7.31.0 OpenSSL/0.9.8x zlib/1.2.5 Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtsp smtp smtps telnet tftp Features: IPv6 Largefile NTLM NTLM_WB SSL libzNếu thấy thông báo khác, điều đó có nghĩa là cURL chưa được cài đặt trên thiết bị và bạn cần cài đặt chương trình.
B. Xác định cú pháp cURL phù hợp để sử dụng
Theo mặc định, cURL sử dụng giao thức HTTP với cú pháp sau: cURL [options] [URL]
Vì cURL hỗ trợ nhiều giao thức nên cú pháp có thể hơi khác nhau tùy theo từng giao thức. Dưới đây là một số ví dụ về lệnh cURL cho các giao thức mạng khác nhau:
- Giao thức truyền tệp (FTP): cURL -T “selected file” “ftp://[target-destination]”
- Giao thức truyền thư đơn giản (SMTP): cURL smtp://[smtp-server] –mail-from [sender] –mail-rcpt [recipient] –upload-file [mail-content-file]
- Giao thức mạng từ điển [DICT]: cURL “dict://dict.org/d:hi”
Điều quan trọng là phải biết bạn sẽ làm việc với những giao thức mạng nào để tối ưu hóa trải nghiệm sử dụng cURL.
C. Sử dụng cú pháp cURL phù hợp với mục tiêu của bạn
cURL cho phép bạn thực hiện nhiều tác vụ khác nhau, chẳng hạn như tải tệp xuống và tải tệp lên hoặc xử lý xác thực người dùng. Mỗi tác vụ yêu cầu cú pháp cURL khác nhau, chủ yếu do các tham số và giao thức mạng cụ thể có liên quan.
Dưới đây là một số tác vụ phổ biến cùng các lệnh cURL tương ứng:
- Để tải tệp xuống: curl -o [file name] [URL]
- Để tải tệp lên bằng giao thức FTP: curl -u [Username:Password] -T [local-file-path] ftp://[URL]
- Để yêu cầu tiêu đề HTTP: curl -I [URL]
Cách sử dụng cURL để thu thập dữ liệu web ở quy mô nhỏ
cURL có thể được dùng để thu thập dữ liệu web ở quy mô nhỏ kết hợp với một ngôn ngữ lập trình như PHP.
Trước khi bắt đầu thu thập dữ liệu, hãy nhớ xem xét tệp robots.txt của trang web mục tiêu. Hãy tuân thủ các quy tắc, ngay cả khi chúng có vẻ vô lý, vì chủ sở hữu trang web có quyền đặt ra các thông số và hạn chế. Tuân thủ tệp robots.txt khi thu thập dữ liệu trên web được xem là thông lệ tiêu chuẩn; việc không tuân thủ có thể dẫn đến những rắc rối pháp lý.
Với lưu ý đó, dưới đây là hướng dẫn sử dụng cURL để thu thập dữ liệu web ở quy mô nhỏ.
Để bắt đầu thu thập dữ liệu, hãy làm theo các bước sau:
- Chọn một ngôn ngữ lập trình để thu thập dữ liệu, chẳng hạn như PHP. Hướng dẫn này sẽ sử dụng PHP.
- Tạo một tệp PHP mới.
- Khởi tạo handle cURL bằng curl_init.
$curl = curl_init - Đặt CURLOPT_RETURNTRANSFER thành TRUE để trả về trang được truyền dưới dạng chuỗi. Lệnh này yêu cầu cURL lưu trang đã thu thập dưới dạng một biến thay vì hiển thị toàn bộ trang theo mặc định: curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE);
- Khởi chạy yêu cầu và kiểm tra lỗi:
$page = curl_exec($curl);if(curl_errno($curl)) // check for execution errors { echo 'Scraper error: ' . curl_error($curl); exit; } - Đóng kết nối:
curl_close($curl);
Để chỉ trích xuất một phần thông tin cụ thể, bạn cần chỉ định nội dung muốn trích xuất trong id=”case_textlist”. Theo mặc định, cURL sẽ trích xuất toàn bộ trang:
$regex = '<div id="case_textlist">(.*?)</div>/s'; if (preg_match($regex, $page, $list)) echo $list[0]; else echo "Not found";Để phân tích cú pháp một trang web bằng máy chủ proxy trong PHP, bạn có thể sử dụng thư viện cURL. Dưới đây là ví dụ về tập lệnh PHP dùng máy chủ proxy để tải trang web:
Mã PHP:
<?php // Set the URL to fetch $url = "http://www.example.com"; // Set the proxy server and port $proxy = "proxy.example.com:8080"; // Create a new cURL resource $ch = curl_init(); // Set the cURL options curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_PROXY, $proxy); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // Fetch the URL and output the response $response = curl_exec($ch); echo $response; // Close the cURL resource curl_close($ch); ?>Trong tập lệnh trên, bạn có thể thay đổi biến $url thành URL của trang web muốn phân tích cú pháp, và thay đổi biến $proxy thành địa chỉ cùng cổng của máy chủ proxy bạn muốn sử dụng. Hàm curl_setopt() được dùng để thiết lập các tùy chọn cURL, bao gồm URL, máy chủ proxy và tùy chọn trả về phản hồi dưới dạng chuỗi thay vì xuất trực tiếp. Cuối cùng, hàm curl_exec() được dùng để tải URL và phản hồi được xuất bằng echo. Hàm curl_close() được gọi để đóng tài nguyên cURL.
Trong video dưới đây, bạn sẽ học cách tạo một công cụ thu thập proxy bằng cách tải URL của trang web bằng cURL và khớp chúng với các biểu thức chính quy.
Cách sử dụng cURL để thu thập dữ liệu nâng cao
Dưới đây là một số cấu hình cUrl được tinh chỉnh có thể giúp tối ưu hóa các phiên thu thập dữ liệu web của bạn.
Tiêu đề phụ: Thêm User Agent
Khi dùng cURL để tải xuống hoặc thu thập liên kết, chương trình sẽ nhận diện với trang web là cUrl. Trong một số trường hợp, bạn có thể không muốn điều này vì một số trang web có thể nhận diện cUrl là bot và chặn chương trình.
Để tránh điều này, hãy thêm user-agent bằng tùy chọn -A hoặc –user-agent. Trong ví dụ này, chúng tôi sử dụng user-agent Firefox 65 trên Windows 10:
curl -x https://fineproxy.de/ -v -A "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:65.0) Gecko/20100101 Firefox/65.0"Hoặc bạn có thể gửi user agent trong header bằng tùy chọn -H:
curl -x https://fineproxy.de/ -v -H "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:65.0) Gecko/20100101 Firefox/65.0"Tiêu đề phụ: Cấu hình Header
Khi thu thập dữ liệu trên một trang web, điều quan trọng là tránh bị nhận diện là bot. Hiện nay, nhiều trang web chặn bot trích xuất dữ liệu vì chúng có thể làm quá tải máy chủ và ảnh hưởng đến dịch vụ dành cho người dùng.
Để làm được điều này, bạn cần gửi các header phù hợp bằng cURL.
Trước tiên, hãy xác định các header bạn thường gửi đến trang web mục tiêu bằng cách nhấp chuột phải và chọn “Inspect”. Tiếp theo, chuyển đến thẻ “Network”. Tải lại trang web mục tiêu, bạn sẽ thấy các yêu cầu được thực hiện trong quá trình trang web tải. Để xem kỹ hơn yêu cầu, bạn cũng có thể nhấp chuột phải vào yêu cầu đó và sao chép dưới dạng dòng lệnh cUrl.
Sau đó, hãy cấu hình header trong cUrl bằng tùy chọn -H hoặc –header. Ví dụ: sau đây là cách gửi header “Accept” đến trang web mục tiêu:
curl -x https://fineproxy.de/ -v -H "Accept: text/html"Cách sử dụng cURL với máy chủ proxy
Sử dụng cURL với proxy cho phép thực hiện nhiều trường hợp sử dụng khác nhau, chẳng hạn như thu thập dữ liệu web, trong đó cần có proxy để ngăn trang web cấm hoặc chặn bạn. Trong hướng dẫn này, bạn sẽ tìm hiểu cách gửi dữ liệu qua máy chủ proxy bằng cURL.
Làm theo các bước sau để sử dụng cURL với Proxy:
1. Thiết lập máy chủ Proxy
Trước tiên, hãy thiết lập proxy theo hướng dẫn do nhà cung cấp proxy của bạn cung cấp. Để xác minh proxy đã được thiết lập chính xác hay chưa, hãy nhập lệnh sau vào terminal:
curl https://httpbin.org/ipLệnh này trả về địa chỉ IP của thiết bị bạn. Nếu các giá trị trùng với địa chỉ IP ban đầu của thiết bị, máy chủ proxy của bạn chưa được thiết lập đúng cách. Nếu chúng không trùng khớp, máy chủ proxy của bạn đã được cấu hình chính xác.
2. Cấu hình Proxy để hoạt động với các lệnh cURL
Có ba cách cấu hình proxy để sử dụng với cURL:
A. Sử dụng tệp cấu hình (.curlrc)
Tệp cấu hình là một tệp văn bản chứa các cài đặt mong muốn của bạn, được lưu ở định dạng tệp .curlrc trong thư mục hệ thống để dễ dàng truy cập khi chạy các lệnh cURL.
Tệp cấu hình proxy chứa dữ liệu theo định dạng sau:
proxy = "[protocol://][host][:port]"Bạn có thể lưu nhiều cài đặt cấu hình trong tệp và kích hoạt chúng khi cần. Trước khi chạy các lệnh cURL, hãy mở tệp; mọi lệnh cURL bạn thực thi sẽ sử dụng cài đặt proxy từ tệp cấu hình.
Tạo tệp cấu hình là phương pháp tốt nhất cho những người thường xuyên sử dụng cURL với proxy và trích xuất khối lượng dữ liệu lớn. Cách này giúp tiết kiệm thời gian vì không cần cấu hình proxy cho cURL mỗi lần sử dụng.
B. Sử dụng đối số dòng lệnh
Phương pháp này phù hợp khi chỉ sử dụng proxy một lần với các lệnh cURL, vì chỉ cần cú pháp proxy trực tiếp của cURL. Cú pháp như sau:
curl -x "[protocol://][host][:port]" [URL] [options]Vì giao thức mặc định của cURL là HTTP, bạn phải chỉ định giao thức và thông tin máy chủ proxy, đặc biệt nếu đang sử dụng một giao thức mạng khác.
C. Sử dụng biến môi trường
Phương pháp thứ ba là thiết lập các biến http_proxy và https_proxy, được gọi là biến môi trường, có ảnh hưởng đến các tiến trình chạy ở cấp hệ thống. Các lệnh này là một phần của hệ điều hành và có thể ghi đè các tham số khác.
Cú pháp thiết lập proxy cURL thông qua biến môi trường như sau:
export http_proxy="[protocol://][host][:port]" export https_proxy="[protocol://][host][:port]"Sau khi chạy các lệnh này, mọi lệnh cURL bạn thực thi sẽ tự động đi qua máy chủ proxy. Bây giờ, hãy tìm hiểu thêm một chút về phương pháp này.
Sử dụng cURL với Proxy thông qua biến môi trường
Biến môi trường giống như một đối tượng lưu trữ một giá trị có thể chỉnh sửa trong bộ nhớ, để một hoặc nhiều chương trình phần mềm sử dụng. Trong trường hợp này, chúng ta có thể truyền cho cURL một biến có tên là http_proxy hoặc https_proxy, chứa thông tin proxy của chúng ta, và sẽ không cần chỉ định thông tin này mỗi lần chạy lệnh. Bạn có thể thực hiện việc này bằng cách chạy lệnh sau:
$ export http_proxy="http://fineproxy.proxy_type=datacenter.device=desktop:<YOUR-API-KEY>@proxy.fineproxy.de:80"Lưu ý rằng bạn phải đặt tên biến là http_proxy hoặc https_proxy để cURL có thể nhận diện. Vậy là xong. Bạn không còn cần cung cấp thông tin xác thực mỗi lần chạy lệnh nữa, và giờ đây có thể chạy cURL đơn giản như sau:
$ curl http://httpbin.org/getThao tác này sẽ trả về kết quả sau:
{ "args": {}, "headers": { "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,/;q=0.8", "Accept-Encoding": "gzip, deflate, br", "Host": "httpbin.org", "Upgrade-Insecure-Requests": "1", "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36", "X-Amzn-Trace-Id": "Root=1-633bf912-66ace1104304ddaf5ea8ac65" }, "origin": "132.255.134.104", "url": " http://httpbin.org/get" }Như bạn thấy, địa chỉ IP là của proxy, xác nhận rằng bạn đã thiết lập proxy rất tốt. Lúc này, chúng ta có thể chạy bất kỳ lệnh cURL nào mà không cần chỉ định thông tin proxy, vì cURL sẽ tự xử lý việc đó.
7 Mẹo và thủ thuật quan trọng
Trong phần này, chúng tôi sẽ giới thiệu một số thủ thuật thú vị và mẹo hữu ích để sử dụng proxy với cUrl, phù hợp với nhu cầu cụ thể của bạn.
Mẹo 1: Chỉ thiết lập proxy cho cUrl
Để chỉ định proxy dành riêng cho các tác vụ dựa trên cUrl, hãy sử dụng chuỗi lệnh sau:
cd ~ $ nano .curlrc- Thêm dòng này vào tệp:
proxy=http://user:pwd@IP_address_or_FQDN:portVí dụ:
proxy=http://testuser:[email protected]:3128- Chạy cUrl như bình thường:
$ curl " https://www.reddit.com"Mẹo 2: Bật và tắt proxy
Tạo bí danh trong tệp .bashrc bằng trình chỉnh sửa của bạn để thực hiện việc này:
$ cd ~alias proxyon="export http_proxy=' http://user:pwd@Proxy_IP_or_FQDN:Port';export https_proxy=' http://user:pwd@Proxy_IP_or_FQDN:Port'"alias proxyoff="unset http_proxy;unset https_proxy"Ví dụ:
alias proxyon="export http_proxy=' http://testuser:[email protected]:3128';export https_proxy=' http://testuser:[email protected]:3128'"Kiểm tra nhanh cấu hình bí danh bằng cách chạy lệnh alias trong terminal. Lưu tệp .bashrc và cập nhật shell bằng lệnh:
$ ~/.bashrcMẹo 3: Bỏ qua lỗi chứng chỉ SSL
Khi cUrl gặp lỗi chứng chỉ SSL, nó sẽ chặn các yêu cầu đó. Để ‘bỏ qua’ lỗi chứng chỉ SSL khi gỡ lỗi, đặc biệt trong các trường hợp chỉ cần thực hiện một lần, hãy thêm -k hoặc –insecure vào dòng lệnh cUrl:
curl -x "[protocol://][host][:port]" -k [URL]Mẹo 4: Lấy thêm thông tin về yêu cầu
Nếu các yêu cầu không hoạt động như mong đợi, bạn có thể muốn kiểm tra đường dẫn yêu cầu, tiêu đề và các lỗi khác nhau. Để kiểm tra yêu cầu, hãy thêm -v (–verbose) vào yêu cầu sau cUrl; thao tác này sẽ hiển thị tất cả tiêu đề yêu cầu và các kết nối đã phát sinh.
Mẹo 5: Bỏ qua proxy cho một yêu cầu duy nhất
Để ghi đè proxy cho một yêu cầu cụ thể, hãy sử dụng dòng lệnh sau:
curl --proxy " http://user:pwd@Proxy_FQDN_or_IPAddress" " https://reddit.com"Hoặc dùng:
$ curl --noproxy "*" https://www.reddit.comĐể bỏ qua hoàn toàn proxy. Với tùy chọn -v, lệnh sẽ hiển thị kết nối trực tiếp đến Reddit mà không sử dụng proxy nào.
Mẹo 6: Sử dụng proxy SOCK
Nếu bạn muốn sử dụng bất kỳ loại proxy SOCK nào (4/4a/5/5h), cấu trúc mã vẫn giống như trước, ngoại trừ việc bạn thay phần tương ứng bằng loại SOCKS thích hợp:
curl -x "socks5://user:pwd@Proxy_IP_or_FQDN:Port" https://www.reddit.comVí dụ:
$ curl -x "socks5://testuser: [email protected]:3128" https://www.reddit.comMẹo chuyên nghiệp 7: Nếu không chỉ định giao thức, cURL mặc định dùng SOCKS4!
Curl và Wget
Wget là một công cụ dòng lệnh có nhiều tính năng cho phép truyền tệp bằng các giao thức mạng tiêu chuẩn như HTTP, HTTPS và FTP. Tên gọi này là sự kết hợp giữa chữ cái đầu tiên của WWW và ‘get,’ thể hiện rằng Wget được tạo ra chủ yếu để trao đổi dữ liệu trên web.
Cú pháp tiêu chuẩn cho các lệnh Wget là:
Wget [option] [URL]Các lệnh Wget tương tự như lệnh cURL và thực hiện những chức năng tương tự nhưng theo những cách khác nhau.
5 điểm tương đồng giữa cURL và Wget
- Cả hai đều là tiện ích dòng lệnh có thể tải tệp xuống từ FTP, HTTP hoặc HTTPS và hỗ trợ các yêu cầu HTTP POST.
- Cả hai đều là phần mềm nguồn mở.
- cURL và Wget đều được giới thiệu trong cùng một năm, 1996.
- Cả hai đều có giấy phép tương tự, giấy phép GPLv3.
- Cả hai đều là các gói phần mềm gọn nhẹ, hoạt động trên nhiều hệ điều hành.
10 điểm khác biệt giữa cURL và Wget
Điểm khác biệt chính giữa cURL và Wget nằm ở cách các tiện ích này thực thi yêu cầu và tài nguyên chúng sử dụng để đạt được mục tiêu. Bảng sau nêu bật những khác biệt này:
| cURL | Wget | |
|---|---|---|
| 1. Thư viện | Được hỗ trợ bởi thư viện libcURL | Không cần thư viện |
| 2. Hoạt động | Truyền dữ liệu trong một thao tác duy nhất, không tải xuống đệ quy | Hỗ trợ tải xuống đệ quy |
| 3. Giao thức | Hỗ trợ nhiều giao thức mạng | Chỉ hỗ trợ HTTP(S) và FTP |
| 4. Tải xuống | Cần dùng -o hoặc -O để tải URL từ xa xuống tệp cục bộ | Không cần dùng -o hoặc -O để tải URL từ xa xuống |
| 5. Tải lên | Có thể tải lên và truyền dữ liệu theo cả hai chiều | Chỉ hỗ trợ các yêu cầu HTTP POST đơn giản |
| 6. Proxy | Hỗ trợ các loại proxy HTTPS, SOCKS 4 và SOCKS 5 | Hỗ trợ proxy HTTP nhưng không hỗ trợ các loại proxy SOCKS |
| 7. Xác thực | Hỗ trợ các kỹ thuật xác thực bổ sung cho proxy HTTP | Chỉ hỗ trợ các quy trình xác thực cơ bản cho proxy HTTP |
| 8. Khả năng tương thích | Có khả năng tương thích cao hơn và được cài đặt sẵn trên Windows và macOS | Có khả năng tương thích thấp hơn và không được cài đặt sẵn trên Windows và macOS |
| 9. Tính năng | Yêu cầu chỉ định trực tiếp từng tính năng | Có các tính năng như cookie và dấu thời gian được bật theo mặc định |
| 10. Yêu cầu | Không yêu cầu gói gnulib hoặc trình biên dịch C99 | Yêu cầu gnulib và trình biên dịch C99Khi nào nên dùng cURL hoặc Wget |
Trong hầu hết các trường hợp, cURL là lựa chọn tốt nhất, nhưng cũng có những tình huống Wget phù hợp hơn. Bạn cần xác định tiện ích dòng lệnh nào trong số này sẽ giúp bạn hoàn thành công việc nhanh chóng và hiệu quả hơn. Ví dụ:
- Wget xử lý việc thử lại tải xuống qua các kết nối chập chờn tốt hơn cURL.
- Wget cung cấp các khả năng tải xuống như tải xuống đệ quy toàn diện và kiểm soát băng thông mà cURL không có.
Vì vậy, tốt nhất nên dùng các lệnh Wget trong những tình huống như vậy. Ngoài ra, khi sử dụng giao thức mạng khác với HTTP/HTTPS và FTP, cURL là lựa chọn tốt hơn. Việc bạn chọn dùng cURL hay Wget sẽ luôn phụ thuộc vào đặc thù của những tác vụ bạn đang thực hiện.
Kết luận
Các lệnh cURL là công cụ mạnh mẽ và linh hoạt dành cho bất kỳ ai cần truyền khối lượng lớn dữ liệu qua mạng. Sử dụng cURL với proxy là một nâng cấp đáng cân nhắc, cho phép bạn thực hiện gần như mọi tác vụ. Sự kết hợp này đảm bảo quyền riêng tư và bảo mật dữ liệu mà không làm mất đi tính linh hoạt của các lệnh cURL. Mặc dù Wget có nhiều tính năng, cURL vẫn được ưa chuộng hơn nhờ giao diện thân thiện với người dùng và các khả năng mạnh mẽ.
Dựa trên những gì chúng ta đã thảo luận, có thể bạn đang cân nhắc thử những hiệu quả thú vị của cURL. Nếu bạn chưa nghĩ đến điều đó, thì hãy thử đi. Hãy cứ cURLy (chơi chữ có chủ ý).
