نقطه ویرگول;

هر از گاهی از هر چیزی

هر از گاهی از هر چیزی

مثالهایی کاربردی از دستور cURL

پنجشنبه, ۱۴ ارديبهشت ۱۳۹۱، ۰۸:۴۰ ب.ظ
cURL یک بسته نرم افزاری متشکل از ابزار خط فرمان و یک کتابخانه برای انتقال داده ها با استفاده از قواعد URL می باشد.
cURL پروتکل های مختلفی همانند DICT, FILE, FTP, FTPS, Gopher, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMTP, SMTPS, Telnet و TFTPرا پشتیبانی میکند.
در این مقاله 15 مثال کاربردی با استفاده از cURL بیان میشود.

1- دانلود تنها یک فایل
دستور زیر محتوای URL را دانلود کرده و آنرا در STDOUT شما نمایش میدهد(یعنی همان ترمینال شما).
$ curl http://www.centos.org
در زیر اطلاعات اضافی دانلود نشان داده خواهد شد.
$ curl http://www.centos.org > centos-org.html
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 27329 0 27329 0 0 104k 0 --:--:-- --:--:-- --:--:-- 167k
2-ذخیره خروجی cURL در یک فایل
ما میتونیم نتیجه دستور cURL رو با استفاده از گزینه های –o یا –O در یک فایل ذخیره کنیم.
-o : o کوچیک نتیجه را در فایلی با نام قید شده و دلخواه ذخیره خواهد کرد.
-O : در این گزینه نام فایل موجود در URL برای ذخیره نتیجه استفاده خواهد شد.
$ curl -o mygettext.html http://www.gnu.org/software/gettext/manual/gettext.html
حال صفحه gettext.html با نام mygettext.html ذخیره خواهد شد.
وقتی که از curl –O استفاده میکنید محتوا با نام gettext.html برای روی کامپیوترتان ذخیره خواهد شد.
شبیه به cURL شما میتوانید از wget برای دانلود فایلها استفاده کنید،مثالهایی از wget
3-دانلود چندین فایل در یک زمان
ما میتونیم چندین فایل رو توسط URL های معین در خط فرمان دانلود کنیم:
$ curl -O URL1 -O URL2
دستور زیر هر دو فایل index.html و gettext.html دانلود و با نام های جداگانه در دایرکتوری جاری ذخیره خواهد کرد.
$ curl -O http://www.gnu.org/software/gettext/manual/html_node/index.html -O http://www.gnu.org/software/gettext/manual/gettext.html
4-پیروی از HTTP Location Headers با گزینه –L
به طور پیشفرض cURL از HTTP Location Headers که به عنوان Redirect(تغییر مسیر)نیز نامیده میشود،پیروی نمیکند.وقتی وب پیج درخواست شده به یک مکان دیگر منتقل یا همان ریدایرکت شد،سپس یک HTTP Location header به عنوان پاسخ فرستاده خواهد شد.
برای مثال:وقتی بعضی ها از هند گوگل.کام را در مرورگرشون تایپ میکنند،به صورت اتوماتیک به صفحه google.co.in ریدایرکت میشن،این کار بر اساس HTTP Location header انجام میشود که در زیر نشان داده میشود:
$ curl http://www.google.com
302 Moved

302 Moved


The document has moved
here
در بالا خروجی میگوید که درخواست داکیومنت به http://www.google.co.in/ منتقل شده است.
ما میتوانیم از curl بخواهیم از ریدایرکشن یا همان تغییر مسیر با استفاده از گزینه –L تبعیت کند ،حالا cURL سورس کد http://www.google.co.in/ رو دانلود خواهد کرد.
$ curl -L http://www.google.com
5-از سر گیری/ادامه دانلود قبلی
با استفاده از curl –C میتوانید دانلودی که قبلا به هر دلیلی متوقف شده را ادامه بدهید.این کار زمانی که شما یک فایل بزرگ دانلود میکنید مفید خواهد بود.
اگر ما بگوییم ‘-C-’ سپس curl از جایی که تشخیص دهد شروع به از سرگیری دانلود میکند.ما میتونیم یک آفست هم بدیم ‘-C ’. آفست دادن از چک کردن سورس فایل از ابتدا صرف نظر خواهد کرد.
شروع یک دانلود بزرگ با استفاده از curl ، و فشردن ctrl+c برای متوقف کردن مابین دانلود:
$ curl -O http://www.gnu.org/software/gettext/manual/gettext.html
############## 20.1%
نکته:## برای نمایش پروسه پیشرفت استفاده شده است به جای یک پروسه پیشرفت متریک.
در بالا دانلود در 20.1 درصد متوقف شده است.با استفاده از ‘curl –C-’ میتونیم دانلود رو از جایی که قبلا متوقف کردیم ادامه دهیم.حال دانلود از 20.1 درصد ادامه می یابد.
curl -C - -O http://www.gnu.org/software/gettext/manual/gettext.html
############### 21.1%
6-محدود کردن سرعت دانلود
میتوانید سرعت دانلودی که داده ها با آن انتقال میابند رو توسط گزینه –limit-rate محدود کنید.حتی میتونیم بالاترین سرعت دانلود رو به عنوان آرگومان مشخص کنیم.
$ curl --limit-rate 1000B -O http://www.gnu.org/software/gettext/manual/gettext.html
در دستور بالا سرعت دانلود به 1000 بایت در ثانیه محدود شد،cURL ممکنه بالاترین سرعت دانلود رو برای مدت کوتاهی از زمان استفاده کند،اما به صورت میانگین حول حوش 1000 بایت در ثانیه خواهد بود.
میتونید یک پراجرس متریک برای دستور بالاست را در زیر مشاهده کنید،سرعت در حال حاظر نزدیک به 1000 بایت در ثانیه است.
 % Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
