در اواسط دهه ۱۹۹۰، یک برنامه نویس سوئدی به نام دانیل استرنبرگ پروژه ای را آغاز کرد. که کرل (Curl) نام داشت. و در نهایت به آنچه امروزه به عنوان دستور کرل می شناسیم، تبدیل شد.
در ابتدا، او با هدف توسعه یک ربات شروع کرد. که به طور دوره ای نرخ های تبادل ارز را از یک صفحه وب دانلود می کرد. و معادل کرون سوئد را به دلار آمریکا برای کاربران IRC (یک راه برای گفتگو و برگزاری کنفرانس های وب) ارائه می داد.
به طور خلاصه، این پروژه با گذشت زمان و افزودن چندین پروتکل و ویژگی های دیگر رشد کرد. اکنون بیایید نحوه استفاده از کرل برای انتقال داده ها و غیره در لینوکس را ببینیم.
در لیست زیر، ۱۵ دستور کرل را برای شما گردآوری کرده ایم که به شرح زیر است:
۱ – نمایش نسخه Curl
گزینه -V یا –version نه تنها نسخه بلکه پروتکل ها و ویژگی های پشتیبانی شده در نسخه فعلی را نیز به شما نشان می دهد.
$ curl --version
curl 7.47.0 (x86_64-pc-linux-gnu) libcurl/7.47.0 GnuTLS/3.4.10 zlib/1.2.8 libidn/1.32 librtmp/2.3
پروتکل ها: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtmp rtsp smb smbs smtp smtps telnet tftp
ویژگی ها: AsynchDNS IDN IPv6 Largefile GSS-API Kerberos SPNEGO NTLM NTLM_WB SSL libz TLS-SRP UnixSockets
۲ – چگونگی دانلود یک فایل با استفاده از دستور Curl
اگر نیاز به دانلود یک فایل دارید، می توانید از کرل با گزینه های -O استفاده کنید. گزینه اول فایل را در دایرکتوری فعلی با همان نام ذخیره می کند و گزینه دوم به شما امکان می دهد فایل را با نام دیگر یا دایرکتوری مشخص شده ای که می خواهید ذخیره کنید.
$ curl -O http://yourdomain.com/yourfile.tar.gz
# ذخیره به عنوان yourfile.tar.gz
$ curl -o newfile.tar.gz http://yourdomain.com/yourfile.tar.gz
# ذخیره به عنوان newfile.tar.gz
۳ – ادامه یک دانلود قطع شده
اگر دانلودی به هر دلیلی (مثلاً شما از ctrl + c استفاده کردید) قطع شد، می توانید به راحتی آن را از سر بگیرید. از “-C –” (یعنی خط تیره و C سپس فاصله بزنید و دوباره خط تیره) استفاده کنید که به کرل می گوید دانلود را از جایی که متوقف شده بود، شروع کند.
$ curl -C - -O http://yourdomain.com/yourfile.tar.gz
۴ – دانلود چندین فایل از آدرس های مختلف URL
می توانید یک لیست از فایل های URL را که در یک فایل متنی موجود است با ترکیب کرل و xargs دانلود کنید.
$ xargs -n 1 curl -O <listurls.txt
۶ – استفاده از پروکسی با احراز هویت
اگر پشت یک سرور پروکسی هستید که در پورت ۸۰۸۰ در proxy.yourdomain.com گوش می دهد، دستور زیر را اجرا کنید.
$ curl -x proxy.yourdomain.com:8080 -U user:password -O http://yourdomain.com/yourfile.tar.gz
اگر پروکسی شما نیازی به احراز هویت (نام کاربری و رمز عبور) ندارد، می توانید -U user:password را نادیده بگیرید.
۷ – درخواست هدر HTTP
هدرهای HTTP به سرورهای وب از راه دور امکان می دهند اطلاعات بیشتری درباره خودشان را همراه با درخواست واقعی ارسال کنند. این برای کلاینت جزئیات درخواست را فراهم می کند.
برای درخواست هدرهای HTTP از یک وب سایت، دستور زیر را اجرا کنید:
$ curl -I host.linux-zone.org
این اطلاعات همیشه در ابزارهای توسعه مرورگر شما در دسترس است.
۸ – ایجاد یک درخواست POST با پارامترها
دستور زیر پارامترهای firstName و lastName را همراه با متغیرهای آنها به “https://yourdomain.com/info.php” ارسال می کند.
$ curl --data "firstName=John&lastName=Doe" https://yourdomain.com/info.php
می توانید از این روش برای شبیه سازی رفتار یک فرم HTML استفاده کنید.
۹ – دانلود فایل از یک سرور FTP با احراز هویت
اگر می خواهید فایل yourfile.tar.gz را از یک سرور FTP از راه دور دانلود کنید، فقط دستور زیر را برای دانلود فایل به دایرکتوری فعلی خود اجرا کنید.
$ curl -u username:password -O ftp://yourftpserver/yourfile.tar.gz
اگر سرور FTP به کاربران ناشناس اجازه دسترسی می دهد، می توانید احراز هویت را در اینجا نادیده بگیرید -u username:password.
۱۰ – آپلود فایل ها به یک سرور FTP با احراز هویت
برای آپلود یک فایل به نام mylocalfile.tar.gz به “ftp://yourftpserver” با استفاده از کرل، دستور زیر را اجرا کنید.
$ curl -u username:password -T mylocalfile.tar.gz ftp://yourftpserver
۱۱ – مشخص کردن عامل کاربر (User-Agent)
عامل کاربر بخشی از اطلاعاتی است که با یک درخواست HTTP ارسال می شود. این نشان می دهد که کلاینت از چه مرورگری برای ایجاد درخواست استفاده می کند. بیایید ببینیم آیا به طور پیش فرض از نسخه فعلی کرل استفاده می شود، و بعداً آن را به “I am a new web browser” تغییر دهیم.
$ curl -I http://localhost --user-agent "I am a new web browser"
۱۲ – ذخیره کوکی ها در یک وب سایت
می خواهید ببینید چه کوکی هایی هنگام بازدید از https://www.cnn.com در کامپیوتر شما دانلود شده است؟ از دستور زیر برای ذخیره آنها در فایل cnncookies.txt استفاده کنید. سپس می توانید از دستور cat برای مشاهده فایل استفاده کنید.
$ curl --cookie-jar cnncookies.txt https://www.cnn.com/index.html -O
۱۳ – ارسال کوکی های وب سایت
می توانید از کوکی هایی که از تریک قبلی به دست آوردید در درخواست های بعدی به همان سایت استفاده کنید.
$ curl --cookie cnncookies.txt https://www.cnn.com
۱۴ – تفسیر نام
اگر یک توسعه دهنده وب هستید و می خواهید قبل از راه اندازی زنده، نسخه ای از yourdomain.com را آزمایش کنید، می توانید از کرل برای مشاهده “http://www.yourdomain.com” به صورت محلی به شرح زیر استفاده کنید:
$ curl --resolve www.yourdomain.com:80:localhost http://www.yourdomain.com/
بنابراین، درخواست “http://www.yourdomain.com” به کرل می گوید به جای DNS یا فایل /etc/hosts/ از localhost استفاده کند.
۱۵ – محدود کردن سرعت دانلود
برای جلوگیری از استفاده کرل از پهنای باند شما، می توانید سرعت دانلود را به ۱۰۰ کیلوبایت بر ثانیه، همانطور که در زیر نشان داده شده است، محدود کنید.
$ curl --limit-rate 100K http://yourdomain.com/yourfile.tar.gz -O
نتیجه گیری
در این مقاله، تاریخچه مختصری از کرل را به اشتراک گذاشتیم و با ۱۵ مثال عملی، نحوه استفاده از دستور کرل را توضیح دادیم.
آیا دستورات کرل دیگری را می شناسید که ممکن است در این مقاله ذکر نشده باشد؟ با خیال راحت با ما در میان بگذارید و آن را در بخش نظرات به اشتراک بگذارید. همچنین اگر سوالی دارید، آن را بپرسید. منتظر شما هستیم.