cURL چیست؟ + نحوه دانلود فایل با cURL در سرور مجازی
۷ بهمن ۱۴۰۳
ابزار خط فرمان cURL (یا Client URL)، ابزاری برای انتقال دادهها بین سیستمها است. این ابزار از پروتکلهای زیادی پشتیبانی میکند و معمولاً به صورت پیشفرض بر روی بسیاری از سیستمعاملهای مشابه یونیکس، نصب میشود. به دلیل راحتی و دسترسپذیری بالا، این ابزار، گزینهی مناسبی برای دانلود فایلها در سرور مجازی لینوکس، محسوب میشود.
در این آموزش، از دستور curl برای دانلود یک فایل متنی از یک وبسرور استفاده خواهیم کرد. محتویات فایل را مشاهده کرده، آن را در local ذخیره میکنیم و در صورتی که فایلها جابهجا شده باشند، به curl دستور میدهیم که تغییر مسیرها (redirectها) را دنبال کند.
دانلود فایلها از اینترنت میتواند خطرناک باشد، بنابراین اطمینان حاصل کنید که از منابع معتبر، فایل دانلود میکنید. در این آموزش، فایلها از وبسایت liara.ir دانلود میشوند و هیچ یک از فایلهای دانلودشده، اجرا نخواهند شد. در ادامه بخوانید:
- مرحله اول: نصب cURL (در صورت نیاز)
- مرحله دوم: دریافت فایلها از اینترنت
- مرحله سوم: ذخیره فایلها با اسم خاص
- مرحله چهارم: دنبالکردن ریدایرکتها
- نتیجهگیری
مرحله اول: نصب cURL
همانطور که قبلاً گفته شد، cURL در اکثر سیستمعاملهای مشابه یونیکس، بهطور پیشفرض نصبشده است و نیازی به نصب مجدد آن نیست؛ برای اطمینان از وجود این ابزار در سیستمعاملتان، کافیست تا در ترمینال، دستور زیر را اجرا کنید:
curl --verison
خروجی دستور فوق، باید مشابه زیر باشد:
curl 7.81.0 (x86_64-pc-linux-gnu) libcurl/7.81.0 OpenSSL/3.0.2 zlib/1.2.11 brotli/1.0.9 zstd/1.4.8 libidn2/2.3.2 libpsl/0.21.0 (+libidn2/2.3.2) libssh/0.9.6/openssl/zlib nghttp2/1.43.0 librtmp/2.3 OpenLDAP/2.5.16
Release-Date: 2022-01-05
Protocols: dict file ftp ftps gopher gophers http https imap imaps ldap ldaps mqtt pop3 pop3s rtmp rtsp scp sftp smb smbs smtp smtps telnet tftp
Features: alt-svc AsynchDNS brotli GSS-API HSTS HTTP2 HTTPS-proxy IDN IPv6 Kerberos Largefile libz NTLM NTLM_WB PSL SPNEGO SSL TLS-SRP UnixSockets zstd
در صورتی که خروجی مشابه فوق را، دریافت نکردید؛ نیاز است که با اجرای دستورات زیر، cURL را بر روی سیستمعاملتان، نصب کنید:
sudo apt update
sudo apt install curl -y
با اجرای دستورات فوق، انتظار میرود که cURL بر روی سیستمعاملتان نصب شده باشد و اکنون میتوانید برای اطمینان از نصب، مجدداً دستور زیر را اجرا کنید:
curl --verison
مرحله دوم: دریافت فایلها از اینترنت
بدون نیاز به استفاده از هیچ آرگومان اضافی، دستور curl
به صورت پیشفرض یک فایل را دریافت کرده و محتویات آن را در ترمینال، نمایش میدهد. برای امتحان، فایل robots.txt
را از وبسایت liara.ir دانلود میکنیم:
curl https://liara.ir/robots.txt
محتویات فایل فوق، باید به صورت زیر، بر روی صفحه، نمایش داده شود:
User-agent: *
Allow: /
Sitemap: https://liara.ir/sitemap/sitemap-index.xml
با ارائه یک URL به دستور curl
، این ابزار منبع مورد نظر را دریافت کرده و محتویات آن را نمایش میدهد.
نحوه ذخیره فایلها در سیستم
دریافت یک فایل و نمایش محتویات آن، مفید است، اما اگر بخواهیم فایل را به صورت واقعی در سرور مجازی خود ذخیره کنیم، چه کاری باید انجام دهیم؟
برای ذخیره فایلها از اینترنت در سرور مجازی خود، با همان نام فایل روی سرور، از آرگومان --remote-name
یا گزینهی -O
استفاده میکنیم:
curl -O https://liara.ir/robots.txt
با اجرای دستور فوق، فایل شما دانلود خواهد شد:
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 98 0 98 0 0 467 0 --:--:-- --:--:-- --:--:-- 468
به جای نمایش محتویات فایل، curl
یک نشانگر پیشرفت مبتنی بر متن (text-based progress meter) نمایش میدهد و فایل را با اسم اصلی خود، ذخیره میکند. برای بررسی فایل، میتوانید از دستور cat استفاده کنید:
cat robots.txt
فایل شامل همان محتویاتی است که قبلاً مشاهده کردید:
User-agent: *
Allow: /
Sitemap: https://liara.ir/sitemap/sitemap-index.xml
اکنون بیایید نام فایل دانلودی را در سیستم، تغییر دهیم.
مرحله سوم: ذخیره فایلها با اسم خاص
ممکن است در سرور مجازی خود، فایلی با همان نام فایل موجود در اینترنت داشته باشید یا اصلاً نام دیگری به جز نام اصلی فایل، برای آن، انتخاب کرده باشید. برای جلوگیری از بازنویسی فایل قبلی با همان نام، یا ذخیره فایل جدید با نام متفاوت از نام اصلی آن؛ میتوانید از آرگومان -o
یا --output
استفاده کنید و نام فایلی که میخواهید محتویات در آن ذخیره شود را مشخص کنید.
برای دانلود فایل robots.txt
از اینترنت و ذخیره آن در سیستمی با نام do-bots.txt
، دستور زیر را اجرا کنید:
curl -o do-bots.txt https://liara.ir/robots.txt
با اجرای دستور فوق، بار دیگر، نشانگر پیشرفت نمایش داده میشود:
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 98 0 98 0 0 249 0 --:--:-- --:--:-- --:--:-- 250
اکنون از دستور cat
برای نمایش محتویات فایل do-bots.txt
استفاده کنید تا اطمینان حاصل کنید که این، همان فایل دانلودشده است:
cat do-bots.txt
محتویات فایل، یکسان خواهد بود:
User-agent: *
Allow: /
Sitemap: https://liara.ir/sitemap/sitemap-index.xml
بهصورت پیشفرض، curl
تغییر مسیرها (redirectها)ی موجود در یک لینک را دنبال نمیکند. به عنوان مثال، اگر لینکی که از آن استفاده میکنید؛ به لینک دیگری هدایت شود؛ curl متوجه آن نخواهد شد. بنابراین، ممکن است نتیجهای غیرمنتظره دریافت کنید. در ادامه نحوه حل این مشکل را بررسی خواهیم کرد.
مرحله چهارم: دنبالکردن ریدایرکتها
تا اکنون، تمام مثالها، شامل URLهای کامل با پروتکل https://
بودهاند. اگر شما به اشتباه تلاش میکردید تا فایل robots.txt
را دانلود کنید و فقط liara.ir و نه (https://liara.ir) را وارد میکردید، هیچ خروجی مشاهده نمیکردید، زیرا Liara، درخواستها را از http://
به https://
ریدایرکت میکند.
برای تأیید این موضوع، میتوانید از فلگ -I
استفاده کنید که هدرهای درخواست (request headerها) را به جای محتویات فایل نمایش میدهد:
curl -I liara.ir/robots.txt
خروجی دستور فوق، نشان میدهد که URL، ریدایرکت شده است. اولین خط خروجی، به شما میگوید که فایل جابهجا شده و خط Location
، مکان جدید فایل را نشان میدهد:
HTTP/1.1 308 Permanent Redirect
Location: https://liara.ir/robots.txt
Date: Sat, 25 Jan 2025 08:55:48 GMT
Content-Length: 18
Content-Type: text/plain; charset=utf-8
شما میتوانید با استفاده از curl
، درخواست دیگری به طور دستی ارسال کنید، یا میتوانید از آرگومان --location
یا -L
استفاده کنید که به curl
دستور میدهد هر زمان که با redirect مواجه شد، درخواست را به مکان جدید، هدایت کند:
curl -L liara.ir/robots.txt
این بار، خروجی درستی را خواهید دید، زیرا curl
، ریدایرکت را دنبال کرده است:
User-agent: *
Allow: /
Sitemap: https://liara.ir/sitemap/sitemap-index.xml
Host: https://liara.ir
شما میتوانید آرگومان -L
را با برخی از آرگومانهای قبلی ترکیب کنید تا فایل را در سرور مجازی خود، دانلود کنید:
curl -L -o do-bots.txt www.digitalocean.com/robots.txt
هشدار: بسیاری از منابع آنلاین از شما میخواهند که از curl
برای دانلود اسکریپتها و اجرای آنها استفاده کنید. قبل از اجرای هر اسکریپتی که دانلود کردهاید، بهتر است محتویات آن را بررسی کنید تا از سالم بودن آن اطمینان حاصل کنید. از دستور less
برای مرور کد استفاده کنید تا مطمئن شوید همان چیزی است که قصد دارید اجرا کنید.
نتیجهگیری
curl
به شما این امکان را میدهد که به سرعت، فایلها را از اینترنت دانلود کنید. curl
از پروتکلهای مختلف زیادی پشتیبانی میکند و میتواند درخواستهای وب پیچیدهتری را از جمله تعامل با APIهای راه دور برای ارسال و دریافت دادهها نیز انجام دهد. برای اطلاعات بیشتر، میتوانید صفحه راهنمای curl
را با استفاده از دستور man curl
مشاهده کنید.
سرور مجازی لینوکس لیارا یکی از بهترین گزینهها برای توسعهدهندگان و کسبوکارهایی است که به دنبال یک سرویس قدرتمند، مقیاسپذیر و مقرون به صرفه هستند. این سرویس با بهرهگیری از جدیدترین تکنولوژیها و سختافزارهای پیشرفته، عملکرد عالی و سرعت بالای سرور را تضمین میکند. از دیگر ویژگیهای بارز سرور مجازی لینوکس لیارا میتوان به مدیریت آسان، مقیاسپذیری بالا، امنیت بالای دادهها و پشتیبانی ۲۴ ساعته اشاره کرد. این سرویس به کاربران امکان میدهد تا در کمترین زمان ممکن، سرورهای مجازی خود را راهاندازی و مدیریت کنند و از منابع بهینه استفاده کنند. همچنین، با ارائه پنل کاربری ساده و پشتیبانی از انواع توزیعهای لینوکس، سرور مجازی لینوکس لیارا گزینهای عالی برای استارتاپها، توسعهدهندگان و شرکتها به شمار میآید که به دنبال راهحلهای سریع و کارآمد هستند. در نهایت، با انتخاب لیارا، شما میتوانید یک سرور مجازی قدرتمند با هزینههای مناسب را برای پروژههای خود داشته باشید و تجربهای بینظیر از عملکرد و پشتیبانی دریافت کنید.