1 1215k 1 13601 0 0 957 0 0:21:40 0:00:14 0:21:26 999
1 1215k 1 14601 0 0 960 0 0:21:36 0:00:15 0:21:21 999
1 1215k 1 15601 0 0 962 0 0:21:34 0:00:16 0:21:18 999
7-دانلود یک فایل تنها در صورتیکه قبل وبعد زمان معلوم تغییر یافته است
ما میتوانیم فایلهایی که بعد زمان مخصوص تغییر یافته اند را با استفاده از گزینه –z در cURL دانلود کنیم.این گزینه برای هر دوی FTP و HTTP کار میکند.
$ curl -z 21-Dec-11 http://www.example.com/yy.html
دستور فوق yy.html را دانلود میکند تنها اگر بعد از تاریخ و زمان داده شده،تغییر یافته باشد اگر هیچ تغییری نسبت به تاریخ داده نکرده باشد دانلود نمیشود.
لطفا برای دیدن سینتکس پشتیبانی شده برای بیان تاریخ به man curl_getdate رجوع کنید .
8-قبول HTTP Authentication در cURL
بعضی اوقات،وبسایتها یک یوزر و پسورد برا دیدن محتوا درخواست میکنند،با کمک گزینه –u میتونیم استوارنامه(چه ترجمه و معادل مزخرفی)یا همون credential اونا رو قبول یا همان Pass کنیم(شب آرام و بی صدا،در تشویش کوچه ها، سرگردان است،با رویای پنجره ،با یک سینه خاطره ،بی سامان است ;-) )
$ curl -u username:password URL
نکته:به طور پیشفرض cURL از HTTP Authentication ابتدایی استفاده میکند،میتونیم با استفاده از متد –ntlm یا –digest برای تاییدیه های دیگر استفاده کنیم.
9-دانلود سایت با استفاده از FTP سرور
cURL همچنین میتونه از FTP سرورها دانلود کنه،اگر مسیر FTP دریافت شده یک دایرکتوری باشد،به صورت پیشفرض فایلها رو تحت پوشه مشخص شده لیست خواهد کرد.
$ curl -u ftpuser:ftppass -O ftp://ftp_server/public_html/xss.php
دستور فوق فایل xss.php را از اف تی پی سرور دانلود و در دایرکتوری لوکال ذخیره خواهد کرد.
$ curl -u ftpuser:ftppass -O ftp://ftp_server/public_html/
در اینجا ،URL داده شده به یک دایرکتوری رجوع میکند،از این رو curl تمامی فایلها و دایرکتوری ها رو تحت URL داده شده لیست میکند.
6 مورد هم موند به مرور میزارم رو سایت :-p
منبع:
http://www.thegeekstuff.com/

نظرات  (۳)

زنده باد مرتضی جون.
سی یو ار ال ابزار خوبی که امکان می ده در برنامه هایی خاص مدیریت هایی ویژه ایی ایجاد کنیم.
مرسی.
چاکرم حاج امین
مرسی از توضیحاتت
سلام
در صورت امکان پاسخ بدین:
میخوام یک سایت خارجی شیلتر رو با دومین شخصی خودم بالا بیارم.انگار همون سایت با آدرس جدید بدون شیلتر هست مثلا. میشه راهنمایی کنین.

ارسال نظر

ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی