پورتال ساخت و ساز - درب و دروازه.  داخلی.  فاضلاب.  مواد.  مبلمان.  اخبار

این مقاله فرض می کند که شما با اصول شبکه و زبان HTML آشنا هستید.

توانایی نوشتن اسکریپت برای ساختن یک سیستم کامپیوتری خوب ضروری است. توسعه پذیری سیستم های یونیکس از طریق اسکریپت های پوسته و برنامه های مختلف که دستورات خودکار را اجرا می کنند یکی از دلایل موفقیت آنهاست.

افزایش تعداد برنامه هایی که به وب منتقل می شوند منجر به این واقعیت شده است که موضوع اسکریپت های HTTP بیشتر و بیشتر مورد تقاضا قرار می گیرد. کارهای مهم در این زمینه استخراج خودکار اطلاعات از اینترنت، ارسال یا دانلود داده ها به سرورهای وب و ... می باشد.

Curl یک ابزار خط فرمان است که به شما امکان می دهد تا دستکاری URL و ارسال انواع مختلف را انجام دهید. این مقاله بر روی ایجاد درخواست های HTTP ساده تمرکز دارد. فرض بر این است که شما قبلاً می دانید کجا شماره گیری کنید

# حلقه -- کمک

# حلقه --دستی

برای اطلاعات در مورد کرل

کرل ابزاری نیست که همه کارها را برای شما انجام دهد. درخواست ایجاد می کند، داده دریافت می کند و داده ارسال می کند. ممکن است برای نگه داشتن همه چیز به مقداری «چسب» نیاز داشته باشید، شاید به زبان برنامه نویسی (مانند bash) یا چند تماس دستی.

1. پروتکل HTTP

HTTP پروتکلی است که هنگام دریافت داده از سرورهای وب استفاده می شود. این یک پروتکل بسیار ساده است که بر روی TCP/IP ساخته شده است. این پروتکل همچنین اجازه می دهد تا اطلاعات از طریق سرویس گیرنده با استفاده از چندین روش به سرور ارسال شود، همانطور که در ادامه نشان داده خواهد شد.

HTTP رشته‌هایی از متن ASCII هستند که از یک کلاینت به سرور ارسال می‌شوند تا اقداماتی را درخواست کنند. هنگامی که یک درخواست دریافت می شود، سرور با چندین خط متن سرویس و سپس با محتوای واقعی به مشتری پاسخ می دهد.

با استفاده از گزینه curl -v می توانید ببینید که curl چه دستوراتی را به سرور ارسال می کند و همچنین سایر متن های اطلاعاتی را مشاهده می کنید. سوئیچ -v شاید تنها راه برای اشکال زدایی یا حتی درک تعامل بین curl و وب سرور باشد.

2.URL

فرمت URL (Uniform Resource Locator - آدرس منبع جهانی) آدرس یک منبع خاص در اینترنت را مشخص می کند. احتمالاً این را می دانید، نمونه هایی از URL ها http://curl.haxx.se یا https://yourbank.com هستند.

3. دریافت (GET) صفحه

ساده ترین و رایج ترین درخواست HTTP دریافت محتوای یک URL است. URL می تواند به یک صفحه وب، یک تصویر یا یک فایل اشاره داشته باشد. مشتری یک درخواست GET را به سرور ارسال می کند و سند درخواستی را دریافت می کند. اگر دستور را اجرا کنید

# حلقه http://curl.haxx.se

یک صفحه وب در پنجره ترمینال شما نمایش داده می شود. سند کامل HTML موجود در این URL.

همه پاسخ‌های HTTP شامل مجموعه‌ای از هدرها هستند که معمولاً پنهان هستند. برای دیدن آنها به همراه خود سند، از گزینه curl -i استفاده کنید. همچنین می‌توانید فقط هدرها را با سوئیچ -I درخواست کنید (که کرل را مجبور به درخواست HEAD می‌کند).

4. اشکال

فرم ها راه اصلی ارائه یک وب سایت به عنوان یک صفحه HTML با فیلدهایی هستند که کاربر داده ها را وارد می کند و سپس روی دکمه OK یا Submit کلیک می کند و پس از آن داده ها به سرور ارسال می شود. سپس سرور از داده های دریافتی استفاده می کند و تصمیم می گیرد که چگونه ادامه دهد: اطلاعات را در پایگاه داده جستجو کنید، آدرس وارد شده را روی نقشه نشان دهید، یک پیام خطا اضافه کنید یا از اطلاعات برای احراز هویت کاربر استفاده کنید. البته برنامه ای در سمت سرور وجود دارد که داده های شما را می پذیرد.

4.1 دریافت

فرم GET از متد GET استفاده می کند، مانند:

اگر این کد را در مرورگر خود باز کنید، فرمی با کادر متن و دکمه ای می بینید که "OK" را نشان می دهد. اگر "1905" را وارد کنید و روی OK کلیک کنید، مرورگر یک URL جدید برای دنبال کردن ایجاد می کند. URL یک رشته متشکل از مسیر URL قبلی و رشته ای مانند "junk.cgi?birthyear=1905&press=OK" خواهد بود.

به عنوان مثال، اگر فرم در آدرس "www.hotmail.com/when/birth.html" قرار داشت، با کلیک بر روی دکمه OK، به آدرس اینترنتی "www.hotmail.com/when/junk.cgi?birthyear= هدایت می شوید. 1905&پرس=OK"

اکثر موتورهای جستجو به این روش کار می کنند.

برای اینکه curl یک درخواست GET ایجاد کند، به سادگی آنچه را که از فرم انتظار دارید وارد کنید:

# curl "www.hotmail.com/when/junk.cgi?birthyear=1905&press=OK"

4.2 POST

روش GET باعث می شود که تمام اطلاعات وارد شده در نوار آدرس مرورگر شما نمایش داده شود. این ممکن است زمانی که شما نیاز به نشانک گذاری یک صفحه داشته باشید خوب باشد، اما زمانی که اطلاعات محرمانه را در فیلدهای فرم وارد می کنید، یا زمانی که مقدار اطلاعات وارد شده در فیلدها خیلی زیاد است (که منجر به URL غیرقابل خواندن می شود) یک نقطه ضعف آشکار است.

پروتکل HTTP روش POST را ارائه می دهد. با آن، کلاینت داده ها را جدا از URL ارسال می کند و بنابراین شما آن را در نوار آدرس نخواهید دید.

فرمی که درخواست POST را ایجاد می کند مشابه فرم قبلی است:

Curl می تواند یک درخواست POST با همان داده های زیر تشکیل دهد:

# curl -d "birthyear=1905&press=%20OK%20" www.hotmail.com/when/junk.cgi

این درخواست POST از "Content-Type application/x-www-form-urlencoded" استفاده می کند که پرکاربردترین راه است.

داده هایی که به سرور ارسال می کنید باید به درستی کدگذاری شوند، curl این کار را برای شما انجام نمی دهد. به عنوان مثال، اگر می خواهید داده ها حاوی یک فاصله باشند، باید آن فضا را با %20 و غیره جایگزین کنید. عدم توجه به این موضوع یک اشتباه رایج است که به دلیل آن داده ها آنطور که باید منتقل نمی شوند.

در سال 1995، یک راه اضافی برای انتقال داده ها از طریق HTTP تعریف شد. این در RFC 1867 مستند شده است، به همین دلیل است که گاهی اوقات به عنوان RFC1867-posting نامیده می شود.

این روش عمدتا برای پشتیبانی بهتر از آپلود فایل طراحی شده است. فرمی که به کاربر اجازه می دهد یک فایل را آپلود کند در HTML به شکل زیر است:

توجه داشته باشید که Content-Type روی multipart/form-data تنظیم شده است.

برای ارسال داده به چنین فرمی با استفاده از curl، دستور را وارد کنید:

# حلقه -F [ایمیل محافظت شده]-Fpress=OK

4.4 فیلدهای پنهان

یک راه متداول برای برقراری ارتباط اطلاعات وضعیت در برنامه های HTML استفاده از فیلدهای پنهان در فرم ها است. فیلدهای مخفی پر نمی شوند، برای کاربر نامرئی هستند و مانند فیلدهای معمولی ارسال می شوند.

یک مثال ساده از یک فرم با یک فیلد قابل مشاهده، یک فیلد پنهان و یک دکمه OK:

برای ارسال درخواست POST با curl، لازم نیست به این فکر کنید که آیا فیلد مخفی است یا خیر. برای فر همه آنها یکسان هستند:

# curl -d "birthyear=1905&press=OK&person=daniel"

4.5 بیابید که درخواست POST چگونه است

وقتی می خواهید فرمی را پر کنید و داده ها را با استفاده از curl به سرور ارسال کنید، احتمالاً می خواهید درخواست POST دقیقاً شبیه درخواستی باشد که با استفاده از مرورگر ساخته شده است.

یک راه آسان برای مشاهده درخواست POST شما این است که صفحه HTML فرم را در دیسک ذخیره کنید، روش را به GET تغییر دهید و دکمه "ارسال" را فشار دهید (همچنین می توانید URL را که داده ها به آن ارسال می شود تغییر دهید).

خواهید دید که همانطور که در هنگام استفاده از فرم‌های GET انتظار می‌رود، داده‌ها با کاراکترهای «؟» به URL اضافه شده‌اند.

5. قرار دادن

شاید بهترین راه برای آپلود داده ها در سرور HTTP استفاده از PUT باشد. باز هم، این به یک برنامه (اسکریپت) در انتهای پشتی نیاز دارد که می داند چه کاری انجام دهد و چگونه یک جریان HTTP PUT را بپذیرد.

ارسال فایل به سرور با استفاده از curl:

# curl -T آپلود فایل www.uploadhttp.com/receive.cgi

6. احراز هویت

احراز هویت - ارسال یک نام کاربری و رمز عبور به سرور، پس از آن بررسی می کند که آیا شما حق دارید درخواست درخواست شده را انجام دهید. احراز هویت اولیه (که curl به طور پیش فرض از آن استفاده می کند) مبتنی بر متن واضح است، به این معنی که نام کاربری و رمز عبور رمزگذاری نمی شوند، بلکه فقط کمی با الگوریتم Base64 "مبهم" می شوند و این امکان را برای مهاجمان فراهم می کند که این اطلاعات را در راه پیدا کنند. بین شما و سرور HTTP

به کرل بگویید از نام کاربری و رمز عبور استفاده کند:

# curl -u name:password www.secrets.com

سایت ممکن است به استفاده از روش احراز هویت دیگری نیاز داشته باشد (به آنچه که سرور در سرصفحه ها می نویسد را ببینید)، در این موارد، می توانید از کلیدهای --ntlm، --digest، --negotiate یا حتی --anyauth استفاده کنید. گاهی اوقات دسترسی به سرورهای HTTP خارجی از طریق یک پروکسی اتفاق می افتد، همانطور که اغلب در شرکت ها و شرکت ها انجام می شود. یک پروکسی HTTP ممکن است برای دسترسی به اینترنت به نام کاربری و رمز عبور خود نیاز داشته باشد. کلید حلقه مربوطه:

# curl -U proxyuser:proxypassword curl.haxx.se

اگر پروکسی به احراز هویت NTLM نیاز دارد، --proxy-ntlm و اگر متد Digest است، سپس --proxy-digest را مشخص کنید.

اگر رمز عبوری را در گزینه های -u و -U مشخص نکنید، curl به صورت تعاملی آن را از شما می خواهد.

توجه داشته باشید که وقتی curl در حال اجرا است، رشته اجرا (و با آن کلیدها و رمزهای عبور) ممکن است برای سایر کاربران سیستم شما در لیست کار قابل مشاهده باشد. راه هایی برای جلوگیری از این امر وجود دارد. بیشتر در مورد آن در زیر.

7. ارجاع دهنده

یک درخواست HTTP ممکن است شامل یک فیلد "ارجاع کننده" باشد که نشان دهنده URL است که کاربر از آن به این منبع آمده است. برخی از برنامه ها/اسکریپت ها فیلد "ارجاع کننده" را بررسی می کنند و اگر کاربر از صفحه ناشناخته ای آمده باشد، درخواست را اجرا نمی کنند. اگرچه این روش احمقانه ای برای بررسی است، با این وجود بسیاری از اسکریپت ها از آن استفاده می کنند. با curl می توانید هر چیزی را در قسمت "ارجاع" قرار دهید و در نتیجه آن را مجبور به انجام آنچه می خواهید کنید.

این کار به روش زیر انجام می شود:

# curl -e http://curl.haxx.se daniel.haxx.se

8. عامل کاربر

همه درخواست‌های HTTP از یک فیلد «User-Agent» پشتیبانی می‌کنند که برنامه مشتری کاربر را مشخص می‌کند. بسیاری از برنامه های کاربردی وب از این اطلاعات برای نمایش صفحه به روشی یا دیگری استفاده می کنند. برنامه نویسان وب چندین نسخه از یک صفحه را برای کاربران مرورگرهای مختلف به منظور بهبود ظاهر، استفاده از اسکریپت های مختلف جاوا اسکریپت، vbscript و غیره ایجاد می کنند.

گاهی اوقات ممکن است متوجه شوید که curl صفحه‌ای را برمی‌گرداند که آن چیزی نیست که در مرورگر خود دیده‌اید. در این حالت فقط مناسب است از قسمت "عامل کاربر" استفاده کنید تا یک بار دیگر سرور را فریب دهید.

مخفی کردن حلقه به عنوان اینترنت اکسپلورر در دستگاه ویندوز 2000:

# curl -A "Mozilla/4.0 (سازگار؛ MSIE 5.01؛ Windows NT 5.0)"

چرا در یک ماشین لینوکس (PIII) به Netscape 4.73 تبدیل نمی شوید:

# curl -A "Mozilla/4.73 (X11; U; Linux 2.2.15 i686)"

9. تغییر مسیر

در پاسخ به درخواست شما، سرور، به جای خود صفحه، ممکن است نشانی از جایی که مرورگر باید در کنار آن برود تا به صفحه مورد نظر برسد، نشان دهد. هدری که این تغییر مسیر را به مرورگر می گوید "Location:" است.

به طور پیش فرض، curl به آدرس مشخص شده در "Location:" نمی رود، بلکه به سادگی صفحه را طبق معمول نمایش می دهد. اما شما می توانید آن را به این صورت ارسال کنید:

# curl -L www.sitethatredirects.com

اگر از درخواست‌های curl to POST به سایتی استفاده می‌کنید که بلافاصله به صفحه دیگری هدایت می‌شود، می‌توانید با خیال راحت از -L و -d/-F استفاده کنید. Curl یک درخواست POST برای صفحه اول و سپس یک درخواست GET برای صفحه بعدی ایجاد می کند.

10. کوکی ها

کوکی ها به مرورگرهای وب اجازه می دهند تا وضعیت سمت کلاینت را کنترل کنند. کوکی نامی است که محتوای آن پیوست شده است. سرور با ارسال کوکی ها، مسیر و نام میزبان را به مشتری می گوید که دفعه بعد کوکی ها باید کجا ارسال شوند، طول عمر کوکی و برخی پارامترهای دیگر را می گوید.

هنگامی که یک کلاینت در آدرس مشخص شده در کوکی دریافتی به سرور متصل می شود، کلاینت آن کوکی را به سرور می فرستد (اگر طول عمر منقضی نشده باشد).

بسیاری از برنامه ها و سرورها از این روش برای ترکیب چندین درخواست در یک جلسه منطقی استفاده می کنند. برای اینکه curl نیز این عملکرد را انجام دهد، باید بتوانیم مانند مرورگرها کوکی ها را ذخیره و ارسال کنیم.

ساده ترین راه برای ارسال یک کوکی به سرور هنگام واکشی صفحه با curl اضافه کردن گزینه مناسب در خط فرمان است:

# curl -b "name=Daniel" www.cookiesite.com

کوکی ها به عنوان هدر HTTP معمولی ارسال می شوند. این به curl اجازه می دهد تا کوکی ها را با ذخیره هدرها ذخیره کند. ذخیره کوکی ها با curl با دستور زیر انجام می شود:

# curl -D headers_and_cookies www.cookiesite.com

(به هر حال، بهتر است از سوئیچ -c برای ذخیره کوکی ها استفاده کنید، در مورد آن در زیر).

curl دارای یک کنترل کننده کوکی کاملاً ویژه است که زمانی مفید است که می خواهید دوباره به سرور متصل شوید و از کوکی هایی که آخرین بار ذخیره کرده اید (یا دست ساز) استفاده کنید. برای استفاده از کوکی های ذخیره شده در یک فایل، curl را به این صورت فراخوانی کنید:

# curl -b کوکی های_ذخیره_در_فایل www.cookiesite.com

هنگامی که سوئیچ -b را مشخص می کنید، موتور کوکی curl فعال می شود. اگر می خواهید curl فقط کوکی ها را بپذیرد، از -b با فایلی که وجود ندارد استفاده کنید. به عنوان مثال، اگر می‌خواهید curl کوکی‌ها را از یک صفحه بپذیرد و سپس یک تغییر مسیر را دنبال کنید (شاید کوکی‌ای که به تازگی پذیرفته شده را ارائه دهید)، می‌توانید curl را به این صورت صدا بزنید:

# curl -b nada -L www.cookiesite.com

Curl می تواند کوکی ها را در قالب Netscape و Mozilla بخواند و بنویسد. این یک راه راحت برای تبادل کوکی ها بین مرورگرها و اسکریپت های خودکار است. سوئیچ -b به طور خودکار تشخیص می دهد که یک کوکی داده شده یک کوکی از مرورگرهای مشخص شده است و آن را بر اساس آن مدیریت می کند، و با استفاده از سوئیچ -c/--cookie-jar می توانید وقتی عملیات کامل شد، curl را مجبور به نوشتن یک کوکی جدید کنید:

# curl -b cookies.txt -c newcookies.txt www.cookiesite.com

11. HTTPS

راه های مختلفی برای ایمن سازی انتقال HTTP وجود دارد. شناخته شده ترین پروتکلی که این مشکل را حل می کند HTTPS یا HTTP از طریق SSL است. SSL تمام داده های ارسالی و دریافتی از طریق شبکه را رمزگذاری می کند، که احتمال مخفی ماندن اطلاعات شما را افزایش می دهد.

Curl به لطف کتابخانه رایگان OpenSSL از درخواست ها به سرورهای HTTPS پشتیبانی می کند. درخواست ها به روش معمول انجام می شود:

# حلقه https://that.secure.server.com

11.1 گواهینامه ها

در دنیای HTTPS، علاوه بر نام کاربری و رمز عبور، از گواهی‌ها برای احراز هویت استفاده می‌کنید. Curl از گواهینامه ها در سمت مشتری پشتیبانی می کند. همه گواهی ها با یک عبارت عبور قفل می شوند که باید قبل از اینکه curl بتواند با آنها کار کند وارد کنید. عبارت عبور را می توان در خط فرمان مشخص کرد یا به صورت تعاملی وارد کرد. گواهینامه ها در curl به این صورت استفاده می شوند:

# curl -E mycert.pem https://that.secure.server.com

Curl همچنین سرور را با تأیید گواهی سرور در برابر گواهی ذخیره شده محلی تأیید می کند. عدم تطابق منجر به امتناع کرل از اتصال می شود. برای نادیده گرفتن احراز هویت، از کلید -k استفاده کنید.

اطلاعات بیشتر درباره گواهی ها را می توانید در http://curl.haxx.se/docs/sslcerts.html پیدا کنید.

12. سرصفحه های درخواست خودسرانه

ممکن است لازم باشد عناصر درخواست‌های curl را تغییر دهید یا اضافه کنید.

به عنوان مثال، می توانید درخواست POST را به PROPFIND تغییر دهید و داده ها را به عنوان "Content-Type: text/xml" (به جای Content-Type معمول) ارسال کنید:

# curl -d " " -H "Content-Type: text/xml" -X PROPFIND url.com

شما می توانید هر هدر را با مشخص کردن آن بدون محتوا حذف کنید. به عنوان مثال، می‌توانید هدر «Host:» را حذف کنید و در نتیجه درخواست را خالی کنید:

# curl -H "میزبان:" http://mysite.com

همچنین می توانید هدر اضافه کنید. سرور شما ممکن است به هدر "Destination:" نیاز داشته باشد:

# curl -H "مقصد: http://moo.com/nowhere" http://url.com

13. اشکال زدایی

اغلب اتفاق می افتد که یک سایت به درخواست های curl متفاوت از درخواست های مرورگر پاسخ می دهد. در این مورد، شما باید تا حد امکان curl را به مرورگر جذب کنید:

  • از سوئیچ --trace-ascii برای ذخیره گزارش دقیق درخواست ها استفاده کنید تا بتوانید آنها را با جزئیات بررسی کنید و مشکل را درک کنید.
  • مطمئن شوید که کوکی ها را بررسی کرده اید و در صورت نیاز از آنها استفاده کنید (سوئیچ -b را بخوانید و سوئیچ -c را ذخیره کنید)
  • یکی از آخرین مرورگرهای محبوب را در قسمت "user-agent" مشخص کنید
  • فیلد "ارجاع" را مانند مرورگر پر کنید
  • اگر از درخواست‌های POST استفاده می‌کنید، مطمئن شوید که همه فیلدها به همان ترتیب مرورگر ارسال می‌شوند (نگاه کنید به بالا، نقطه 4.5)

یک کمک کننده خوب در این کار دشوار پلاگین Mozilla/Firefox LiveHTTPHeader است که به شما امکان می دهد تمام هدرهایی را که این مرورگر ارسال و دریافت می کند (حتی هنگام استفاده از HTTPS) مشاهده کنید.

یک رویکرد سطح پایین تر، گرفتن ترافیک HTTP در شبکه با استفاده از برنامه هایی مانند ethereal یا tcpdump و سپس تجزیه و تحلیل هدرهایی است که توسط مرورگر دریافت و ارسال شده است (HTTPS این رویکرد را ناکارآمد می کند).

خواندن RFC 2616 برای هر کسی که می خواهد پروتکل HTTP را درک کند، ضروری است.

RFC 2396 نحو URL را توضیح می دهد.

RFC 2109 نحوه عملکرد کوکی ها را تعریف می کند.

RFC 1867 فرمت فایل آپلود پست را تعریف می کند.

http://openssl.planetmirror.com - صفحه اصلی پروژه OpenSSL

http://curl.haxx.se - صفحه اصلی پروژه cURL

کتابخانه CURL (نشانی‌های اینترنتی مشتری) به شما امکان می‌دهد فایل‌ها را با استفاده از بسیاری از پروتکل‌های اینترنتی به یک رایانه از راه دور منتقل کنید. پیکربندی بسیار انعطاف پذیری دارد و به شما امکان می دهد تقریباً هر درخواست از راه دور را انجام دهید.

CURL از پروتکل های HTTP، HTTPS، FTP، FTPS، DICT، TELNET، LDAP، FILE، و GOPHER و همچنین HTTP-post، HTTP-put، کوکی ها، آپلود FTP، از سرگیری انتقال فایل های قطع شده، گذرواژه ها، شماره پورت ها، گواهی های SSL پشتیبانی می کند. ، کربرو و پروکسی ها.

با استفاده از CURL، یک وب سرور می تواند به عنوان یک سرویس گیرنده تمام عیار برای هر سرویس مبتنی بر HTTP، مانند XML-RPC، SOAP یا WebDAV عمل کند.

به طور کلی، استفاده از کتابخانه به چهار مرحله می رسد:

  1. ایجاد یک منبع CURL با استفاده از تابع curl_init.
  2. تنظیم پارامترها با استفاده از تابع curl_setopt.
  3. اجرای یک درخواست با استفاده از تابع curl_exec.
  4. آزاد کردن منبع CURL با استفاده از تابع curl_close.

یک مثال ساده از استفاده از CURL

// راه اندازی کتابخانه curl
اگر ($ch = @curl_init())
{
// URL درخواست را تنظیم کنید
@curl_setopt($ch، CURLOPT_URL، "http://server.com/");
// اگر درست باشد، CURL شامل هدرها در خروجی می شود
@
// محل قرار دادن نتیجه اجرای پرس و جو:
// false - به جریان خروجی استاندارد،
// true - به عنوان مقدار بازگشتی تابع curl_exec.
@
// حداکثر زمان انتظار بر حسب ثانیه
@
// مقدار قسمت User-agent را تنظیم کنید
@curl_setopt($ch، CURLOPT_USERAGENT، "ربات PHP (http://blog.yousoft.ru)");
// درخواست را اجرا کنید
$data = @curl_exec($ch);
// خروجی داده های دریافتی
echo $data ;
// تخصصی کردن منبع
@curl_close ($ch)؛
}
?>

نمونه ای از استفاده از درخواست GET

$ch = curl_init();
// درخواست GET در رشته URL مشخص شده است
curl_setopt($ch , CURLOPT_URL , "http://server.com/?s=CURL" );
curl_setopt($ch , CURLOPT_HEADER , false );
curl_setopt($ch , CURLOPT_RETURNTRANSFER , true );
curl_setopt($ch , CURLOPT_CONNECTTIMEOUT , 30 );

$data = curl_exec($ch);
curl_close ($ch);
?>

ارسال درخواست GET با گرفتن صفحه تفاوتی ندارد. لازم به ذکر است که رشته query به صورت زیر تشکیل می شود:

http://server.com/index.php?name1=value1&name2=value2&name3=value3

که در آن http://server.com/index.php آدرس صفحه، nameX نام متغیر، valueX مقدار متغیر است.

نمونه ای از استفاده از درخواست POST

$ch = curl_init();
curl_setopt($ch، CURLOPT_URL، "http://server.com/index.php");
curl_setopt($ch , CURLOPT_HEADER , false );
curl_setopt($ch , CURLOPT_RETURNTRANSFER , true );
// باید به صراحت نشان دهید که یک درخواست POST وجود خواهد داشت
curl_setopt($ch , CURLOPT_POST , true );
// مقادیر متغیر در اینجا ارسال می شوند
curl_setopt ($ch , CURLOPT_POSTFIELDS , "s=CURL" );
curl_setopt($ch , CURLOPT_CONNECTTIMEOUT , 30 );
curl_setopt ($ch , CURLOPT_USERAGENT , "PHP Bot (http://mysite.ru)" );
$data = curl_exec($ch);
curl_close ($ch);
?>

ارسال درخواست POST تفاوت زیادی با ارسال درخواست GET ندارد. تمام مراحل اولیه ثابت می ماند. متغیرها نیز به صورت جفت مشخص می شوند: name1=value1&name2=value2.

نمونه مجوز HTTP

// مجوز HTTP
$url = "http://server.com/protected/";
$ch = curl_init();


curl_setopt ($ch , CURLOPT_USERPWD , "myusername:mypassword" );
$result = curl_exec($ch);
curl_close ($ch);
echo $result ;
?>

نمونه جلسه FTP

$fp = fopen(__FILE__ , "r" );
$url = "ftp://username: [ایمیل محافظت شده]:21/path/to/newfile.php";
$ch = curl_init();
curl_setopt($ch , CURLOPT_URL , $url );
curl_setopt($ch , CURLOPT_RETURNTRANSFER , 1 );
curl_setopt($ch , CURLOPT_UPLOAD , 1 );
curl_setopt($ch , CURLOPT_INFILE , $fp );
curl_setopt($ch , CURLOPT_FTPASCII , 1 );
curl_setopt ($ch، CURLOPT_INFILESIZE، اندازه فایل (__FILE__));
$result = curl_exec($ch);
curl_close ($ch);
?>

اگر در استفاده از cURL مشکل دارید، خطوط زیر را قبل از curl_close اضافه کنید تا گزارشی از آخرین درخواست انجام شده دریافت کنید:

print_r(curl_getinfo($ch));
echo "شماره خطای cURL:" . curl_errno ($ch). "
" ;
echo "خطای cURL:" . curl_error ($ch). "
" ;
curl_close ($ch);
?>

زندگی یک توسعه دهنده وب با مشکلاتی همراه است. زمانی که منشأ این مشکلات ناشناخته باشد، بسیار ناامیدکننده است. آیا با ارسال درخواست مشکل دارد یا با پاسخ یا کتابخانه شخص ثالث یا API خارجی باگ است؟ ابزارهای مختلفی وجود دارد که می تواند زندگی ما را آسان تر کند. در اینجا برخی از ابزارهای خط فرمان وجود دارد که من شخصا آنها را ارزشمند می دانم.

حلقه
cURL برنامه ای برای انتقال داده ها از طریق پروتکل های مختلف، مشابه wget است. تفاوت اصلی این است که به طور پیش فرض wget در یک فایل ذخیره می شود، در حالی که cURL به خط فرمان خروجی می دهد. این امر باعث می شود تا مشاهده محتوای وب سایت بسیار آسان باشد. به عنوان مثال، در اینجا نحوه دریافت سریع IP خارجی فعلی خود آورده شده است:

$ curl ifconfig.me 93.96.141.93
گزینه ها -من(نمایش عناوین) و -من(فقط نمایش سرصفحه ها) cURL را به ابزاری عالی برای اشکال زدایی پاسخ های HTTP و تجزیه و تحلیل آنچه که سرور دقیقاً برای شما ارسال می کند تبدیل می کند:

$ curl -I habrahabr.ru HTTP/1.1 200 OK سرور: nginx تاریخ: Thu, 18 Aug 2011 14:15:36 GMT نوع محتوا: text/html; charset=utf-8 اتصال: keep-alive Keep-alive: timeout=25
پارامتر همچنین مفید است، باعث می شود که cURL به طور خودکار تغییر مسیرها را دنبال کند. cURL از احراز هویت HTTP، کوکی‌ها، تونل زدن از طریق پراکسی‌های HTTP، تنظیمات هدر دستی و بسیاری موارد دیگر پشتیبانی می‌کند.

محاصره
Siege یک ابزار تست بار است. به علاوه، یک گزینه مفید نیز دارد -g، که بسیار شبیه به حلقه -il، اما سرصفحه درخواست http را نیز به شما نشان می دهد. در اینجا یک مثال از google.com آورده شده است (برخی عناوین برای اختصار حذف شده اند):

$ siege -g www.google.com GET / HTTP/1.1 میزبان: www.google.com User-Agent: JoeDog/1.00 (X11; I; Siege 2.70) اتصال: بستن HTTP/1.1 302 مکان یافت شده: http:// www.google.co.uk/ نوع محتوا: text/html; charset=UTF-8 سرور: gws Content-Length: 221 اتصال: بستن GET / HTTP/1.1 میزبان: www.google.co.uk User-Agent: JoeDog/1.00 (X11; I; Siege 2.70) اتصال: بستن HTTP/ 1.1 200 OK نوع محتوا: text/html; charset=ISO-8859-1 X-XSS-Protection: 1; mode=block اتصال: بستن
اما چیزی که Siege برای آن عالی است، تست بار است. مانند بنچمارک آپاچی ab، می تواند درخواست های همزمان زیادی را به سایت ارسال کند و ببیند که چگونه ترافیک را مدیریت می کند. مثال زیر نشان می دهد که چگونه گوگل را با 20 درخواست به مدت 30 ثانیه آزمایش می کنیم و پس از آن نتیجه نمایش داده می شود:

$ siege -c20 www.google.co.uk -b -t30s ... رفع محاصره سرور... انجام شد. تراکنش ها: 1400 بازدید در دسترس بودن: 100.00 % زمان سپری شده: 29.22 ثانیه داده های منتقل شده: 13.32 مگابایت زمان پاسخگویی: 0.41 ثانیه نرخ تراکنش: 47.91 ترانس بر ثانیه خروجی: 0.46 مگابایت: 0.46 مگابایت در ثانیه: 1 تراکنش انجام شده: 0.46 مگابایت در ثانیه 4.08 کوتاهترین معامله: 0.08
یکی از مفیدترین ویژگی های Siege این است که می تواند نه تنها با یک آدرس، بلکه با لیستی از URL های یک فایل کار کند. این برای تست بار بسیار عالی است زیرا می‌توانید ترافیک واقعی را در سایت خود شبیه‌سازی کنید به جای اینکه فقط یک URL را بارها و بارها بزنید. به عنوان مثال، در اینجا نحوه استفاده از Siege برای بارگیری سرور با استفاده از آدرس‌های گزارش آپاچی آمده است:

$ cut -d " " -f7 /var/log/apache2/access.log > urls.txt $ siege -c -b -f urls.txt
ngrep
برای تجزیه و تحلیل جدی ترافیک، Wireshark با هزاران تنظیمات، فیلتر و پیکربندی وجود دارد. نسخه خط فرمان نیز وجود دارد توشارک. اما برای کارهای ساده، من عملکرد Wireshark را اضافی می دانم. بنابراین تا زمانی که به یک سلاح قدرتمند نیاز نداشته باشم، از . این به شما اجازه می دهد تا همین کار را با بسته های شبکه انجام دهید grepبا فایل ها انجام می دهد

برای ترافیک وب، تقریبا همیشه می خواهید از آن استفاده کنید -دبلیوبرای حفظ قالب بندی رشته و همچنین گزینه -q، که اطلاعات اضافی در مورد بسته های نامناسب را پنهان می کند. در اینجا مثالی از دستوری است که تمام بسته ها را با دستور GET یا POST رهگیری می کند:

ngrep -q -W byline "^(GET|POST) .*"
می توانید یک فیلتر اضافی برای بسته ها اضافه کنید، به عنوان مثال، توسط یک میزبان، آدرس IP یا پورت معین. در اینجا فیلتری برای تمام ترافیک ورودی و خروجی در google.com، پورت 80 وجود دارد که حاوی کلمه "جستجو" است.

میزبان www.google.com و پورت 80 ngrep -q -W byline "search".

21 پاسخ

ممکن است قبلاً فر داشته باشید

شاید نیازی به دانلود چیزی نداشته باشید:

  • اگر از ویندوز 10 نسخه 1803 یا بالاتر استفاده می کنید، سیستم عامل شما با یک کپی از curl از قبل پیکربندی شده و آماده استفاده است.
  • اگر نیازهای باطنی بیشتری دارید (به عنوان مثال به ساخت‌های cygwin، ساخت‌های شخص ثالث، libcurl، فایل‌های هدر، کدهای منبع و غیره نیاز دارید)، از جادوگر دانلود کرل استفاده کنید. پس از پاسخ به پنج سوال، لیستی از لینک های دانلود به شما نمایش داده می شود.

    استخراج و تنظیم حلقه

    curl.exe را در بسته دانلودی خود پیدا کنید. احتمالاً زیر bin\ .

    مکانی را در هارد دیسک خود انتخاب کنید که به عنوان یک خانه دائمی برای فرها عمل کند:

    • اگر می خواهید فولدر خود را curl کنید، C:\Program Files\curl\ یا C:\curl\ این کار را انجام می دهد.
    • اگر فایل های اجرایی رایگان زیادی دارید و نمی خواهید پوشه های جداگانه زیادی به PATH اضافه کنید، برای این منظور از یک پوشه استفاده کنید، مانند C:\Program Files\tools\ یا C:\tools\ .

    curl.exe را در یک پوشه قرار دهید. و هرگز یک پوشه یا محتویات آن را جابجا نکنید.

    در مرحله بعد، می خواهید curl را در هر نقطه از خط فرمان در دسترس قرار دهید. برای انجام این کار، پوشه را مانند زیر به PATH اضافه کنید:

    1. روی منوی شروع ویندوز 10 کلیک کنید. شروع به تایپ کردن "environment" کنید.
    2. نتیجه جستجو را خواهید دید. ویرایش متغیرهای محیطی سیستم. آن را انتخاب کنید.
    3. پنجره System Properties باز می شود. روی دکمه کلیک کنید متغیرهای محیطیدر پایین
    4. متغیر "مسیر" را در بخش "متغیرهای سیستم" (کادر پایین) انتخاب کنید. روی دکمه کلیک کنید تغییر دادن.
    5. کلیک " اضافه کردن"و مسیر را به پوشه ای که curl.exe در آن قرار دارد قرار دهید.
    6. کلیک خوب،در صورت نیاز پنجره های باز کنسول را ببندید و دوباره باز کنید تا PATH جدید را دریافت کنند.

    اکنون از تایپ curl در هر خط فرمان لذت ببرید. وقت آن است که از آن لذت ببرید!

    برای اجرای curl از خط فرمان

    الف) روی نماد "رایانه من" راست کلیک کنید

    ب) "Properties" را انتخاب کنید

    د) روی برگه [Advanced] - دکمه "Environment Variables" کلیک کنید

    ه) در قسمت "System Variable" "Path" و "Edit" را انتخاب کنید.

    و) یک نقطه ویرگول و سپس مسیری را که curl.exe خود را قرار داده اید اضافه کنید (به عنوان مثال D:\software\curl)

اکنون می توانید از خط فرمان با تایپ کردن زیر اجرا کنید:

حلقه www.google.com

با شروع ویندوز 10 نسخه 1803 (و قبل از آن با Insider Build 17063)، دیگر curl را نصب نمی‌کنید. ویندوز حاوی curl.exe (و tar.exe) خودش در C:\Windows\System32\ است که می‌توانید مستقیماً از CMD معمولی به آن دسترسی داشته باشید.

C:\Users\vonc>C:\Windows\System32\curl.exe --نسخه curl 7.55.1 (ویندوز) libcurl/7.55.1 WinSSL تاریخ انتشار: پروتکل ها: فایل dict ftp ftps http https imap imaps pop3 pop3s smt smtps telnet tftp ویژگی ها: AsynchDNS IPv6 Largefile SSPI Kerberos SPNEGO NTLM SSL C:\Users\vonc>C:\Windows\System32\tar.exe --نسخه bsdtar 3.3.2 - libarchive 3.3.2.5 zlibf ipp

احتمالاً شایان ذکر است که Powershell نسخه 3 و نسخه‌های بعدی حاوی cmdlet Invoke-WebRequest است که دارای برخی قابلیت‌های پیچ‌شدن است. احتمالاً باید به cmdlet های New-WebServiceProxy و Invoke-RestMethod اشاره کرد.

من مطمئن نیستم که آنها برای شما کار می کنند یا نه، اما اگرچه من در ویندوز نیستم، باید بگویم که رویکرد شی که PS از آن استفاده می کند را پیدا کردم، کار با ابزارهایی مانند curl، wget و غیره بسیار ساده تر است. . شاید ارزش دیدن داشته باشند

با دنبال کردن این آموزش می توانید آخرین نسخه curl، openssl، libssh2 و zlib را در 3 مرحله آسان بسازید.

Curl به صورت ایستا ساخته شده است، بنابراین شما مجبور نیستید زمان اجرا پویا لازم را توزیع کنید.

همچنین می توانید یک نسخه از پیش ساخته شده (x86 و x64) را از اینجا دانلود کنید

من دنبال روند دانلود بودم حلقهو هر جا که گفتند فایل را کپی کنید curl.exe در System32اما آنها لینک مستقیم ارائه نکردند. بنابراین در اینجا می توانید لذت ببرید curl.exeآسان در پوشه binبه سادگی

آن را از حالت فشرده خارج کنید و سپس به پوشه bin بروید که در آن فایل exe را دریافت می کنید

فکر کردم دقیقاً همان کاری را که انجام دادم بنویسم (ویندوز 10، نسخه 64 بیتی):

فایل اجرایی curl را انتخاب کنید.

Win64 را انتخاب کنید.

جهانی را انتخاب کنید.

هر کدام را انتخاب کنید.

نسخه curl: 7.53.1 - SSL فعال SSH فعال است. اعتبار: ویکتور شاکاتس. این بسته از نوع اجرایی curl است. این پیوند یک باینری curl از پیش کامپایل شده برای شما دریافت می کند (یا در برخی موارد، با استفاده از اطلاعات ارائه شده در صفحه ای که این پیوند شما را به آن می برد). ممکن است libcurl را به عنوان یک کتابخانه/DLL مشترک نصب کنید یا نه. فایل با استفاده از 7zip بسته بندی شده است. 7zip یک فرمت فشرده سازی فایل است.

روی دانلود کلیک کنید.

شما باید فایل curl-7.53.1-win64-mingw.7z را در پوشه دانلودها داشته باشید.

اگر 7-Zip را ندارید آن را نصب کنید.

کلیک راست کنید، 7-Zip، Extract Here. فایل استخراج شده را در جایی مانند Z:\Tools\ کپی و پیست کنید.

اگر به پوشه bin نگاه کنید، curl.exe را خواهید دید. اگر روی آن دوبار کلیک کنید، پنجره به سرعت چشمک می زند و ناپدید می شود. برای اجرای آن باید از خط فرمان استفاده کنید. به پوشه bin رفته و curl و سپس گزینه های خود را تایپ کنید تا درخواست را انجام دهید. شما باید از دو نقل قول استفاده کنید. نقل قول های تکی با curl در ویندوز کار نمی کنند.

اکنون باید curl را به مسیر کاربری خود اضافه کنید تا مجبور نباشید برای اجرای برنامه به پوشه سمت راست بروید. به "This PC"، "Computer"، "System Properties"، "Advanced System Settings" بروید، به عنوان یک مدیر وارد شوید (شما مدیر نیستید، درست است؟). Environment Variables، System Variables، به لیست نگاه کنید و Path را انتخاب کنید، سپس Edit، سپس New، سپس برای مثال،

z:\tools\curl-7.53.1-win64-mingw\bin

اگر دوست دارید می توانید یک بک اسلش اضافه کنید، فکر نمی کنم مهم باشد. دکمه حرکت به بالا را فشار دهید تا در بالای لیست قرار گیرد و بتوانید به راحتی آن را از صفحه قبلی مشاهده کنید. OK، OK، OK را فشار دهید، سپس یک خط فرمان باز کنید و می توانید curl را با تایپ curl از هر پوشه ای به عنوان هر کاربر اجرا کنید. نقل قول های دوگانه خود را فراموش نکنید.

این پاسخی است که می خواهم دریافت کنم.

این نصب کننده کار را برای من آسان کرد http://www.confusedbycode.com/curl/

"شما می توانید cURL را برای ویندوز فقط با چند کلیک نصب کنید. به سادگی نصب کننده را از جدول زیر دانلود و اجرا کنید و روی Install کلیک کنید. نصب پیش فرض شامل است.

16 فوریه 2006 جف فلینگ

Curl به شما کمک می کند تا داده های ارسال شده در وب را مدیریت کنید این مقاله ابزار رایگان Curl را مورد بحث قرار می دهد که به شما امکان می دهد صفحات وب را از خط فرمان ارسال و دریافت کنید. به لطف Curl، خودکار کردن بسیاری از آنها آسان است

Curl به شما در مدیریت داده های ارسال شده در وب کمک می کند

این مقاله ابزار رایگان Curl را مورد بحث قرار می دهد که به شما امکان می دهد صفحات وب را از خط فرمان ارسال و دریافت کنید. Curl اتوماسیون بسیاری از وظایف امنیتی و مدیریتی مانند استخراج یک صفحه وب برای تجزیه و تحلیل یا دانلود وصله امنیتی از وب را آسان می کند.

نصب کرل

Curl در بسیاری از توزیع های یونیکس گنجانده شده است. باینری ها و منابع برای اکثر سیستم عامل های دیگر در دسترس هستند. حتی برنامه نویسان PHP منبع باز می توانند از Curl برای دسترسی ایمن به محتوای وب مستقیماً از اسکریپت های PHP استفاده کنند.

Curl برای کار با وب سایت های لایه سوکت های امن (SSL) به بسته OpenSSL نیاز دارد. دو نسخه از Curl وجود دارد، یکی با SSL و دیگری بدون SSL. من اولین مورد را توصیه می کنم، زیرا SSL به طور ایمن از داده ها محافظت می کند.

قبل از اینکه بتوانید از Curl با عملکرد SSL استفاده کنید، باید بسته OpenSSL را به طور جداگانه از وب دانلود و نصب کنید. باینری های OpenSSL برای ویندوز را می توان از سایت پروژه GnuWin32 SourceForge در دانلود کرد. این سایت همچنین دارای بسیاری از ابزارهای مفید دیگر است که به ویندوز منتقل شده اند.

بسته OpenSSL را دانلود و نصب کنید، سپس دو فایل DLL را در پوشه system32 کپی کنید:

"C:Program FilesGnuWin32 binlibeay32.dll" %windir%system32 کپی "C:Program FilesGnuWin32 binlibssl32.dll" %windir%system32

پس از آن می توانید Curl را نصب کنید. باینری‌های Curl سازگار با SSL برای ویندوز را می‌توانید در اینجا پیدا کنید http://curl.haxx.se/latest.cgi?curl=win32-ssl-sspi. جدیدترین نسخه، curl 7.15.0، در win32-ssl-sspi.zip است که حاوی فایل curl.exe و مستندات است.

پس از نصب Curl باید با تایپ دستور مطمئن شوید که کار می کند

پیچ http://isc.sans.org/ infocon.txt

اگر کلمه ای که یک رنگ را نشان می دهد روی صفحه ظاهر می شود (مثلاً سبز)، آنگاه Curl کار می کند. در این مثال ساده، Curl محتوای Infocon را از وب سایت مرکز طوفان اینترنت موسسه SANS بازیابی می کند. سبز به این معنی است که اینترنت به طور عادی کار می کند و هیچ تهدید جدی شناسایی نشده است. اگر به جای سبز، کلمات زرد، نارنجی یا قرمز روی صفحه ظاهر شد، این مقاله را کنار بگذارید و به سایت مراجعه کنید. http://isc.sans.orgبرای اطلاع از وضعیت های پرخطر در اینترنت. در صورت بروز خطا، باید بررسی کنید که Curl به درستی نصب شده باشد.

در اصل، Curl یک صفحه وب را بازیابی می کند و سپس منبع HTML صفحه را در کنسول چاپ می کند. با این حال، امکانات ابزار گسترده تر است. Curl دارای بررسی خطای داخلی است. مثلا دستور

http://noserverhere را حلقه کنید

خطای Curl را می دهد: (6) نمی توان میزبان را حل کرد: noserverhere; میزبان پیدا نشد کدهای خطا را می توان در اسکریپت ها برای آزمایش در دسترس بودن یک صفحه وب یا پاسخ سرور وب استفاده کرد. به عنوان مثال، اگر از Curl برای بازیابی روزانه یک صفحه وب، به ویژه آمار روزانه یک وب سایت استفاده می کنید، می توانید کد منبع را به اسکریپت خود اضافه کنید که به دنبال کدهای خطا می گردد. اگر Curl کد خطا Curl: (7) را نمی‌تواند به میزبان متصل کند، می‌توانید فوراً یک هشدار ارسال کنید یا یک ایمیل ارسال کنید.

استخراج داده های رمزگذاری شده

یکی از مهمترین مزیت های Curl سازگاری آن با SSL است. صفحات HTTPS درخواستی به صورت رمزگذاری شده از طریق شبکه ارسال می شوند و سپس Curl متن بازیابی شده را روی صفحه نمایش می دهد. علاوه بر این، Curl گواهی ها را بررسی می کند - تاریخ انقضای گواهی، نام میزبان با نام میزبان گواهی، و سطح اعتماد گواهی ریشه مطابقت دارد - و در صورت نامعتبر بودن گواهی هشدار می دهد. گزینه -cacert به شما امکان می دهد یک فایل گواهی خاص را مشخص کنید. تأیید گواهی با گزینه -k غیرفعال است. یک رویکرد جایگزین استفاده از گزینه -insecure است.

نه فقط برای WWW

Curl چیزی بیش از ارسال فایل از طریق اینترنت است. با Curl، می توانید به سرعت فهرستی از فهرست های یک سایت FTP را فهرست کنید:

Curl ftp://myftpsite

برای مشاهده زیر شاخه های سایت باید دستور را وارد کنید

Curl ftp://myftpsite/subdir/

برای دانلود فایل از شبکه کافیست نام فایل را در URL مشخص کنید. در مثال زیر، فایلی با نام readme.txt مستقیماً از خط فرمان بارگذاری شده و روی صفحه نمایش داده می شود:

Curl ftp://ftp.microsoft.com/deskapps/games/readme.txt

اغلب نوشتن اسکریپت با Curl برای وارد کردن فایل های FTP آسان تر از استفاده از دستور FTP به صورت تعاملی است.

به طور پیش فرض، خروجی مستقیماً در کنسول نوشته می شود، اما می توان آن را با استفاده از گزینه های -o و -O به یک فایل هدایت کرد. برای دریافت صفحه و ذخیره آن در دیسک، از گزینه -o استفاده کنید. گزینه -O صفحه به دست آمده را در یک فایل محلی ذخیره می کند و Curl نام سند راه دور را بازیابی می کند. اگر هیچ نام فایلی در URL مشخص نشده باشد، این عملیات با شکست مواجه خواهد شد. اگر از Curl برای ارسال پرس و جو به وب سایت بدون نام فایل استفاده می کنید، اما می خواهید نتیجه را در یک فایل ذخیره کنید، می توانید نام فایل را در خط فرمان مشخص کنید، مانند:

احراز هویت

Curl روش های احراز هویت اولیه، خلاصه و یکپارچه را ارائه می دهد. در اکثر سایت‌ها، همانطور که به زودی نشان داده خواهد شد، می‌توان با استفاده از توابع ارسال Curl به صفحات احراز هویت مبتنی بر فرم دسترسی داشت. این بدان معنی است که می توانید داده های فرم، مانند نام کاربری و رمز عبور را به یک وب سایت راه دور ارسال کنید که از شما اطلاعاتی در یک صفحه وب می خواهد. شما می توانید از گزینه -u برای ارسال اعتبار استفاده کنید، یا می توانید آنها را در URL جاسازی کنید، که به طور سنتی در FTP انجام می شود، مانند:

Curl ftp://username: [ایمیل محافظت شده]

با استفاده از Curl، تکنیک های قرض گرفته شده از FTP را می توان به HTTP منتقل کرد، مانند مثال زیر:

http://username:password @myhtmlsite/default.htm را بچرخانید

Curl همچنین دسترسی به صفحات وب را از طریق یک سرور پروکسی فراهم می کند. بنابراین، Curl را می توان به گونه ای پیکربندی کرد که از یک سرور پراکسی برای احراز هویت اولیه، خلاصه و NTLM استفاده کند.

اسناد را بخوانید

پوشش دادن همه ویژگی‌های متعدد Curl در یک مقاله، از جمله آپلود فایل‌ها در سرور (-T)، مشاهده فقط اطلاعات در هدر HTTP (-I)، مشاهده همه داده‌ها در حالت پرحرف (-V)، و مخفی‌کاری دشوار است. خروجی (-s). توصیه می‌کنم نگاه دقیق‌تری به توابع Curl در آموزش ارسال‌شده در آن بیاندازید http://curl.haxx.se/docs .

مثال کرل

اکنون که با اصول Curl آشنا شدید، به یک مثال ساده از استخراج داده ها از یک وب سایت با داده های ورودی نگاه می کنیم. بیایید یک ابزار Whois ساده بسازیم که سهولت و راحتی استفاده از Curl و نحوه ارسال داده ها را به یک وب سایت با استفاده از گزینه -d نشان می دهد. در این مثال، Curl آدرس IP را به وب سایت Arin Whois ارسال می کند و سپس نتایج را از آن سایت بازیابی می کند. Whois اطلاعات مربوط به صاحب یک آدرس IP را جستجو می کند.

قبل از شروع تحقیق در مورد یک وب سایت مهم است، زیرا کد منبع هر سایت متفاوت است و Curl همیشه برای همه سایت ها یکسان کار نمی کند. بازدید اولیه از سایت به شما امکان می دهد اطلاعات لازم را برای کار کرل جمع آوری کنید. در این مثال، من از مرورگر برای بازدید از وب سایت استفاده کردم http://www.arin.net/whois/، و متوجه شد که سایت دارای یک فیلد ورود داده واحد است که در آن بازدیدکنندگان آدرس IP مورد نظر خود را نشان می دهند. شما باید جزئیات این فیلد را که بخشی از فرم وب است به دست آورید. این مثال از اسکریپت Perl formfind.pl استفاده می کند ( http://cool.haxx.se/cvs.cgi/curl/perl/contrib/formfind?rev=HEAD&content-type=text/vnd.viewcvs-markup). اسکریپت Formfind.pl داده های فرم را به خروجی های قابل استفاده تبدیل می کند و جستجوی دستی داده ها در HTML را آسان می کند. البته برای اجرای Formfind باید پرل روی کامپیوتر مستقر شود. یک بسته Win32 Perl خوب را می توان از سایت ActiveState ActivePerl به نشانی سفارش داد http://www.activestate.com .

بیایید یک مثال را با جزئیات بیشتر در نظر بگیریم. ابتدا بیایید به وب سایتی نگاه کنیم که حاوی فرمی است که اطلاعات را درخواست می کند:

Curl -o whoisOutputFile http://www.arin.net/whois/

این دستور صفحه Whois را از http://www.arin.net بازیابی می کند و آن را در یک فایل متنی whoisOutputFile ذخیره می کند که حاوی منبع HTML است که مرورگر هنگام بازدید از سایت پخش می کند.

سپس باید داده های فرم را پیدا کرده و برجسته کنید:

./formfind.pl

Formfind متغیرهای فرم و مقادیر ممکن آنها را برمی گرداند. در این مثال، نتایج خروجی بسیار ساده هستند (به زیر مراجعه کنید). صفحه نمایش 1).

به ورودی داده فرم با نام queryinput توجه کنید. این یک فیلد متنی است که Curl باید آدرس IP را برای جستجو ارسال کند. آدرس IP خاص مهم نیست - در این مثال از آدرس مایکروسافت استفاده شده است. با گزینه -d، آدرس IP جستجو شده به قسمت queryinput ارسال می شود:

Curl -d "queryinput=207.46.133.140" http://ws.arin.net/cgibin/whois.pl

دستور Curl با گزینه -d داده ها را در فرم جستجو می کند، در این مورد queryinput، که آدرس IP برای جستجو است. این آدرس هدف را تغییر می دهد. فرم باید داده ها را به یک URL جدید که نشان دهنده اسکریپت whois.pl است ارسال کند. آدرس هدف جدید را می توان در خروجی formfind در صفحه 1 مشاهده کرد.

در این مثال، متن منبع HTML پاسخ Whois نیز به دست می آید، اما توسط گروهی از تگ های HTML پنهان شده است. به‌طور پیش‌فرض، پیام وضعیت Curl اندازه سند، درصد تکمیل و نرخ انتقال را نشان می‌دهد. می توانید خروجی را کمی پاک کنید و نام سازمانی که آدرس IP را دارد فیلتر کنید. وضعیت کرل را می توان با استفاده از گزینه -s غیرفعال کرد. دستور باید از طریق grep اجرا شود تا فقط OrgName به دست آید:

Curl -s -d "queryinput=207.46.133.140" http://ws.arin.net/cgibin/ whois.pl | grep OrgName

در این مثال، خروجی نشان می‌دهد که OrgName مایکروسافت است.

@echo off curl -k -s -d "queryinput= %1" http://ws.arin.net/cgibin/ whois.pl | grep OrgName



اگر متوجه خطایی شدید، یک متن را انتخاب کنید و Ctrl + Enter را فشار دهید
اشتراک گذاری:
پورتال ساخت و ساز - درب و دروازه.  داخلی.  فاضلاب.  مواد.  مبلمان.  اخبار