در اواسط 1990 زمانی که اینترنت هنوز در دوران کودکی خود بود، یک برنامه نویس سوئدی به نام Daniel Stenberg پروژه ای را با نام curl آغاز کرد که در نهایت به آنچه که امروز مشاهده میکنیم، تبدیل شده است. در ابتدا، او با هدف توسعه یک bot که نرخ تبدیل ارز را از یک صفحه وب به صورت دوره ای دانلود کند، و معادل کرون سوئدی را به دلار آمریکا برای کاربران IRC (روشی برای چت و برگزاری کنفراس های اینترنتی) ارائه دهد، شروع کرد.
به طور خلاصه، پروژه رشد کرد، همچنین چندین پروتکل و امکانات دیگر در طول زمان به آن اضافه شد. اکنون بیایید با هر دو پا شیرجه بزنیم و یاد بگیریم چگونه برای استفاده از Curl برای انتقال اطلاعات و غیره در لینوکس استفاده کنیم.
همچنین توصیه میشود مطالعه کنید.
نحوه ارسال خروجی دستور curl به grep
دستور wget در لینوکس به همراه 10 مثال عملی
چگونه با استفاده از wget یک فایل را در یک دایرکتوری خاصی دانلود کنیم
نحوه محدود کردن سرعت دانلود در دستور wget
دانلود فایل با استفاده از ابزار قدرتمند aria2 در ترمینال لینوکس
ما در لیست زیر 15 دستور curl را به صورت یکجا برای شما قرار دادیم که به شرح زیر میباشد.
1 - نمایش ورژن curl
آپشن -V یا --version نه تنها ورژن، بلکه پروتکل های پشتیبانی شده و ویژگی های نسخه فعلی را نیز به شما نمایش میدهد.
2 - نحوه دانلود یک فایل
اگر شما نیاز به دانلود یک فایل داشته باشید، میتوانید از curl با آپشن های -O یا -o استفاده کنید. آپشن اولی فایل را در دایرکتوری جاری تان و با همان نام ذخیره خواهد کرد و آپشن دوم به شما اجازه ذخیره فایل با یک نام دیگر یا دایرکتوری مشخص شده ای که مد نظر شماست، را میدهد.
3 - ادامه یک دانلود قطع شده
اگر یک دانلود به هر دلیلی قطع شد (برای مثال، از ctrl+c استفاده کردید)، شما میتوانید به راحتی ادامه آنرا دانلود کنید. از "-C -" (یعنی از dash و C سپس فاصله و مجدد dash را وارد کنید) استفاده کنید که به curl می گوید دانلود را از جاییکه قطع شده شروع کند.
4 - دانلود چندین فایل از URL مختلف
شما میتوانید لیستی از url فایل ها را که درون یک فایل متنی قرار دارد، با ترکیب کردن curl با xargs دانلود کنید.
6 - استفاده از Proxy به همراه احراز هویت
اگر شما پشت یک پراکسی سرور که در حال listen کردن روی پورت 8080 در proxy.yourdomain.com هستید، دستور زیر را اجرا کنید.
اگر پراکسی تان احتیاج به احراز هویت (user و password) ندارد شما میتوانید -U user:password را نادیده بگیرید.
7 - کوئری هدرهای HTTP
هدرهای HTTP به وب سرورهای ریموت اجازه میدهد اطلاعات بیشتری درباره خودش همراه با درخواست واقعی ارسال کند. این برای کلاینت نحوه درخواست به همراه جزئیات را فراهم میکند.
برای درخواست هدرهای HTTP از یک وب سایت دستور زیر را اجرا کنید.
این اطلاعات همواره در ابزارهای توسعه مرورگرتان موجود است.
8 - ایجاد یک درخواست POST به همراه پارامترها
دستور زیر پارامتر firstName و lastName را همراه با متغیرهایشان به https://yourdomain.com/info.php ارسال میکند.
شما میتوانید این روش را برای شبیه سازی رفتار یک فرم HTML استفاده کنید.
9 - دانلود فایل از یک سرور FTP به همراه احراز هویت
اگر شما از یک سرور دیگر میخواهید از یک FTP سرور راه دور (ریموت)، فایل yourfile.tar.gz را دانلود کنید کافیست دستور زیر را اجرا کنید تا فایل را در دایرکتوری جاری شما دانلود کند.
اگر FTP سرور اجازه دسترسی کاربران ناشناس را میدهد، شما میتوانید در اینجا -u username:password احراز هویت را نادیده بگیرید.
10 - آپلود فایل ها به یک FTP سرور به همراه احراز هویت
برای آپلود یک فایل به نام mylocalfile.tar.gz به ftp://yourftpserver با استفاده از curl، دستور زیر را اجرا کنید.
11 - مشخص کردن User Agent
user agent بخشی از اطلاعاتی که همراه یک درخواست HTTP ارسال میشود، میباشد. این نشان میدهد که کلاینت برای ایجاد یک درخواست از چه مرورگری استفاده میکند. اجازه بدید ببینیم ورژن curl فعلی ما به صورت پیش فرض استفاده میشود، و اجازه بدهید آن را بعدا به “I am a new web browser” تغییر دهیم.
12 - ذخیره کردن Cookie های یک وب سایت
آیا میخواهید ببینید که کدام کوکی ها در کامپیوتر شما زمانیکه سایت https://www.cnn.com را مشاهده می کردید، دانلود شده اند؟ از دستور زیر برای ذخیره آنها در فایل cnncookies.txt استفاده کنید. سپس شما میتوانید برای مشاهده فایل از دستور cat استفاده کنید.
13 - ارسال Cookie های وب سایت
شما میتوانید کوکی هایی که از ترفند قبلی به دست آوردید را در درخواست های بعدی به همان سایت استفاده کنید.
14 - تغییر نام resolution
اگر شما یک برنامه نویس وب هستید و میخواهید برای تست یک ورژن از yourdomain.com قبل از عملیاتی کردن آن به صورت زنده، شما میتوانید با استفاده از curl آدرس http://www.yourdomain.com را به صورت لوکال هاست همانند زیر مشاهده کنید.
بنابراین، درخواست به http://www.yourdomain.com به curl می گوید برای درخواست سایت بجای استفاده از DNS یا فایل /etc/hosts/ از لوکال هاست استفاده کند.
15 - محدود کردن سرعت دانلود
برای جلوگیری کردن استفاده curl از پهنای باندتان، شما میتوانید سرعت دانلود را به 100 KB/s محدود کنید، همانند زیر.
خلاصه
در این مقاله ما یک تاریخچه مختصر از curl را به اشتراک گذاشتیم و نحوه استفاده از دستور curl را به همراه 15 مثال عملی توضیح دادیم.
آیا شما دستورات دیگری از curl را که ممکن است در این مقاله بیان نشده باشد را میدانید؟ با ما راحت باشید و آنرا در همین انجمن به اشتراک بگذارید. همچنین اگر سوالی داشتید آنرا مطرح کنید. منتظر شما هستیم.
به طور خلاصه، پروژه رشد کرد، همچنین چندین پروتکل و امکانات دیگر در طول زمان به آن اضافه شد. اکنون بیایید با هر دو پا شیرجه بزنیم و یاد بگیریم چگونه برای استفاده از Curl برای انتقال اطلاعات و غیره در لینوکس استفاده کنیم.
همچنین توصیه میشود مطالعه کنید.
نحوه ارسال خروجی دستور curl به grep
دستور wget در لینوکس به همراه 10 مثال عملی
چگونه با استفاده از wget یک فایل را در یک دایرکتوری خاصی دانلود کنیم
نحوه محدود کردن سرعت دانلود در دستور wget
دانلود فایل با استفاده از ابزار قدرتمند aria2 در ترمینال لینوکس
ما در لیست زیر 15 دستور curl را به صورت یکجا برای شما قرار دادیم که به شرح زیر میباشد.
1 - نمایش ورژن curl
آپشن -V یا --version نه تنها ورژن، بلکه پروتکل های پشتیبانی شده و ویژگی های نسخه فعلی را نیز به شما نمایش میدهد.
کد HTML:
$ 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 Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtmp rtsp smb smbs smtp smtps telnet tftp Features: AsynchDNS IDN IPv6 Largefile GSS-API Kerberos SPNEGO NTLM NTLM_WB SSL libz TLS-SRP UnixSockets
2 - نحوه دانلود یک فایل
اگر شما نیاز به دانلود یک فایل داشته باشید، میتوانید از curl با آپشن های -O یا -o استفاده کنید. آپشن اولی فایل را در دایرکتوری جاری تان و با همان نام ذخیره خواهد کرد و آپشن دوم به شما اجازه ذخیره فایل با یک نام دیگر یا دایرکتوری مشخص شده ای که مد نظر شماست، را میدهد.
کد HTML:
$ curl -O http://yourdomain.com/yourfile.tar.gz # Save as yourfile.tar.gz $ curl -o newfile.tar.gz http://yourdomain.com/yourfile.tar.gz # Save as newfile.tar.gz
3 - ادامه یک دانلود قطع شده
اگر یک دانلود به هر دلیلی قطع شد (برای مثال، از ctrl+c استفاده کردید)، شما میتوانید به راحتی ادامه آنرا دانلود کنید. از "-C -" (یعنی از dash و C سپس فاصله و مجدد dash را وارد کنید) استفاده کنید که به curl می گوید دانلود را از جاییکه قطع شده شروع کند.
کد HTML:
$ curl -C - -O http://yourdomain.com/yourfile.tar.gz
4 - دانلود چندین فایل از URL مختلف
شما میتوانید لیستی از url فایل ها را که درون یک فایل متنی قرار دارد، با ترکیب کردن curl با xargs دانلود کنید.
کد HTML:
$ xargs -n 1 curl -O < listurls.txt
6 - استفاده از Proxy به همراه احراز هویت
اگر شما پشت یک پراکسی سرور که در حال listen کردن روی پورت 8080 در proxy.yourdomain.com هستید، دستور زیر را اجرا کنید.
کد HTML:
$ curl -x proxy.yourdomain.com:8080 -U user:password -O http://yourdomain.com/yourfile.tar.gz
7 - کوئری هدرهای HTTP
هدرهای HTTP به وب سرورهای ریموت اجازه میدهد اطلاعات بیشتری درباره خودش همراه با درخواست واقعی ارسال کند. این برای کلاینت نحوه درخواست به همراه جزئیات را فراهم میکند.
برای درخواست هدرهای HTTP از یک وب سایت دستور زیر را اجرا کنید.
کد HTML:
$ curl -I host.linux-zone.org
این اطلاعات همواره در ابزارهای توسعه مرورگرتان موجود است.
8 - ایجاد یک درخواست POST به همراه پارامترها
دستور زیر پارامتر firstName و lastName را همراه با متغیرهایشان به https://yourdomain.com/info.php ارسال میکند.
کد HTML:
$ curl --data "firstName=John&lastName=Doe" https://yourdomain.com/info.php
9 - دانلود فایل از یک سرور FTP به همراه احراز هویت
اگر شما از یک سرور دیگر میخواهید از یک FTP سرور راه دور (ریموت)، فایل yourfile.tar.gz را دانلود کنید کافیست دستور زیر را اجرا کنید تا فایل را در دایرکتوری جاری شما دانلود کند.
کد HTML:
$ curl -u username:password -O ftp://yourftpserver/yourfile.tar.gz
10 - آپلود فایل ها به یک FTP سرور به همراه احراز هویت
برای آپلود یک فایل به نام mylocalfile.tar.gz به ftp://yourftpserver با استفاده از curl، دستور زیر را اجرا کنید.
کد HTML:
$ curl -u username:password -T mylocalfile.tar.gz ftp://yourftpserver
11 - مشخص کردن User Agent
user agent بخشی از اطلاعاتی که همراه یک درخواست HTTP ارسال میشود، میباشد. این نشان میدهد که کلاینت برای ایجاد یک درخواست از چه مرورگری استفاده میکند. اجازه بدید ببینیم ورژن curl فعلی ما به صورت پیش فرض استفاده میشود، و اجازه بدهید آن را بعدا به “I am a new web browser” تغییر دهیم.
کد HTML:
$ curl -I http://localhost --user-agent "I am a new web browser"
12 - ذخیره کردن Cookie های یک وب سایت
آیا میخواهید ببینید که کدام کوکی ها در کامپیوتر شما زمانیکه سایت https://www.cnn.com را مشاهده می کردید، دانلود شده اند؟ از دستور زیر برای ذخیره آنها در فایل cnncookies.txt استفاده کنید. سپس شما میتوانید برای مشاهده فایل از دستور cat استفاده کنید.
کد HTML:
$ curl --cookie-jar cnncookies.txt https://www.cnn.com/index.html -O
13 - ارسال Cookie های وب سایت
شما میتوانید کوکی هایی که از ترفند قبلی به دست آوردید را در درخواست های بعدی به همان سایت استفاده کنید.
کد HTML:
$ curl --cookie cnncookies.txt https://www.cnn.com
14 - تغییر نام resolution
اگر شما یک برنامه نویس وب هستید و میخواهید برای تست یک ورژن از yourdomain.com قبل از عملیاتی کردن آن به صورت زنده، شما میتوانید با استفاده از curl آدرس http://www.yourdomain.com را به صورت لوکال هاست همانند زیر مشاهده کنید.
کد HTML:
$ curl --resolve www.yourdomain.com:80:localhost http://www.yourdomain.com/
15 - محدود کردن سرعت دانلود
برای جلوگیری کردن استفاده curl از پهنای باندتان، شما میتوانید سرعت دانلود را به 100 KB/s محدود کنید، همانند زیر.
کد HTML:
$ curl --limit-rate 100K http://yourdomain.com/yourfile.tar.gz -O
خلاصه
در این مقاله ما یک تاریخچه مختصر از curl را به اشتراک گذاشتیم و نحوه استفاده از دستور curl را به همراه 15 مثال عملی توضیح دادیم.
آیا شما دستورات دیگری از curl را که ممکن است در این مقاله بیان نشده باشد را میدانید؟ با ما راحت باشید و آنرا در همین انجمن به اشتراک بگذارید. همچنین اگر سوالی داشتید آنرا مطرح کنید. منتظر شما هستیم.