كتابة طلبات HTTP باستخدام Curl. نقل ملفات الويب من سطر الأوامر عميل Curl بلغة C

مثال عملي حقيقي: تحتاج إلى إعادة تشغيل جهاز التوجيه (المودم) لتغيير عنوان IP. للقيام بذلك، تحتاج إلى: تسجيل الدخول إلى جهاز التوجيه، والانتقال إلى صفحة الصيانة والنقر على زر "إعادة التشغيل". إذا كان من الضروري تنفيذ هذا الإجراء عدة مرات، فيجب تكرار الإجراء. أوافق على أنك لا تريد القيام بهذا الروتين يدويًا في كل مرة. يتيح لك cURL أتمتة كل هذا. باستخدام عدد قليل فقط من أوامر cURL، يمكنك الحصول على الترخيص وإكمال المهمة على جهاز التوجيه.

  • يعد cURL مفيدًا لاسترداد البيانات من مواقع الويب الموجودة على سطر الأوامر.
مثال عملي آخر: نريد تنفيذ عرض الإحصائيات العامة لعدة مواقع. إذا استخدمنا cURL، فستصبح هذه مهمة تافهة تمامًا: باستخدام cURL نقوم بالمصادقة على خدمة جمع الإحصائيات (إذا لزم الأمر)، ثم (مرة أخرى باستخدام أوامر cURL) نحصل على الصفحات الضرورية، ونحلل البيانات التي نحتاجها؛ يتم تكرار الإجراء لجميع مواقعنا، ثم نقوم بإضافة وعرض النتيجة النهائية.

أولئك. تعتبر حالات استخدام cURL حقيقية تمامًا، على الرغم من أن المبرمجين الذين يستخدمونها في برامجهم يحتاجون إلى cURL في الغالب.

يدعم CURL العديد من البروتوكولات وطرق الترخيص، ويمكنه نقل الملفات، ويعمل بشكل صحيح مع ملفات تعريف الارتباط، ويدعم شهادات SSL، والوكلاء، وغير ذلك الكثير.

cURL في PHP وسطر الأوامر

يمكننا استخدام cURL بطريقتين رئيسيتين: في نصوص PHP وفي سطر الأوامر.

لتمكين cURL في PHP على الخادم، تحتاج إلى إلغاء التعليق على السطر الموجود في ملف php.ini

الامتداد=php_curl.dll

ومن ثم إعادة تشغيل الخادم.

في نظام التشغيل Linux، تحتاج إلى تثبيت حزمة الضفيرة.

على أنظمة Debian أو Ubuntu أو Linux Mint:

$ sudo apt-get install curl


على Fedora أو CentOS أو RHEL:

$ سودو يم تثبيت الضفيرة

لكي نرى بوضوح الفرق في الاستخدام في PHP وفي سطر الأوامر، سنقوم بتنفيذ نفس المهام مرتين: أولاً في برنامج PHP النصي، ثم في سطر الأوامر. دعونا نحاول عدم الخلط.

استرجاع البيانات باستخدام cURL

استرداد البيانات باستخدام cURL في PHP

مثال في PHP:

كل شيء بسيط للغاية:
$target_url- عنوان الموقع الذي يهمنا. بعد عنوان الموقع، يمكنك وضع نقطتين وإضافة عنوان المنفذ (إذا كان المنفذ مختلفًا عن المنفذ القياسي).

curl_init- تهيئة جلسة جديدة وإرجاع المقبض، والذي تم تخصيصه في مثالنا لمتغير $ch.

نقوم بعد ذلك بتنفيذ الطلب باستخدام وظيفة cURL curl_exec، حيث يتم تمرير الواصف كمعلمة.

كل شيء منطقي للغاية، ولكن عند تنفيذ هذا البرنامج النصي، سيتم عرض محتويات الموقع على صفحتنا. ولكن ماذا لو لم نرغب في عرض المحتوى، ولكننا نريد كتابته في متغير (للمعالجة أو التحليل اللاحق).

دعونا نضيف قليلا إلى السيناريو الخاص بنا:

0) ( صدى "خطأ في الضفيرة: " . curl_error($ch); ) curl_ Close($ch); ?>

لدينا خط curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);.

curl_setopt- يحدد الخيارات. يمكن العثور على قائمة كاملة بالخيارات في هذه الصفحة:

مخفية عن الضيوف

$response_data = curl_exec($ch);

الآن تم تعيين قيمة البرنامج النصي للمتغير $response_data، والذي يمكن من خلاله إجراء المزيد من العمليات. على سبيل المثال، يمكنك عرض محتوياته.

غرز

إذا (curl_errno($ch) > 0) ( echo "خطأ في الضفيرة: " . curl_error($ch); )

يعمل على تصحيح الأخطاء في حالة حدوث أخطاء.

استرداد البيانات باستخدام cURL في سطر الأوامر

في سطر الأوامر، فقط اكتب

حيث بدلا من mi-al.ru- عنوان موقع الويب الخاص بك.

إذا كنت بحاجة إلى نسخ البيانات إلى متغير بدلاً من عرض النتيجة على الشاشة، فقم بما يلي:

درجة الحرارة = "curl mi-al.ru"

ومع ذلك، لا يزال يتم عرض بعض البيانات:

لمنع عرضها، قم بإضافة المفتاح :

درجة الحرارة = "curl -s mi-al.ru"

ويمكنك مشاهدة ما تم تسجيله:

صدى $ درجة الحرارة | أقل

المصادقة الأساسية وHTTP

المصادقة، ببساطة، هي إدخال اسم المستخدم وكلمة المرور.

المصادقة الأساسية هي المصادقة المستندة إلى الخادم. ولهذا يتم إنشاء ملفين: .htaccessو .htpasswd

محتويات ملف .htaccess هي شيء من هذا القبيل

AuthName "للمستخدمين المسجلين فقط!" يتطلب AuthType Basic مستخدمًا صالحًا AuthUserFile /home/freeforum.biz/htdocs/.htpassw


محتويات ملف .htpasswd هي كالتالي:

ميال: CRdiI.ZrZQRRc

أولئك. تسجيل الدخول وتجزئة كلمة المرور.

عند محاولة الوصول إلى مجلد محمي بكلمة مرور، سيعرض المتصفح شيئًا مثل هذا:

مصادقة HTTP هي الحالة عندما نقوم بإدخال معلومات تسجيل الدخول وكلمة المرور في نموذج على موقع ويب. يتم استخدام هذه المصادقة عند تسجيل الدخول إلى البريد والمنتديات وما إلى ذلك.

مصادقة cURL الأساسية (PHP)

هناك موقع على الانترنت

مخفية عن الضيوف

دعونا نجرب السيناريو الأولي لدينا:

0) ( echo "خطأ في الضفيرة: " . curl_error($ch); ) else ( echo $response_data; ) curl_ Close($ch); ?>

على الرغم من أن البرنامج النصي يعتقد أنه لا يوجد خطأ، إلا أننا لا نحب نتيجة الإخراج على الإطلاق:

أضف سطرين:

Curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC); curl_setopt($ch, CURLOPT_USERPWD, "ru-board:ru-board");

في السطر الأول قمنا بتعيين نوع المصادقة - أساسي. يحتوي السطر الثاني على الاسم وكلمة المرور مفصولين بنقطتين (في حالتنا، الاسم وكلمة المرور متماثلان - ru-board). اتضح مثل هذا:

0) ( echo "خطأ في الضفيرة: " . curl_error($ch); ) else ( echo $response_data; ) curl_ Close($ch); ?> دعنا نحاول: 30946 عظيم! مصادقة cURL الأساسية (في سطر الأوامر) يمكن تحقيق نفس الشيء في سطر الأوامر بسطر واحد: curl -u ru-board:ru-board http://62.113.208.29/Update_FED_DAYS/

لم أنس تحديد نوع المصادقة، كل ما في الأمر هو أن نوع المصادقة الأساسي في cURL هو النوع الافتراضي.

تم كل شيء بسرعة كبيرة في سطر الأوامر لدرجة أنني كتبت البرنامج التالي بسبب الإحباط. تتصل بالموقع وتقوم بتنزيل آخر تحديث:

Temp=`curl -s -u ru-board:ru-board http://62.113.208.29/Update_FED_DAYS/ | grep -E -o "Update_FED_201(1).(2).(2).7z" | يونيك | الذيل - ن 1`؛ حليقة -o $temp -u ru-board:ru-board http://62.113.208.29/Update_FED_DAYS/$temp

مع عدد قليل من الأوامر الأخرى يمكنك إضافة:

  • تفريغ الأرشيف في الدليل المحدد؛
  • إطلاق تحديثات ConsultantPlus (هذه تحديثات له)؛
  • يمكنك التحقق مما إذا كان قد تم بالفعل تنزيل آخر تحديث متاح أو ظهور تحديث جديد؛
  • أضف كل ذلك إلى Cron للحصول على التحديثات اليومية.
URL لمصادقة HTTP

مصادقة HTTP cURL في PHP

نحن بحاجة إلى معرفة:

  • العنوان حيث سيتم إرسال بيانات المصادقة
  • طريقة الإرسال GET أو POST
  • تسجيل الدخول
  • كلمة المرور
في بعض الأحيان هذه البيانات ليست كافية. دعونا معرفة ذلك.

يمكن الحصول على العنوان الذي تريد إرسال البيانات إليه من نموذج المصادقة. على سبيل المثال:

نحن ننظر إلى الممتلكات فعل. أولئك. الصفحة الأخيرة هي تسجيل الدخول.php. نحن بحاجة إلى العنوان الكامل، مثل هذا

مخفية عن الضيوف

وهنا نجد أيضًا طريقة الإرسال: طريقة = "آخر"

أعرف أيضًا تسجيل الدخول وكلمة المرور: admin وqwerasdfzxcv
أولئك. يتم إرسال سلسلة إلى الخادم من النموذج باستخدام طريقة POST. من الناحية النظرية، يجب أن يعمل النص السابق الذي أضفنا إليه سطرًا جديدًا. أولئك. يجب أن تحدث المصادقة.

0) ( echo "خطأ في الضفيرة: " . curl_error($ch); ) else ( ) curl_ Close($ch); ?>

سطر جديد في البرنامج النصي

curl_setopt($ch, CURLOPT_POSTFIELDS, "LOGIN_USER=admin&LOGIN_PASSWD=qwerasdfzxcv");

هنا curl_setopt- الوظيفة المألوفة بالفعل لتحديد خيارات cURL، CURLOPT_POSTFIELDS- هذا هو اسم الخيار الذي نقوم بتعيينه. CURLOPT_POSTFIELDSيحتوي على جميع البيانات التي يتم نقلها باستخدام طريقة POST. حسنا، الخط نفسه LOGIN_USER=admin&LOGIN_PASSWD=qwerasdfzxcv- هذه هي نفس البيانات التي ننقلها.

إذا قمت بفحص النموذج بعناية، ستلاحظ أنه يحتوي أيضًا على حقول مخفية. ويمكن معالجة البيانات أو استكمالها باستخدام جافا سكريبت. يمكنك دراسة كل هذا، لكنني أفضل طريقة أبسط.

أنا أستخدم Wireshark. تم تصميم هذا البرنامج لشم (اعتراض) حركة المرور. وفيه أنه من المريح جدًا معرفة ما يتم نقله بالضبط إلى الموقع.

شاهد هذا الفيديو الصغير:


أولئك. مع العنوان حيث يتم نقل البيانات، خمنت الحق. لكن تبين أن السلسلة المرسلة أكثر تعقيدًا.

لقد أدخلت المعلمة الصحيحة، وقمت أيضًا بتعديل البرنامج النصي قليلاً بحيث لا يقوم بتسجيل الدخول فحسب، بل يتلقى أيضًا شيئًا ما من جهاز التوجيه:

0) ( echo "خطأ في الضفيرة: " . curl_error($ch); ) else ( $target_url2 = "http://188.35.8.64:8080/bsc_wlan.php"; $ch2 = curl_init($target_url2); curl_setopt($ ch2, CURLOPT_RETURNTRANSFER, 1); $response_data2 = curl_exec($ch2); preg_match("|f.ssid.value = "(.*)";|"، $response_data2, $results2 = "" ، ""، $results2)؛ $results2 = str_replace("";"، ""، $results2); echo "اسم شبكة Wi-fi: نتائج $2
"; preg_match("|f_wpa.wpapsk1.value(.*)";|"، $response_data2, $results3); $results3 = str_replace("f_wpa.wpapsk1.value"، ""، $results3)؛ $results3 = str_replace(""، ""، $results3)؛ $results3 = str_replace(""، ""، $results3)؛ صدى "كلمة مرور شبكة Wi-Fi: نتائج $3"; ) curl_Close($ch); ?>

بالمناسبة، إذا قام المالك بتحديث كلمة المرور (ولكن لا يقوم بتحديث البرنامج الثابت)، فيمكن دائمًا عرض كلمة المرور الجديدة على

مخفية عن الضيوف

(هذه ثغرة أمنية معروفة في أجهزة التوجيه D-Link DIR-300 وD-Link DIR-320 وD-Link DAP-1353).

مصادقة HTTP cURL على سطر الأوامر

نحن نعرف بالفعل العنوان الكامل، بالإضافة إلى السلسلة التي سيتم إرسالها. لذلك الأمر بسيط:

تجعيد --بيانات "ACTION_POST=LOGIN&FILECODE=&VERIFICATION_CODE=&LOGIN_USER=admin&LOGIN_PASSWD=qwerasdfzxcv&login=Log+In+&VER_CODE =" http://188.35.8.64:8080/login.php

أعتقد أن كل شيء واضح، لأننا نظرنا بالفعل في هذه المواعيد النهائية. إذا كان أي شخص لا يفهم، اسأل في التعليقات.

من الأمثلة على استخدام cURL لاسترداد البيانات وتحليلها مجموعة الأوامر التالية:

Curl -s --data "ACTION_POST=LOGIN&FILECODE=&VERIFICATION_CODE=&LOGIN_USER=admin&LOGIN_PASSWD=qwerasdfzxcv&login=Log+In+&VER_CODE =" http://188.35.8.64:8080/login.php > /dev/null && echo -e "nn " && echo "اسم شبكة Wi-Fi" && curl -s http://188.35.8.64:8080/bsc_wlan.php | grep -E "f.ssid.value = "(.)*";" | sed "s/f.ssid.value = "//" | sed "s/";//" && echo "كلمة مرور شبكة Wi-Fi" && curl -s http://188.35.8.64:8080/bsc_wlan.php | grep -E "f_wpa.wpapsk1.(.)*";" | sed "s/f_wpa.wpapsk1.value//" | sed "s/";//" | السيد "s/="//"

سيكون من الأصح كتابة هذا العنوان على النحو التالي: حالات الترخيص "المعقدة". أولئك. ضع كلمة "معقد" بين علامتي تنصيص. تبدو معقدة للوهلة الأولى فقط، عندما لا يكون من الواضح: مكان حدوث الإرسال، وما هي أسماء الحقول، وما الذي يتم إرساله بالضبط، وما إلى ذلك.

ولكن، في الواقع، كل ذلك يعود إلى أساليب POST أو GET. لفهم ما يتم إرساله بالضبط، يمكنك حفظ الصفحة بالنموذج على القرص الخاص بك وإضافة وظيفة لعرض البيانات التي تم إنشاؤها للإرسال إلى زر الإرسال. أو حتى أبسط - مثلي، Wireshark.

إذا كانت البيانات صحيحة، ولكن لم تتم المصادقة، فأنت بحاجة إلى البحث في الاتجاهات التالية:

  • قم بتعيين سلسلة المرجع الصحيحة
  • قم بتعيين سلسلة وكيل المستخدم "الصحيحة".
كل هذا يمكن القيام به باستخدام طرق cURL الأساسية، لكنني لن أخوض في ذلك. لقد كان الدرس طويلًا بما فيه الكفاية، لكنني أردت أيضًا أن أعرض بعض الحيل باستخدام cURL.

النصائح والحيل الضفيرة

cURL واستقبال ملفات تعريف الارتباط بالإضافة إلى CURLOPT_COOKIEJAR

أعتقد أنه من الواضح بالفعل أن cURL يتعامل مع ملفات تعريف الارتباط بشكل صحيح - حيث يخزنها ويستخدمها عندما يطلبها الخادم وما إلى ذلك. ولكن في بعض الأحيان يلزم حفظ ملفات تعريف الارتباط. هناك خيار لهذا يسمى CURLOPT_COOKIEJAR، ولكن ليس من الممكن استخدامه دائمًا. هذا هو ما خصصت له خدعتنا الأولى.

في بعض الأحيان، نظرًا للطريقة التي يتم بها تكوين PHP على الخادم، لا تتوفر لنا خيارات مثل CURLOPT_COOKIEJAR (يسمح لك بحفظ ملفات تعريف الارتباط المستلمة في ملف) وCURLOPT_COOKIEFILE (يسمح لك باستخدام ملفات تعريف الارتباط من ملف). لأن يقولون أنه باستخدام هذه الخيارات يمكننا سرقة أي ملف من الخادم الخاص بهم. هنا هو الحل لهذه المشكلة:

1) نحن لا نستخدم CURLOPT_FOLLOWLOCATION
2) استخدم curl_setopt($ch, CURLOPT_HEADER, 1)
3) اجمع ملفات تعريف الارتباط من الرأس مثل هذا:

Preg_match_all("|Set-Cookie: (.*);|U", $content, $results); ملفات تعريف الارتباط $ = تنفجر(";"، $results);

4) قم بتعيينها باستخدام curl_setopt($ch, CURLOPT_COOKIE, $cookies);

النصيحة الثانية. يمكننا أن نتحول من مهاجمين إلى ضحايا. ولتجنب الوقوع ضحية لهجوم رجل في الوسط، فإننا نفعل ذلك.

من فضلكم، توقفوا جميعًا عن تعيين إعداد CURLOPT_SSL_VERIFYPEER على false أو 0. إذا لم يكن تثبيت PHP الخاص بك يحتوي على مجموعة محدثة من شهادات CA الجذرية، فقم بتنزيل واحدة من موقع ويب curl واحفظها على الخادم الخاص بك:

مخفية عن الضيوف

ثم قم بتعيين المسار في ملف php.ini الخاص بك، على سبيل المثال في نظام التشغيل Windows:

Curl.cainfo=c:phpcaert.pem

يؤدي تعطيل CURLOPT_SSL_VERIFYPEER إلى السماح بهجوم رجل في الوسط (MITM)، وهو ما لا نريده!

حسنًا، النصيحة الأخيرة لهذا اليوم. هل تعلم أن عددًا كبيرًا من طلبات التجعيد غير المتزامنة ممكنة؟

لهذا يمكنك استخدام curl_multi_init. التفاصيل ورمز المثال في الوثائق الرسمية

مخفية عن الضيوف

مخفية عن الضيوف


حول الضفيرة في سطر الأوامر

مخفية عن الضيوف


تم أيضًا إعداد الجزء الثاني من درس cURL للقراءة باللغة الروسية: "".

تم حظر JavaScript في متصفحك. الرجاء تفعيل جافا سكريبت ليعمل الموقع!

لفة

تدعم PHP مكتبة libcurl، وهي مكتبة أنشأها Daniel Stenberg والتي تتيح لك الاتصال بأنواع مختلفة من الخوادم والبروتوكولات.
يدعم libcurl حاليًا بروتوكولات http وhttps وftp وgopher وtelnet وdict وfile وldap.
يدعم libcurl أيضًا شهادات HTTPS، وHTTP POST، وHTTP PUT، وتحميل FTP (يمكن القيام بذلك أيضًا باستخدام ملحق ftp PHP)، والتحميل المستند إلى نموذج HTTP، والوكلاء، وملفات تعريف الارتباط، ومصادقة المستخدم + كلمة المرور.

تم تقديم هذه الوظائف في PHP 4.0.2.

curl_init

curl_init - تهيئة جلسة CURL.

وصف

الموارد curl_init()

وظيفة curl_init()يقوم بتهيئة جلسة جديدة وإرجاع مقبض CURL لاستخدامه في الوظائف والوظائف. إذا كانت المعلمة الاختيارية عنوان URLيتم توفيره، فسيتلقى خيار CURLOPT_URL قيمة هذه المعلمة. يمكنك تثبيته يدويًا باستخدام .

curl_setopt

curl_setopt - يضبط خيارات نقل/نقل CURL.

وصف

منطقي curl_setopt(المورد الفصل، خيار السلسلة، القيمة المختلطة)

وظيفة curl_setopt()يضبط الخيارات لجلسة CURL المحددة بواسطة المعلمة الفصل. معامل خيارهو الخيار الذي تريد تعيينه، و قيمةهذه هي قيمة الخيار خيار .

معامل قيمةيجب أن تكون طويلة بالنسبة للخيارات التالية (المحددة بواسطة المعلمة خيار):

  • CURLOPT_INFILESIZE: إذا كنت تقوم بتحميل ملف إلى موقع بعيد، فيجب استخدام هذا الخيار لإخبار PHP بالحجم المتوقع للملف.
  • CURLOPT_VERBOSE: قم بتعيين هذا الخيار على قيمة غير صفرية إذا كنت تريد أن يقوم CURL بالإبلاغ عن جميع الإجراءات.
  • CURLOPT_HEADER: اضبط هذا الخيار على قيمة غير صفرية إذا كنت تريد تضمين الرأس في الإخراج.
  • CURLOPT_NOPROGRESS: اضبط هذا الخيار على قيمة غير صفرية إذا كنت لا تريد أن يعرض PHP مؤشر تقدم نقل CURL. (يقوم PHP تلقائيًا بتعيين هذا الخيار على قيمة غير صفرية؛ ما عليك سوى تغييره عند تصحيح الأخطاء.)
  • كيرلوبت_لا أحد: اضبط هذا الخيار على قيمة غير الصفر إذا كنت لا تريد تضمين النص في الإخراج.
  • CURLOPT_FAILONERROR: اضبط هذا الخيار على قيمة غير الصفر إذا كنت تريد أن يخرج PHP بصمت إذا كان كود HTTP الذي تم إرجاعه أكبر من 300. افتراضيًا، يتم إرجاع الصفحة بشكل طبيعي مع تجاهل الكود.
  • CURLOPT_UPLOAD: اضبط هذا الخيار على قيمة غير الصفر إذا كنت تريد أن يقوم PHP بإعداد الملف للتحميل.
  • CURLOPT_POST: اضبط هذا الخيار على قيمة غير صفرية إذا كنت تريد أن يقوم PHP بإجراء HTTP POST عادي. هذا المنشور بالصيغة العادية application/x-www-form-urlencoded، وهو الأكثر استخدامًا بواسطة نماذج HTML.
  • CURLOPT_FTPLISTONLY: اضبط هذا الخيار على قيمة غير الصفر وسيقوم PHP بإدراج أسماء أدلة FTP.
  • CURLOPT_FTPAPPEND: اضبط هذا الخيار على قيمة غير صفرية وسيقوم PHP بإلحاق الملف البعيد بدلاً من الكتابة فوقه.
  • CURLOPT_NETRC: اضبط هذا الخيار على قيمة غير صفرية وسيقوم PHP بفحص ملف ~./netrc الخاص بك للعثور على اسم المستخدم وكلمة المرور للموقع البعيد الذي تتصل به.
  • CURLOPT_FOLLOWLOCATION: اضبط هذا الخيار على قيمة غير صفرية لمتابعة أي رأس "Location:" يرسله الخادم كجزء من رأس HTTP (لاحظ أن هذا تكرار، وستتبع PHP جميع "Location: "-headers" التي يتم إرسالها. )
  • CURLOPT_PUT: اضبط هذا الخيار على قيمة غير صفرية لـ HTTP PUT الملف. يجب تعيين ملف PUT باستخدام CURLOPT_INFILE وCURLOPT_INFILESIZE.
  • CURLOPT_MUTE: اضبط هذا الخيار على قيمة غير صفرية وسيعمل PHP مخفيًا فيما يتعلق بوظائف CURL.
  • CURLOPT_TIMEOUT: قم بتمرير معلمة طويلة تحتوي على الحد الأقصى للوقت بالثواني الذي تسمح بتشغيل وظائف CURL.
  • CURLOPT_CONNECTTIMEOUT: قم بتمرير معلمة طويلة تحتوي على الحد الأقصى للوقت، بالثواني، الذي تسمح له بالانتظار عند محاولة الاتصال. استخدم 0 للانتظار إلى الأبد.
  • CURLOPT_LOW_SPEED_LIMIT: قم بتمرير معلمة تحتوي على سرعة النقل، بالبايت في الثانية، والتي يجب أن يتم تشغيل النقل أدناه أثناء التنفيذ CURLOPT_LOW_SPEED_TIME، بالثواني، حتى تعتبرها PHP بطيئة للغاية وتقوم بإحباطها.
  • CURLOPT_LOW_SPEED_TIME: قم بتمرير معلمة طويلة تحتوي على الوقت بالثواني الذي يجب تشغيل النقل أدناه أثناء تشغيل CURLOPT_LOW_SPEED_LIMIT لـ PHP لاعتباره بطيئًا للغاية وإحباطه.
  • CURLOPT_RESUME_FROM: قم بالتمرير كمعلمة تحتوي على إزاحة البايت التي يجب أن يبدأ النقل عندها.
  • CURLOPT_SSLVERSION: قم بتمرير المعلمة التي تحتوي على إصدار SSL المراد استخدامه (2 أو 3). بشكل افتراضي، تحاول PHP تحديد ذلك بنفسها، على الرغم من أنه في بعض الحالات يُطلب منك تعيين ذلك يدويًا.
  • CURLOPT_SSL_VERIFYHOST: قم بالتمرير لفترة طويلة إذا كان يجب على CURL التحقق من الاسم الشائع لشهادة النظير في مصافحة SSL. تشير القيمة 1 إلى أنه يجب علينا التحقق من وجود اسم شائع/مشترك، وتشير القيمة 2 إلى أنه يجب علينا التأكد من مطابقته لاسم المضيف المقدم.
  • CURLOPT_TIMECONDITION: قم بتمرير ما دام المعلمة التي تحدد كيفية التعامل مع CURLOPT_TIMEVALUE. يمكنك ضبط هذه المعلمة على TIMECOND_IFMODSINCE أو TIMECOND_ISUNMODSINCE. هذا يعمل فقط مع HTTP.
  • CURLOPT_TIMEVALUE: قم بتمرير طول كمعلمة، وهو الوقت بالثواني منذ 1 يناير 1970. يتم استخدام هذا الوقت كما هو محدد بواسطة خيار CURLOPT_TIMEVALUE، أو سيتم استخدام TIMECOND_IFMODSINCE الافتراضي.
  • CURLOPT_RETURNTRANSFER: قم بتمرير قيمة غير صفرية إذا كنت تريد أن يقوم CURL بإرجاع المعلومات المستلمة مباشرة بدلاً من طباعتها مباشرة.

معامل قيمةيجب أن تكون سلسلة لقيم المعلمات التالية خيار :

تتوقع الخيارات التالية واصف الملف، الذي يتم الحصول عليه باستخدام الوظيفة فوبين () :

  • CURLOPT_FILE: الملف الذي يجب وضع مخرجات النقل فيه، بشكل افتراضي هو STDOUT.
  • CURLOPT_INFILE: الملف الذي يأتي منه إدخال النقل الخاص بك.
  • CURLOPT_WRITEHEADER: ملف لتسجيل جزء الرأس من الإخراج.
  • CURLOPT_STDERR: ملف لتسجيل الأخطاء، بدلا من stderr.

معامل قيمة رد كتابة طويل (سلسلة المورد، بيانات السلسلة)( ... إرجاع strlen($data);) خيار :

  • CURLOPT_WRITEFUNCTION: .
  • CURLOPT_HEADERFUNCTION: .

معامل قيمةيجب أن تكون وظيفة النموذج التالي سلسلة read_callback (المورد ch، المورد fd، الطول الطويل)()لقيم المعلمات التالية خيار :

  • CURLOPT_READFUNCTION: .

curl_exec

curl_exec - ينفذ جلسة CURL.

وصف

منطقي curl_exec(المصدر الفصل)

يجب استدعاء هذه الوظيفة بعد تهيئة جلسة CURL وتم تعيين كافة الخيارات لهذه الجلسة بالفعل. الغرض منه هو ببساطة تنفيذ جلسة CURL محددة مسبقًا (المحددة في المعلمة الفصل).

حليقة_إغلاق

Curl_Close - يغلق جلسة CURL.

وصف

فارغ حليقة_إغلاق(المصدر الفصل)

تقوم هذه الوظيفة بإغلاق جلسة CURL وتحرير جميع الموارد. مقبض الضفيرة الفصلتم حذفه أيضًا.

curl_errno

curl_errno - يُرجع عددًا صحيحًا يحتوي على رقم الخطأ الأخير.

وصف

المثال 1: تهيئة جلسة CURL جديدة واسترداد صفحة ويب.
المثال 2: استخدام وحدة CURL الخاصة بـ PHP للحصول على example.com
المثال 3: التحقق من إمكانية الوصول إلى عنوان URL باستخدام PHP's CURL
مثال 4: فصل الرأس عن النص الذي تم الحصول عليه باستخدام PHP's CURL
المثال 5: تحديد عنوان URL للإحالة باستخدام PHP's CURL
المشكلة: curl_setopt($ch,FOLLOW_LOCATION,1); الخطأ: مشكلة في open_basedir وsafe_mode الحل: وظيفة تم تطويرها بالفعل بواسطة شخص ما الحل رقم 2: نفس الوظيفة، المعدلة، تعمل بشكل رائع بالنسبة لي..= $curl_max_loops) ( $curl_loops = 0; return FALSE; ) curl_setopt($ch, CURLOPT_HEADER, true); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $data = curl_exec($ch); list($header, $data) =تفجير("\n\n", $data, 2); $http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE); إذا ($http_code == 301 || $http_code == 302) ( $matches = ; preg_match("/Location:(.*?)\n/"، $header, $matches); $url = @parse_url(trim (array_pop($matches))); if (!$url) ( // لا يمكن معالجة عنوان url لإعادة التوجيه إلى $curl_loops = 0; return $data; ) $last_url = parse_url(curl_getinfo($ch, CURLINFO_EFFECTIVE_URL)) ; if (!$url["scheme"]) $url["scheme"] = $last_url["scheme"]; if (!$url["host"]) $url["host"] = $last_url[ "host"]; if (!$url["path"]) $url["path"] = $last_url["path"]; $new_url = $url["scheme"] . $url["path"] . ($url["query"]؟".$url["query"]:""); curl_setopt($ch, CURLOPT_URL, $new_url) ; debug("إعادة التوجيه إلى", $ new_url); return curl_redir_exec($ch else ( $curl_loops=0; return $data; ) ) ?>
فقط استخدم هذه الوظيفة بدون FOLLOW_LOCATION ويجب أن تعمل. كانت المشكلة أنه عندما تصل إلى السطر الذي تقوم فيه بإرجاع البيانات إذا كان http_code مختلفًا عن 301 oe 302، فإن $data تحتوي على معلومات قديمة أو لا تحتوي على أي معلومات. لذلك يقوم $debbbb بالمهمة.
مثال 6: تحليل ملف تعريف الارتباط من الرأس باستخدام CURL PHP
في بعض الأحيان لا يمكنك استخدام CURLOPT_COOKIEJAR وCURLOPT_COOKIEFILE بسبب إعدادات php للخادم (يقولون أنه يمكنك الحصول على أي ملفات من الخادم باستخدام هذه الخيارات). إليك الحل 1) لا تستخدم CURLOPT_FOLLOWLOCATION 2) استخدم curl_setopt($ch, CURLOPT_HEADER, 1) 3) احصل على ملفات تعريف الارتباط الخاصة بالرأس مثل هذا: preg_match_all("|Set-Cookie: (.*);|U", $content, $results); ملفات تعريف الارتباط $ = تنفجر(";"، $results); 4) قم بتعيينها باستخدام curl_setopt($ch, CURLOPT_COOKIE, $cookies);
مثال 7: تحليل ملف تعريف الارتباط من الرأس باستخدام CURL PHP
كما ذكر Yevgen سابقًا، في بعض الأحيان لا يمكننا استخدام CURLOPT_COOKIEJAR وCURLOPT_COOKIEFILE. فيما يلي وظيفة رد اتصال الرأس التي كتبتها مرة أخرى في يناير والتي تتيح لك الاحتفاظ بملفات تعريف الارتباط بين طلبات cURL. تتم إضافة ملفات تعريف الارتباط إلى $ch أثناء جميع الطلبات حتى أثناء إعادة التوجيه، لذا يمكنك استخدمه مع CURLOPT_FOLLOWLOCATION إليك الكود: function read_header($ch, $string) ( global $location; #keep Track of location/redirects global $cookiearr; #store cookies here global $ch; # ^ يتجاوز معلمة الوظيفة. $ch # هذا جيد لأننا بحاجة إلى # تحديث $ch العام باستخدام # ملفات تعريف ارتباط جديدة $length = strlen($string); if(!strncmp($string, "Location:, 9)) ( #keep Track of آخر إعادة توجيه $location = Trim(substr($string, 9, -1)); if(!strncmp($string, "Set-Cookie:", 11)) ( #get the cookie $cookiestr = Trim(substr( $ string, 11, -1)); $cookie =تفجير(";", $cookiestr); Iplode("=", $cookie)); ) $ملف تعريف الارتباط = ""; if(trim($string) == "") ( #execute فقط في نهاية الرأس foreach ($cookiearr as $key=>$value) ( ​​​​$cookie .= "$key=$value; "; ) curl_setopt ($ ch، CURLOPT_COOKIE، $cookie)؛ ) curl_setopt($ch, CURLOPT_HEADERFUNCTION, "read_header"); يفترض هذا الكود أنك ستعيد استخدام $ch دون تهيئته في كل مرة (اتصل بـ curl_init مرة واحدة فقط، في البداية). إذا كنت بحاجة إلى تهيئة $ch مرة أخرى في أي وقت في التعليمات البرمجية الخاصة بك، فيمكنك الوصول إلى ملفات تعريف الارتباط المخزنة حاليًا في $cookiearr وإدراجها في $ch الجديد. لقد كتبت هذه الوظيفة قبل أن يكون لدي خبرة كافية في التعبيرات العادية لذلك لن تجد أي مكالمات preg_match هنا. لقد استخدمت هذا الرمز لفترة طويلة ودون أي مشاكل في الوصول إلى gmail وyahoo وhotmail وaol وما إلى ذلك حيث اضطررت إلى ذلك قم بإجراء تسجيل الدخول وبضع صفحات قبل الوصول إلى ما كنت أبحث عنه.
مثال 8: إعداد معالج تحميل الرأس باستخدام CURL PHP
باستخدام cURL، كنت بحاجة إلى استدعاء برنامج نصي لجهة خارجية كان يقوم بإرجاع البيانات الثنائية كمرفق لتمرير البيانات المستردة مرة أخرى كمرفق. كانت المشكلة هي أن البرنامج النصي التابع لجهة خارجية كان يُرجع أحيانًا أخطاء HTTP وأردت تجنب تمرير مرفقات ذات طول صفري في مثل هذه الحالات. ساعد الجمع بين استخدام رد الاتصال CURLOPT_FAILONERROR وCURLOPT_HEADERFUNCTION في معالجة أخطاء HTTP النصية لجهة خارجية بدقة: الوظيفة curlHeaderCallback($resURL, $strHeader) ( if (preg_match("/^HTTP/i", $strHeader)) ( header($strHeader) ); curl_setopt($resURL, CURLOPT_BINARYTRANSFER, 1); curl_setopt($resURL, CURLOPT_HEADERFUNCTION, "curlHeaderCallback"); curl_setopt($resURL, CURLOPT_FAILONERROR, 1); curl_exec($resURL); $intReturnCode = curl_getinfo($resURL, CURLINFO_HTTP_CODE); تجعيد_إغلاق($resURL); إذا ($intReturnCode != 200) (اطبع "خطأ في الكود: " .$intReturnCode;)
مثال 9. حفظ صفحة في ملف وحساب معدل النقل باستخدام CURL PHP
WritePageToFile("http://es.php.net", "es.php.net.txt"); وظيفة WritePageToFile($sHTMLpage, $sTxtfile) ( $sh = curl_init($sHTMLpage); $hFile = FOpen($sTxtfile, "w"); curl_setopt($sh, CURLOPT_FILE, $hFile); curl_setopt($sh, CURLOPT_HEADER, 0);
"; echo "متوسط ​​سرعة التنزيل == " . $sAverageSpeedDownload . " 
"; echo "متوسط ​​سرعة التحميل == " . $sAverageSpeedUpload ."
"؛ صدى صوت "
"; $aCURLinfo = curl_getInfo($sh); print_r($aCURLinfo); صدى "
"؛ تجعيد_إغلاق($sh); FClose ($hFile); صدى "( شاهد الملف "".$sTxtfile."" في نفس مسار الاستضافة." " حيث يوجد هذا البرنامج النصي PHP).
"; }
مثال 9. استلام صفحة عبر اتصال SSL (https)
$ch=curl_init("https://site"); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // تعطيل الخطأ "مشكلة في شهادة SSL، تحقق من أن شهادة CA على ما يرام" curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); // تعطيل الخطأ "SSL: اسم موضوع الشهادة "hostname.ru" لا يتطابق مع اسم المضيف الهدف "123.123"" curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); $out=curl_exec($ch); //$http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE); // صدى "http_code = ". $ http_code، "، err = ".curl_error($ch)؛ تجعيد_إغلاق($ch);
مثال 10: استخدام الجلسات وملفات تعريف الارتباط في حليقة
$cookie_filename=sys_get_temp_dir()+"/cookie.tmp"; $curl=curl_init("http://site"); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); curl_setopt($curl, CURLOPT_COOKIEJAR, $cookie_filename);// احفظ ملفات تعريف الارتباط المستلمة في ملف curl_setopt($curl, CURLOPT_COOKIEFILE, $cookie_filename); // أرسل إلى الخادم ملفات تعريف الارتباط المستلمة منه أثناء التفويض $out=curl_exec($curl);
مثال 11: تحميل ملف ومصفوفة متعددة الأبعاد في Curl. CURLOPT_POSTFIELDS + CurlFile

إذا كنت بحاجة إلى إرسال مصفوفة متعددة الأبعاد وملف في طلب POST، فسوف تواجه مشكلة غير قابلة للحل. إذا قمت بتمرير مصفوفة متعددة الأبعاد إلى CURLOPT_POSTFIELDS، فسيتم تمرير المستوى الثاني كسلسلة "Array". إذا قمت بالتحويل باستخدام http_build_query، فلن تتمكن من نقل الملف.

يوجد أدناه وظيفة لتشفير مصفوفة ثنائية الأبعاد مع تحميل ملف لـ Curl، والتي ستعمل في كلا الإصدارين الأقدم من PHP 5.3 وPHP 5.4 وPHP 5.6

/** يحول مصفوفة متعددة الأبعاد إلى مصفوفة أحادية البعد باستخدام فهارس معقدة ويستبدل @ في البادئة بـ CurlFile للاستخدام في Curl * @param $inputArray * @param string $inputKey * @return array $requestVars = array ("id" => array( 1, 2,"id"=>1234), "name" => "log", "logfile" => "@/tmp/test.log"); نحصل على: ["id"]=> int(1) ["id"]=> int(2) ["id"]=> int(1234) ["name"]=> string(3) "log" [ "logfile"]=> string(13) "/tmp/test.log" ) */ function converterToStringArray($inputArray, $inputKey="") ( $resultArray=; foreach ($inputArray as $key => $value ) ( $tmpKey = (bool)$inputKey ? $inputKey."[$key]" : $key; if (is_array($value)) ( $resultArray+=convertToStringArray($value, $tmpKey); ) elseif ($value) = = "@")( $resultArray[$tmpKey] = (class_exists(" CURLFile ", false)) ? new CurlFile(ltrim($value, "@")) : $value; ) else ( $resultArray[$tmpKey ] = $value; ) ) return $resultArray) // تحقق من $requestVars = array("id" => array(1, 2,"id"=>1234), "name" => "log", "logfile" " => "@/tmp/test.log"); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, "htmlweb.ru"); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, converterToStringArray($requestVars)); $res = curl_exec($ch); تجعيد_إغلاق($ch); مُطبَّق

(PHP 4 >= 4.0.2، PHP 5، PHP 7)

حليقة_سيتوبت — يضبط معلمة لجلسة CURL

قائمة المعلمات

تم الحصول على مقبض cURL من curl_init().

المعلمة التي سيتم تعيينها CURLOPT_XXX.

قيمة معلمة الخيار.

منطقي:

معامل ملحوظات
CURLOPT_AUTOREFERER حقيقيللإعداد الميداني التلقائي المُحيل:في الطلبات المعاد توجيهها حسب الرأس موقع:.
CURLOPT_BINARYTRANSFER حقيقيلإرجاع الاستجابة الأولية عند استخدام ثابت CURLOPT_RETURNTRANSFER. اعتبارًا من PHP 5.1.3، لم يعد هذا الخيار مطلوبًا: يتم دائمًا إرجاع المخرجات الأولية عند استخدام الخيار CURLOPT_RETURNTRANSFER.
CURLOPT_COOKIESESSION حقيقيلتوجيه الجلسة الحالية لبدء "جلسة" جديدة من ملفات تعريف الارتباط. سيؤدي هذا إلى تجاهل libcurl لأي ملفات تعريف ارتباط "للجلسة" كان من المفترض أن يتم تحميلها من الجلسة السابقة. افتراضيًا، يقوم libcurl دائمًا بحفظ جميع ملفات تعريف الارتباط وتحميلها، بغض النظر عما إذا كانت "جلسة" أم لا. ملفات تعريف الارتباط "الجلسة" هي ملفات تعريف ارتباط لا تنتهي صلاحيتها ويجب أن تكون موجودة فقط خلال "الجلسة" الحالية.
CURLOPT_CERTINFO حقيقيلإخراج معلومات شهادة SSL للبث ستديرمع اتصالات آمنة. تمت الإضافة في URL 7.19.1. متاح بدءًا من PHP 5.3.2. يتطلب تمكين هذا الخيار للتشغيل الصحيح CURLOPT_VERBOSE.
CURLOPT_CONNECT_ONLY حقيقييخبر المكتبة بإجراء مصادقة الوكيل الضرورية وإعداد الاتصال، لكنه لا ينقل البيانات. يتم تنفيذ هذا الخيار لـ HTTP، وSMTP، وPOP3. تمت الإضافة في 7.15.2. متاح من PHP 5.5.0.
CURLOPT_CRLF حقيقيلتحويل نهايات سطر Unix إلى CRLF.
CURLOPT_DNS_USE_GLOBAL_CACHE حقيقيلاستخدام ذاكرة التخزين المؤقت DNS العالمية. هذا الخيار ليس آمنًا لمؤشر الترابط ويتم تمكينه افتراضيًا.
CURLOPT_FAILONERROR حقيقيللحصول على تقرير مفصل عن الفشل إذا كان رمز HTTP المستلم أكبر من أو يساوي 400. يقوم السلوك الافتراضي بإرجاع الصفحة كالمعتاد، متجاهلاً الرمز.
CURLOPT_FILETIME حقيقيلمحاولة الحصول على تاريخ التعديل لمستند بعيد. يمكن الحصول على هذه القيمة باستخدام المعلمة CURLINFO_FILETIME من الوظيفة curl_getinfo().
CURLOPT_FOLLOWLOCATION حقيقيلمتابعة أي عنوان "موقع: "أرسلها الخادم في استجابته (لاحظ أن هذا يحدث بشكل متكرر، وستتبع PHP أي رؤوس يتم إرسالها "موقع: "، إلا عندما يتم تعيين ثابت CURLOPT_MAXREDIRS).
CURLOPT_FORBID_REUSE حقيقيلفرض إغلاق الاتصال بعد اكتمال معالجته بحيث لا يمكن إعادة استخدامه.
CURLOPT_FRESH_CONNECT حقيقيلفرض استخدام اتصال جديد بدلاً من اتصال مخبأ.
CURLOPT_FTP_USE_EPRT حقيقيلاستخدام EPRT (وLPRT) لعمليات تحميل FTP النشطة. يستخدم خطأ شنيعمن أجل تعطيل EPRT وLPRT واستخدام المنفذ فقط.
CURLOPT_FTP_USE_EPSV حقيقيللاختبار الأولي لأمر EPSV أثناء عمليات نقل FTP. إذا فشل الأمر، فسوف يعود إلى PASV. تثبيت في خطأ شنيعلتعطيل EPSV.
CURLOPT_FTP_CREATE_MISSING_DIRS حقيقيلإنشاء أدلة مفقودة إذا واجهت عملية FTP مسارًا غير موجود.
CURLOPT_FTPAPPEND حقيقيلكتابة ملف بعيد حتى النهاية، بدلاً من الكتابة فوقه فوق ملف موجود.
CURLOPT_TCP_NODELAY يحدد بشكل دائم ما إذا كان يجب تعيين خيار TCP_NODELAY أو مسحه (1 = مجموعة، 0 = مسح). بشكل افتراضي، يتم مسح الخيار. متوفر من PHP 5.2.1 للإصدارات المبنية باستخدام libcurl 7.11.2 أو الأحدث.
CURLOPT_FTPASCII كنية CURLOPT_TRANSFERTEXT. استخدم هذا بدلا من ذلك.
CURLOPT_FTPLISTONLY حقيقيلإرجاع قائمة الأسماء فقط من دليل FTP.
CURLOPT_HEADER حقيقيلتضمين الرؤوس في الإخراج.
CURLINFO_HEADER_OUT حقيقيلتتبع سلسلة استعلام المقبض. متاح بدءًا من PHP 5.1.3. بادئة كيرلينفو_تستخدم على وجه التحديد.
CURLOPT_HTTPGET حقيقيلإعادة تعيين طريقة طلب HTTP إلى طريقة GET. نظرًا لأن GET هو الإعداد الافتراضي، فإن هذه المعلمة مطلوبة فقط إذا تم تغيير طريقة الطلب مسبقًا.
CURLOPT_HTTPPROXYTUNNEL حقيقيللنفق عبر وكيل HTTP المحدد.
CURLOPT_MUTE حقيقيلتعطيل رسائل وظيفة cURL بشكل كامل. تمت الإزالة في cURL 7.15.5 (يمكن استخدام خيار CURLOPT_RETURNTRANSFER)
CURLOPT_NETRC حقيقيلقراءة ملف ~/.netrc لتسجيل الدخول وكلمة المرور للموقع البعيد الذي يتم إنشاء الاتصال به.
كيرلوبت_لا أحد حقيقيلاستبعاد نص الاستجابة من الإخراج. تم ضبط طريقة الطلب على HEAD. تغيير هذا الإعداد إلى خطأ شنيعلا يغيره مرة أخرى إلى GET.
CURLOPT_NOPROGRESS

حقيقيلتعطيل مؤشر التقدم في عمليات نقل cURL.

تعليق:

تقوم PHP تلقائيًا بتعيين هذه المعلمة على حقيقي، قم بتغييره فقط لأغراض التصحيح.

CURLOPT_NOSIGNAL حقيقيلتجاهل أي وظيفة cURL ترسل إشارات إلى عملية PHP. يتم تمكين هذا الخيار افتراضيًا في واجهات برمجة التطبيقات (SAPIs) متعددة الخيوط للتشغيل الصحيح لمعلمات المهلة.
CURLOPT_POST حقيقيلاستخدام HTTP POST العادي. تستخدم طريقة POST هذه الطريقة العادية ، شائع الاستخدام في نماذج HTML.
CURLOPT_PUT حقيقيلتنزيل ملف باستخدام طريقة HTTP PUT. يجب ضبط الملف المستخدم باستخدام الخيارات CURLOPT_INFILEو CURLOPT_INFILESIZE.
CURLOPT_RETURNTRANSFER حقيقيلإرجاع نتيجة النقل كسلسلة من curl_exec()بدلاً من الإخراج المباشر إلى المتصفح.
CURLOPT_SAFE_UPLOAD حقيقيلتعطيل دعم البادئة @ للملفات التي تم تنزيلها في CURLOPT_POSTFIELDSمما يعني أن القيم مرت مع @ يمكن أن تنتقل بشكل آمن كحقول. بدلاً من البادئة، يمكنك استخدام الخيار CURLFileد. تمت الإضافة في PHP 5.5.0 بالقيمة الافتراضية خطأ شنيع. في PHP 5.6.0 أصبح يساوي افتراضيًا حقيقي.
CURLOPT_SSL_VERIFYPEER خطأ شنيعلإيقاف cURL من التحقق من شهادة المضيف. يمكن تحديد الشهادات البديلة المراد التحقق منها باستخدام المعلمة CURLOPT_CAINFOأو الدليل بالشهادات المحددة بواسطة المعلمة CURLOPT_CAPATH. الافتراضي هو حقيقيمنذ إصدار cURL 7.10. يتم تثبيت التوزيع الافتراضي بدءًا من إصدار cURL 7.10.
CURLOPT_TRANSFERTEXT حقيقيلاستخدام وضع ASCII لعمليات نقل FTP. عند استخدام LDAP، يتم إرجاع البيانات بنص عادي بدلاً من HTML. على أنظمة ويندوز الموضوع خروج قياسيلم يتم ضبطه على الوضع الثنائي.
CURLOPT_UNRESTRICTED_AUTH حقيقيلمواصلة إرسال معلومات تسجيل الدخول وكلمة المرور أثناء عمليات إعادة التوجيه (عند استخدام CURLOPT_FOLLOWLOCATION)، حتى لو تغير اسم المضيف.
CURLOPT_UPLOAD حقيقيللتحضير لتحميل الملف على الخادم.
CURLOPT_VERBOSE حقيقيلعرض معلومات إضافية. يكتب الإخراج إلى دفق ستديرأو الملف المحدد بواسطة المعلمة CURLOPT_STDERR.

بالنسبة لقيم معلمات الخيار التالية، يجب أن تكون معلمة القيمة من النوع عدد صحيح:

معامل تعيين قيمة القيمة ملحوظات
CURLOPT_BUFFERSIZE حجم المخزن المؤقت المستخدم لكل قراءة. ومع ذلك، ليس هناك ما يضمن أن هذا الطلب سوف يكتمل. تمت الإضافة في الضفيرة 7.10.
CURLOPT_CLOSEPOLICY أحد الثوابت سياسة إغلاق الغلق_*.

تعليق:

تم إهمال هذا الخيار لأنه لم يتم تنفيذه مطلقًا في cURL ولم يعمل.

تمت إزالته في PHP 5.6.0.
CURLOPT_CONNECTTIMEOUT عدد الثواني التي يجب انتظارها عند محاولة الاتصال. استخدم 0 للانتظار لأجل غير مسمى.
CURLOPT_CONNECTTIMEOUT_MS عدد المللي ثانية التي يجب انتظارها عند محاولة الاتصال. استخدم 0 للانتظار لأجل غير مسمى. إذا تم تجميع libcurl باستخدام محلل الاسم القياسي للنظام، فسيستمر الاتصال في استخدام انتظار ثانية كاملة كمهلة، مع الحد الأدنى المسموح به للمهلة وهو ثانية واحدة. تمت إضافته في إصدار cURL 7.16.2. متاح بدءًا من PHP 5.2.3.
CURLOPT_DNS_CACHE_TIMEOUT عدد الثواني التي يتم تخزين سجلات DNS فيها في الذاكرة. بشكل افتراضي، هذه المعلمة هي 120 (دقيقتان).
CURLOPT_FTPSSLAUTH طريقة مصادقة FTP (في الوضع النشط): CURLFTPAUTH_SSL(يتم فحص SSL أولاً)، CURLFTPAUTH_TLS(يتم فحص TLS أولاً) أو CURLFTPAUTH_DEFAULT(curL يقرر لنفسه). تمت إضافته في إصدار cURL 7.12.2.
CURLOPT_HTTP_VERSION CURL_HTTP_VERSION_NONE (افتراضيًا، CURL يختار الإصدار الذي سيتم استخدامه)، CURL_HTTP_VERSION_1_0 (فرض HTTP/1.0)، أو CURL_HTTP_VERSION_1_1 (فرض HTTP/1.1).
CURLOPT_HTTPAUTH

يمكنك استخدام عامل التشغيل bitwise | (أو) الجمع بين عدة طرق معًا. في هذه الحالة، سيقوم cURL باستقصاء الخادم عن طرق التفويض المدعومة واختيار أفضلها.

CURLAUTH_ANY هو اسم مستعار CURLAUTH_BASIC | CURLAUTH_DIGEST | CURLAUTH_GSSNEGOTIATE | CURLAUTH_NTLM.

CURLAUTH_ANYSAFE هو اسم مستعار CURLAUTH_DIGEST | CURLAUTH_GSSNEGOTIATE | CURLAUTH_NTLM.

CURLOPT_INFILESIZE حجم الملف المتوقع بالبايت عند تحميل ملف إلى خادم بعيد. يرجى ملاحظة أن استخدام هذا الخيار لن يوقف إرسال المزيد من البيانات التي تتجاوز هذه القيمة، حيث تعتمد البيانات المرسلة على النتيجة CURLOPT_READFUNCTION.
CURLOPT_LOW_SPEED_LIMIT الحد الأعلى لمعدل نقل البيانات، بالبايت في الثانية. يتم التحقق داخل CURLOPT_LOW_SPEED_TIMEثواني، وبعد ذلك تعتبر PHP أن النقل بطيء جدًا ويجهضه.
CURLOPT_LOW_SPEED_TIME الحد الأقصى لعدد الثواني التي يجب ألا يتجاوز معدل النقل خلالها CURLOPT_LOW_SPEED_LIMITوإلا فإن PHP ستضع علامة على عملية النقل على أنها بطيئة جدًا وستوقفها.
CURLOPT_MAXCONNECTS الحد الأقصى لعدد الاتصالات المستمرة. عند الوصول إلى الحد الأقصى، يتم استخدام المعلمة لتحديد الاتصال الذي سيتم إغلاقه. CURLOPT_CLOSEPOLICY.
CURLOPT_MAXREDIRS الحد الأقصى لعدد عمليات إعادة التوجيه المقبولة. استخدم هذا الخيار مع الخيار CURLOPT_FOLLOWLOCATION.
CURLOPT_PORT منفذ اتصال بديل.
CURLOPT_POSTREDIR قناع بت يحتوي على 1 (301 تم نقله بشكل دائم) و2 (تم العثور على 302) و4 (303 انظر أخرى) لتحديد ما إذا كان يجب معالجة طريقة HTTP POST عند تمكين الخيار CURLOPT_FOLLOWLOCATIONإذا حدث نوع إعادة التوجيه المحدد. تمت الإضافة في URL 7.19.1. متاح منذ PHP 5.3.2.
CURLOPT_PROTOCOLS

قناع بت من القيم كيرلبروتو_*. يحد هذا القناع من البروتوكولات التي يستخدمها libcurl. يتيح لك ذلك تشغيل libcurl مع عدد كبير من البروتوكولات وقصر تشغيل عمليات نقل معينة على مجموعة فرعية منها فقط. بشكل افتراضي، يستخدم libcurl جميع البروتوكولات المدعومة. انظر أيضًا المعلمة CURLOPT_REDIR_PROTOCOLS.

قيم البروتوكول الصحيحة: CURLPROTO_HTTP , CURLPROTO_HTTPS , CURLPROTO_FTP , CURLPROTO_FTPS , CURLPROTO_SCP , CURLPROTO_SFTP , CURLPROTO_TELNET , CURLPROTO_LDAP , CURLPROTO_LDAPS , CURLPROTO_DICT , CURLPROTO_FILE , LPROTO_TF TP، CURLPROTO_ALL

CURLOPT_PROXYAUTH طرق ترخيص HTTP المستخدمة عند الاتصال بخادم وكيل. استخدم نفس أقنعة البت التي تم وصفها للمعلمة CURLOPT_HTTPAUTH. حاليًا، يتم دعم CURLAUTH_BASIC وCURLAUTH_NTLM فقط لتخويل الوكيل. تمت إضافته في إصدار cURL 7.10.7.
CURLOPT_PROXYPORT رقم منفذ الخادم الوكيل الذي تم الاتصال به. يمكن أيضًا تعيين هذا الرقم باستخدام المعلمة CURLOPT_PROXY.
CURLOPT_PROXYTYPE إما CURLPROXY_HTTP (افتراضي) أو CURLPROXY_SOCKS5 . تمت الإضافة في الضفيرة 7.10.
CURLOPT_REDIR_PROTOCOLS قناع بت من القيم كيرلبروتو_*. يحد قناع البت هذا من البروتوكولات التي يستخدمها libcurl عند إعادة التوجيه (مع تمكين المعلمة CURLOPT_FOLLOWLOCATION). يتيح لك ذلك تحديد مجموعة البروتوكولات المستخدمة عند إعادة التوجيه لبعض عمليات النقل. بشكل افتراضي، يدعم libcurl جميع البروتوكولات باستثناء FILE وSCP. في الإصدارات السابقة للإصدار 7.19.4، تم استخدام إعادة التوجيه لجميع البروتوكولات دون استثناء. انظر أيضًا وصف المعلمة CURLOPT_PROTOCOLSللحصول على قائمة الثوابت مع قيم البروتوكول. تمت إضافته في إصدار cURL 7.19.4.
CURLOPT_RESUME_FROM إزاحة بداية الإرسال، بالبايت.
CURLOPT_SSL_VERIFYHOST استخدم 1 للتحقق من وجود اسم شائع في شهادة SSL. استخدم 2 للتحقق من وجود الاسم الشائع وتطابقه أيضًا مع المضيف المحدد. في بيئة القتال، يجب أن تكون قيمة هذه المعلمة 2 (يتم تعيينها افتراضيًا). تمت إزالة دعم القيمة 1 في cURL 7.28.1
CURLOPT_SSLVERSION أحد الثوابت CURL_SSLVERSION_DEFAULT (0), CURL_SSLVERSION_TLSv1 (1), CURL_SSLVERSION_SSLv2 (2), CURL_SSLVERSION_SSLv3 (3), CURL_SSLVERSION_TLSv1_0 (4), CURL_SSLVERSION_TLSv1_1(5) أو CURL_SSLVERSION_TLSv1_2 (6).
CURLOPT_TIMECONDITION طريقة تفسير المعلمة CURLOPT_TIMEVALUE. استخدم CURL_TIMECOND_IFMODSINCE لإرجاع الصفحة فقط إذا تغيرت منذ الوقت المحدد في المعلمة CURLOPT_TIMEVALUE. إذا لم يتم تعديل الصفحة، فسيتم إرجاع العنوان "304 لم يتم تعديله"، مما يعني أن المعلمة CURLOPT_HEADERمثبتة في حقيقي. استخدم CURL_TIMECOND_IFUNMODSINCE للتأثير المعاكس. الافتراضي هو CURL_TIMECOND_IFMODSINCE.
CURLOPT_TIMEOUT الحد الأقصى لعدد الثواني المسموح بها لتنفيذ وظائف cURL.
CURLOPT_TIMEOUT_MS الحد الأقصى لعدد المللي ثانية المسموح بها لتنفيذ وظائف cURL. إذا تم إنشاء libcurl باستخدام محلل اسم النظام العادي، فسيظل نطاق الاتصال هذا يستخدم مهلات التقريب الثانية، مع الحد الأدنى المسموح به للمهلة وهو ثانية واحدة. تمت إضافته في إصدار cURL 7.16.2. متاح بدءًا من PHP 5.2.3.
CURLOPT_TIMEVALUE عدد الثواني منذ 1 يناير 1970. سيتم استخدام هذه المرة بواسطة المعلمة CURLOPT_TIMECONDITION. بشكل افتراضي، يتم استخدام المعلمة CURL_TIMECOND_IFMODSINCE.
CURLOPT_MAX_RECV_SPEED_LARGE إذا تجاوزت سرعة التنزيل هذه القيمة (المحددة بالبايت في الثانية) في المتوسط ​​خلال عملية النقل بأكملها، فسيتم إيقاف التنزيل مؤقتًا للحفاظ على متوسط ​​السرعة أقل من أو يساوي هذه المعلمة. بشكل افتراضي، السرعة ليست محدودة.
CURLOPT_MAX_SEND_SPEED_LARGE إذا تجاوز التحميل إلى الخادم هذه القيمة (المحددة بالبايت في الثانية) في المتوسط ​​طوال عملية النقل بأكملها، فسيتم إيقاف التحميل مؤقتًا للحفاظ على متوسط ​​سرعة أقل من أو يساوي هذه المعلمة. بشكل افتراضي، السرعة ليست محدودة. تمت إضافته في إصدار cURL 7.15.5. متاح بدءًا من PHP 5.4.0.
CURLOPT_SSH_AUTH_TYPES قناع نقطي يتكون من ثابت واحد أو أكثر: CURLSSH_AUTH_PUBLICKEY, CURLSSH_AUTH_PASSWORD, CURLSSH_AUTH_HOST, CURLSSH_AUTH_KEYBOARD. ثَبَّتَ CURLSSH_AUTH_ANYلكي يختار libcurl واحدًا منهم بشكل مستقل. تمت الإضافة في URL 7.16.1.
CURLOPT_IPRESOLVE للسماح لتطبيق ما بتحديد نوع عنوان IP الذي يتم من خلاله تحديد اسم المضيف. يعد ذلك ضروريًا إذا كنت تستخدم اسم مضيف مشتق من أكثر من إصدار واحد لعنوان IP. يمكن أن تكون القيم المحتملة CURL_IPRESOLVE_WHATEEVER, CURL_IPRESOLVE_V4, CURL_IPRESOLVE_V6، وبشكل افتراضي CURL_IPRESOLVE_WHATEEVER. تمت الإضافة في URL 7.10.8.

بالنسبة لقيم معلمات الخيار التالية، يجب أن تكون معلمة القيمة من النوع خيط:

معامل تعيين قيمة القيمة ملحوظات
CURLOPT_CAINFO اسم الملف الذي يحتوي على شهادة واحدة أو أكثر سيتم فحص العقد بناءً عليها. تكون هذه المعلمة منطقية فقط عند استخدامها مع CURLOPT_SSL_VERIFYPEER. يتطلب المسار المطلق.
CURLOPT_CAPATH دليل يحتوي على عدة شهادات CA. استخدم هذا الخيار بالتزامن مع CURLOPT_SSL_VERIFYPEER.
CURLOPT_COOKIE محتوى الرأس "بسكويت:"، المستخدمة في طلب HTTP. يرجى ملاحظة أنه يتم الفصل بين ملفات تعريف الارتباط المتعددة بفاصلة منقوطة تليها مسافة (على سبيل المثال، " الفاكهة = تفاحة؛ اللون = أحمر")
CURLOPT_COOKIEFILE اسم الملف الذي يحتوي على ملفات تعريف الارتباط. يجب أن يكون هذا الملف بتنسيق Netscape أو ببساطة رؤوس HTTP المكتوبة في الملف. إذا تم تمرير سلسلة فارغة كاسم ملف، فلن يتم حفظ ملفات تعريف الارتباط، ولكن ستظل معالجتها ممكنة.
CURLOPT_COOKIEJAR اسم الملف الذي سيتم فيه حفظ جميع ملفات تعريف الارتباط الداخلية للنقل الحالي بعد إغلاق المقبض، على سبيل المثال بعد استدعاء curl_Close.
CURLOPT_CUSTOMREQUEST

تم استخدام طريقة الطلب المخصصة بدلاً من ذلك "يحصل"أو "رأس"عند تقديم طلب HTTP. وهذا مفيد للاستعلامات "يمسح"أو غيرها من طلبات HTTP النادرة. المعاني الصحيحة ستكون كلمات مثل "يحصل", "بريد", "يتصل"وما إلى ذلك وهلم جرا؛ أولئك. لا تدخل سطر طلب HTTP بأكمله هنا. على سبيل المثال، إشارة "الحصول على /index.html HTTP/1.0\r\n\r\n"سيكون مخطئا.

تعليق:

لا تستخدم هذه الميزة حتى تتأكد من أن الخادم يدعم هذا النوع من الطلب.

CURLOPT_EGDSOCKET يحب CURLOPT_RANDOM_FILE، باستثناء أنه تم تعيين اسم الملف على مقبس Entropy Gathering Daemon.
CURLOPT_ENCODING محتوى الرأس "قبول-التشفير:". وهذا يسمح بفك تشفير الطلب. الترميزات المدعومة هي "هوية", "ينكمش"و "غزيب". إذا تم تمرير سلسلة فارغة، "" ، يتم إرسال رأس يحتوي على جميع أنواع الترميز المدعومة. تمت الإضافة في الضفيرة 7.10.
CURLOPT_FTPPORT القيمة التي سيتم استخدامها لتحديد عنوان IP لأمر FTP "PORT". يخبر الأمر "PORT" الخادم بعنوان IP الذي يجب أن يتصل به. يمكن أن يكون هذا عنوان IP، أو اسم مضيف، أو اسم واجهة الشبكة (ضمن Unix)، أو ببساطة "-" لاستخدام عنوان IP الافتراضي للنظام.
CURLOPT_INTERFACE اسم واجهة الشبكة المراد استخدامها. يمكن أن يكون اسم واجهة أو عنوان IP أو اسم مضيف.
CURLOPT_KEYPASSWD كلمة المرور مطلوبة لاستخدام المفتاح الخاص CURLOPT_SSLKEYأو CURLOPT_SSH_PRIVATE_KEYFILE. تمت الإضافة في URL 7.16.1.
CURLOPT_KRB4LEVEL مستوى الأمان KRB4 (Kerberos 4). أي من القيم التالية (بالترتيب من الأضعف إلى الأقوى) صحيحة: "واضح", "آمن", "مؤتمن", "خاص".. إذا كانت السلسلة المحددة تختلف عن القيم المحددة، فسيتم استخدام القيمة "خاص". ضبط هذا الخيار على باطلسيتم تعطيل أمان KRB4 تمامًا. في الوقت الحالي، يعمل أمان KRB4 فقط مع معاملات FTP.
CURLOPT_POSTFIELDS جميع البيانات المنقولة في طلب HTTP POST. لنقل ملف، حدد قبل اسم الملف @ واستخدم أيضًا المسار الكامل للملف. يمكن أيضًا تحديد نوع الملف باستخدام التنسيق " ;نوع = نوع mime" بعد اسم الملف. يمكن تمرير هذه المعلمة كسلسلة مشفرة بعنوان URL مثل " الفقرة1=val1¶2=val2&..."، وعلى شكل مصفوفة، مفاتيحها ستكون أسماء الحقول، والقيم هي محتوياتها. إذا كانت القيمة مصفوفة، فإن الرأس نوع المحتوىسيتم تعيين ل بيانات متعددة الأجزاء/النموذج. بدءًا من PHP 5.2.0، عند نقل الملفات بالبادئة @ ، يجب أن تكون القيمة مصفوفة. منذ PHP 5.5.0، أصبحت البادئة @ تم إهماله ويمكن إرسال الملفات باستخدام CURLFile. بادئة @ يمكن تعطيلها للسماح بالقيم التي تبدأ بـ @ من خلال تحديد الخيار CURLOPT_SAFE_UPLOADفي المعنى حقيقي.
CURLOPT_PROXY وكيل HTTP الذي سيتم من خلاله توجيه الطلبات.
CURLOPT_PROXYUSERPWD تسجيل الدخول وكلمة المرور مكتوبة في النموذج ":" ، يُستخدم عند الاتصال عبر وكيل.
CURLOPT_RANDOM_FILE اسم الملف المستخدم لتهيئة منشئ الأرقام العشوائية لـ SSL.
CURLOPT_RANGE نطاق البيانات التي سيتم تنزيلها بالتنسيق "س-ص"ويمكن حذف إما X أو Y. يدعم بروتوكول HTTP أيضًا نقل نطاقات متعددة مفصولة بفواصل، ويتم تحديدها بالتنسيق "X-Y، N-M".
CURLOPT_REFERER محتوى الرأس "المرجع:"، والذي سيتم استخدامه في طلب HTTP.
CURLOPT_SSH_HOST_PUBLIC_KEY_MD5 سلسلة تحتوي على 32 رقمًا سداسيًا عشريًا. يجب أن تكون السلسلة عبارة عن مجموع اختباري MD5 للمفتاح العام للكمبيوتر البعيد، وسيقوم libcurl بإعادة تعيين الاتصال بالمضيف البعيد حتى يتطابق المجموع الاختباري مع المفتاح العام. هذا الخيار مخصص فقط لنقل البيانات باستخدام SCP وSFTP. تمت الإضافة في URL 7.17.1.
CURLOPT_SSH_PUBLIC_KEYFILE اسم الملف لمفتاحك العام. إذا لم يتم تحديده، فسيتم تعيين libcurl افتراضيًا على الملف $HOME/.ssh/id_dsa.pub إذا تم تعيين متغير البيئة HOME والملف "id_dsa.pub" في الدليل الحالي إذا لم يتم تعيين متغير البيئة HOME. تمت الإضافة في URL 7.16.1.
CURLOPT_SSH_PRIVATE_KEYFILE اسم الملف لمفتاحك الخاص. إذا لم يتم تحديده، فسيتم تعيين libcurl افتراضيًا على الملف $HOME/.ssh/id_dsa إذا تم تعيين متغير البيئة HOME وملف "id_dsa" في الدليل الحالي إذا لم يتم تعيين متغير البيئة HOME. إذا كان الملف محميًا بكلمة مرور، فاضبط كلمة المرور باستخدام CURLOPT_KEYPASSWD. تمت الإضافة في URL 7.16.1.
CURLOPT_SSL_CIPHER_LIST قائمة الأصفار المستخدمة في عمليات نقل SSL. على سبيل المثال، RC4-شاو TLSv1هي قوائم تشفير صالحة.
CURLOPT_SSLCERT اسم الملف الذي يحتوي على شهادة PEM منسقة بشكل صحيح.
CURLOPT_SSLCERTPASSWD كلمة المرور مطلوبة لاستخدام الشهادة CURLOPT_SSLCERT.
CURLOPT_SSLCERTTYPE تنسيق الشهادة. التنسيقات المدعومة "بيم"(تقصير)، "دير"و "إنج". أضيفت في الضفيرة 7.9.3.
CURLOPT_SSLENGINE معرف محرك التشفير لمفتاح SSL الخاص المحدد في المعلمة CURLOPT_SSLKEY.
CURLOPT_SSLENGINE_DEFAULT معرف آلية التشفير المستخدمة لعمليات التشفير غير المتماثلة.
CURLOPT_SSLKEY اسم ملف المفتاح الخاص SSL.
CURLOPT_SSLKEYPASSWD

كلمة المرور السرية المطلوبة لاستخدام مفتاح SSL الخاص المحدد بواسطة المعلمة CURLOPT_SSLKEY.

تعليق:

نظرًا لأن هذه المعلمة تحتوي على كلمة مرور قيمة، تذكر الاحتفاظ ببرنامج PHP النصي هذا في مكان آمن.

CURLOPT_SSLKEYTYPE نوع مفتاح SSL الخاص المحدد في المعلمة CURLOPT_SSLKEY. يتم دعم أنواع المفاتيح التالية: "بيم"(تقصير)، "دير"و "إنج".
CURLOPT_URL عنوان URL قابل للتنزيل. يمكن أيضًا تعيين هذه المعلمة عند تهيئة الجلسة باستخدام curl_init().
CURLOPT_USERAGENT محتوى الرأس "وكيل المستخدم: "، تم إرساله في طلب HTTP.
CURLOPT_USERPWD تسجيل الدخول وكلمة المرور المستخدمة أثناء الاتصال، المحددة في التنسيق ":" .

بالنسبة لقيم معلمات الخيار التالية، يجب أن تكون معلمة القيمة عبارة عن صفيف:

معامل تعيين قيمة القيمة ملحوظات
CURLOPT_HTTP200 الأسماء المستعارة مجموعة من استجابات HTTP 200 التي سيتم التعامل معها على أنها استجابات صحيحة بدلاً من الاستجابات الخاطئة. تمت إضافته في إصدار cURL 7.10.3.
CURLOPT_HTTPHEADER مصفوفة من رؤوس HTTP المحددة، في صفيف التنسيق ("نوع المحتوى: نص/عادي"، "طول المحتوى: 100")
CURLOPT_POSTQUOTE مجموعة من أوامر FTP يتم تنفيذها على الخادم بعد اكتمال طلب FTP.
CURLOPT_QUOTE مجموعة من أوامر FTP يتم تنفيذها على الخادم قبل تقديم طلب FTP.

بالنسبة لقيم معلمات الخيار التالية، يجب أن تكون معلمة القيمة عبارة عن مقبض دفق (يتم إرجاعه، على سبيل المثال، بواسطة الدالة فوبين ()):

معامل تعيين قيمة القيمة
CURLOPT_FILE الملف الذي سيتم كتابة نتيجة النقل فيه. دفق الإخراج الافتراضي خروج قياسي(نافذة المتصفح).
CURLOPT_INFILE الملف الذي يجب قراءة البيانات منه عند تحميلها على الخادم.
CURLOPT_STDERR ملف إخراج الخطأ البديل المستخدم بدلاً من دفق الأخطاء ستدير.
CURLOPT_WRITEHEADER الملف الذي سيتم كتابة رؤوس العملية الحالية فيه.

بالنسبة لقيم معلمات الخيار التالية، يجب أن تكون معلمة القيمة اسم دالة صالحًا أو إغلاقًا صالحًا:

معامل تعيين قيمة القيمة
CURLOPT_HEADERFUNCTION تأخذ وظيفة رد الاتصال معلمتين. المعلمة الأولى هي مقبض cURL، والمعلمة الثانية هي سلسلة تحتوي على الرؤوس المراد كتابتها. يجب كتابة الرؤوس باستخدام وظيفة رد الاتصال هذه. يجب أن يعود عدد البايتات المكتوبة.
CURLOPT_PASSWDFUNCTION تأخذ وظيفة رد الاتصال ثلاث معلمات. المعلمة الأولى هي مقبض cURL، والمعلمة الثانية هي سلسلة مطالبة كلمة المرور، والمعلمة الثالثة هي الحد الأقصى لطول كلمة المرور. يجب أن ترجع سلسلة تحتوي على كلمة المرور.
CURLOPT_PROGRESSFUNCTION

تأخذ وظيفة رد الاتصال خمس معلمات. الأول هو واصف cURL، والثاني هو إجمالي عدد البايتات المتوقع تنزيلها من الخادم، والثالث هو عدد البايتات التي تم تنزيلها بالفعل، والرابع هو إجمالي عدد البايتات المتوقع إرسالها إلى الخادم، و الخامس هو عدد البايتات المرسلة بالفعل.

تعليق:

يتم استدعاء وظيفة رد الاتصال فقط إذا كان الخيار CURLOPT_NOPROGRESSتعيين على القيمة خطأ شنيع.

يمكنك إرجاع قيمة غير الصفر لإلغاء النقل. في هذه الحالة سيتم عرض خطأ CURLE_ABORTED_BY_CALLBACK.

CURLOPT_READFUNCTION تأخذ وظيفة رد الاتصال ثلاث معلمات. المعلمة الأولى هي مقبض cURL، والمعلمة الثانية هي مورد الدفق الذي تم تمريره إلى cURL عبر الخيار CURLOPT_INFILEوالمعلمة الثالثة هي الحد الأقصى لكمية البيانات المسموح بقراءتها. يجب أن تقوم وظيفة رد الاتصال بإرجاع سلسلة لا يزيد طولها عن كمية البيانات المطلوبة، عادةً عن طريق القراءة من مورد الدفق الذي تم تمريره. يجب أن يُرجع سلسلة فارغة للإشارة إلى نهاية الملف EOF.
CURLOPT_WRITEFUNCTION تأخذ وظيفة رد الاتصال معلمتين. المعلمة الأولى هي مقبض cURL، والمعلمة الثانية هي السلسلة التي تحتوي على البيانات المراد كتابتها. يجب حفظ البيانات باستخدام هذه الوظيفة. ويجب أن يُرجع العدد الدقيق للبايتات المكتوبة، وإلا فسيتم إلغاء التنزيل مع حدوث خطأ.

معاني أخرى:

إرجاع القيم

عائدات حقيقيعند الانتهاء بنجاح أو خطأ شنيعفي حالة وجود خطأ.

قائمة التغييرات

إصدار وصف
5.6.0 خيار CURL_SAFE_UPLOADلديه الآن قيمة افتراضية حقيقي.
5.6.0 تمت إزالة الخيار CURLOPT_CLOSEPOLICYوالمعاني المرتبطة به.
5.5.0 تتم إضافة مورد cURL كوسيطة أولى لوظيفة رد الاتصال CURLOPT_PROGRESSFUNCTION.
5.5.0 تمت إضافة الخيار CURLOPT_SHARE.
5.3.0 تمت إضافة الخيار CURLOPT_PROGRESSFUNCTION.
5.2.10 الخيارات المضافة CURLOPT_PROTOCOLSو CURLOPT_REDIR_PROTOCOLS.
5.1.0 الخيارات المضافة CURLOPT_AUTOREFERER, CURLOPT_BINARYTRANSFER, CURLOPT_FTPSSLAUTH, CURLOPT_PROXYAUTHو CURLOPT_TIMECONDITION.
5.0.0 الخيارات المضافة CURLOPT_FTP_USE_EPRT, CURLOPT_NOSIGNAL, CURLOPT_UNRESTRICTED_AUTH, CURLOPT_BUFFERSIZE, CURLOPT_HTTPAUTH, CURLOPT_PROXYPORT, CURLOPT_PROXYTYPE, CURLOPT_SSLCERTTYPEو CURLOPT_HTTP200 الأسماء المستعارة.

أمثلة

المثال رقم 1: تهيئة جلسة CURL وتحميل صفحة ويب

// إنشاء مورد جديد لعنوان URL
$ch = curl_init();

/* http://localhost/upload.php:
print_r($_POST);
print_r($_FILES);
*/

$ch = curl_init();

$data = array("name" => "Foo" , "file" => "@/home/user/test.png" );

Curl_setopt($ch, CURLOPT_URL, "http://localhost/upload.php");
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);

Curl_exec($ch);
?>

نتيجة تشغيل هذا المثال:

Array ( => Foo) Array ( => Array ( => test.png => image/png => /tmp/phpcpjNeQ => 0 => 279))

ملحوظات

تعليق:

تمرير مصفوفة إلى CURLOPT_POSTFIELDSيشفر البيانات كما بيانات متعددة الأجزاء/النموذج، في حين أن تمرير سلسلة مشفرة بعنوان URL سيؤدي إلى تشفير البيانات على أنها application/x-www-form-urlencoded.

21 إجابة

قد يكون لديك بالفعل حليقة

قد لا تحتاج إلى تنزيل أي شيء:

  • إذا كنت تستخدم الإصدار 1803 من نظام التشغيل Windows 10 أو إصدارًا أحدث، فإن نظام التشغيل لديك يأتي مزودًا بنسخة من حليقة تم تكوينها بالفعل وجاهزة للاستخدام.
  • إذا كانت لديك احتياجات أكثر خصوصية (على سبيل المثال، تحتاج إلى إنشاءات cygwin، أو إنشاءات جهات خارجية، أو libcurl، أو ملفات الرأس، أو المصادر، وما إلى ذلك)، فاستخدم معالج التنزيل curl. بعد الإجابة على خمسة أسئلة، ستظهر لك قائمة بروابط التنزيل.

    إزالة وضبط الضفيرة

    ابحث عن curl.exe في الحزمة التي تم تنزيلها؛ ربما يكون تحت bin\ .

    حدد موقعًا على محرك الأقراص الثابتة لديك والذي سيكون بمثابة موطن دائم لتجعيد الشعر:

    • إذا كنت تريد إنشاء مجلد خاص به، فإن C:\Program Files\curl\ أو C:\curl\ سيفي بالغرض.
    • إذا كان لديك الكثير من الملفات التنفيذية المجانية ولا تريد إضافة العديد من المجلدات المنفصلة إلى المسار الخاص بك، فاستخدم مجلدًا واحدًا لهذا الغرض، مثل C:\Program Files\tools\ أو C:\tools\ .

    ضع curl.exe في المجلد. ولا تقم أبدًا بنقل المجلد أو محتوياته.

    بعد ذلك ستحتاج إلى إتاحة التجعيد في أي مكان في سطر الأوامر. للقيام بذلك، قم بإضافة المجلد إلى PATH، مثل هذا:

    1. انقر على قائمة ابدأ في نظام التشغيل Windows 10 ابدأ بكتابة "البيئة".
    2. سوف ترى نتيجة البحث. تحرير متغيرات بيئة النظام. اختر هذا.
    3. تفتح نافذة خصائص النظام. انقر فوق الزر متغيرات البيئةفي الأسفل.
    4. حدد متغير "المسار" في قسم "متغيرات النظام" (الحقل السفلي). انقر فوق الزر يتغير.
    5. انقر " يضيف"والصق المسار إلى المجلد الذي يوجد به curl.exe.
    6. انقر نعم،إذا لزم الأمر. أغلق أي نوافذ وحدة تحكم مفتوحة وأعد فتحها حتى تحصل على PATH الجديد.

    استمتع الآن بالكتابة على أي سطر أوامر. الوقت للحصول على المتعة!

    لتشغيل الضفيرة من سطر الأوامر

    أ) انقر بزر الماوس الأيمن على أيقونة جهاز الكمبيوتر

    ب) حدد "خصائص"

    د) انتقل إلى علامة التبويب [خيارات متقدمة] - زر "متغيرات البيئة".

    هـ) ضمن "متغير النظام" حدد "المسار" و"تحرير"

    و) أضف فاصلة منقوطة ثم المسار إلى المكان الذي وضعت فيه ملف curl.exe (على سبيل المثال D:\software\curl)

يمكنك الآن التشغيل من سطر الأوامر عن طريق كتابة:

الضفيرة www.google.com

بدءًا من الإصدار 1803 من نظام التشغيل Windows 10 (والإصدارات الأقدم، الإصدار 17063 من Insider)، لم تعد تقوم بتثبيت حليقة . يحتوي Windows على cur.exe (و tar.exe) الخاص به في C:\Windows\System32\ والذي يمكنك الوصول إليه مباشرة من CMD العادي.

C:\Users\vonc>C:\Windows\System32\curl.exe --version curl 7.55.1 (Windows) libcurl/7.55.1 تاريخ إصدار WinSSL: البروتوكولات: dict file ftp ftps http https imap imaps pop3 pop3s smtp ميزات smtps telnet tftp: AsynchDNS IPv6 Largefile SSPI Kerberos SPNEGO NTLM SSL C:\Users\vonc>C:\Windows\System32\tar.exe --version bsdtar 3.3.2 - libarchive 3.3.2 zlib/1.2.5.f- إيب

ربما تجدر الإشارة إلى أن Powershell v3 والإصدارات الأحدث تحتوي على Invoc-WebRequest cmdlet، الذي يتمتع ببعض إمكانيات التجعيد. ربما من الجدير بالذكر أيضًا أوامر cmdlets لـ New-WebServiceProxy وInvoc-RestMethod.

لست متأكدًا مما إذا كانت ستناسبك أم لا، ولكن على الرغم من أنني لست Windows، يجب أن أقول إنني أجد النهج القائم على الكائنات الذي يستخدمه PS أسهل بكثير للعمل مع الأدوات المساعدة مثل curl وwget وما إلى ذلك. قد تكون تستحق نظرة

يمكنك إنشاء أحدث إصدار من cur، وopensl، وlibssh2، وzlib في 3 خطوات سهلة باتباع هذا البرنامج التعليمي.

تم إنشاء Curl بشكل ثابت، لذلك لا يتعين عليك نشر وقت التشغيل الديناميكي الضروري.

يمكنك أيضًا تنزيل الإصدار المُصمم مسبقًا (x86 وx64) من

اعتقدت أنني سأكتب بالضبط ما فعلته (إصدار Windows 10، 64 بت):

حدد الضفيرة القابلة للتنفيذ.

حدد Win64.

اختر عالمي.

اختر أي واحد.

إصدار الضفيرة: 7.53.1 - تمكين SSL تمكين SSH. ائتمان: فيكتور شاكاتس. هذه الحزمة هي نوع قابل للتنفيذ من الضفيرة. سيوفر لك هذا الرابط ملفًا ثنائيًا تم تجميعه مسبقًا (أو في بعض الحالات، باستخدام المعلومات المتوفرة في الصفحة التي ينقلك إليها الرابط). يجوز لك أو لا تقوم بتثبيت libcurl كمكتبة/DLL مشتركة. يتم حزم الملف باستخدام 7zip. 7zip هو تنسيق أرشفة الملفات.

انقر فوق تنزيل.

يجب أن يكون لديك ملف curl-7.53.1-win64-mingw.7z في مجلد التنزيلات الخاص بك.

قم بتثبيت 7-Zip إذا لم يكن لديك.

انقر بزر الماوس الأيمن، 7-Zip، استخراج هنا. انسخ الملف المستخرج والصقه في مكان ما مثل Z:\Tools\

إذا نظرت إلى مجلد bin فسترى curl.exe. إذا قمت بالنقر المزدوج عليها، فستومض النافذة وتختفي بسرعة. لتشغيله، تحتاج إلى استخدام سطر الأوامر. انتقل إلى مجلد bin الخاص بك وأدخل curt متبوعًا بالخيارات المتاحة لك لتقديم الطلب. يجب عليك استخدام علامات الاقتباس المزدوجة. لن تعمل علامات الاقتباس المفردة مع الضفيرة على نظام التشغيل Windows.

أنت الآن بحاجة إلى إضافة الضفيرة إلى متغير مسار المستخدم حتى لا تضطر إلى الانتقال إلى المجلد الصحيح لتشغيل البرنامج. انتقل إلى هذا الكمبيوتر، الكمبيوتر، خصائص النظام، إعدادات النظام المتقدمة، وقم بتسجيل الدخول كمسؤول (أنت لست مسؤولاً، أليس كذلك؟). متغيرات البيئة، متغيرات النظام، انظر إلى القائمة وحدد المسار، ثم تحرير، ثم جديد، ثم على سبيل المثال.

Z:\Tools\curl-7.53.1-win64-MinGW\Bin

يمكنك إضافة شرطة مائلة عكسية إذا أردت، لا أعتقد أن ذلك مهم. اضغط على زر التحرك لأعلى حتى يصبح في أعلى القائمة ويمكنك رؤيته بسهولة من الشاشة السابقة. انقر فوق "موافق"، "موافق"، "موافق"، ثم افتح موجه الأوامر ويمكنك تشغيل "curl" عن طريق كتابة "curl" من أي مجلد كأي مستخدم. لا تنسى الاقتباسات المزدوجة الخاصة بك.

هذا هو الجواب الذي أود الحصول عليه.

كنت أبحث عن عملية التحميل لفةوفي كل مكان قالوا نسخ الملف curl.exe على System32، لكنهم لم يقدموا رابطًا مباشرًا. حتى تتمكن من الاستمتاع هنا حليقة.exeسهلة ل مجلد بنفقط

قم بفك ضغطه ثم انتقل إلى مجلد bin حيث ستحصل على ملف exe

لقد جعل هذا المثبت الأمر سهلاً بالنسبة لي http://www.confusedbycode.com/curl/

"يمكنك تثبيت cURL لنظام التشغيل Windows ببضع نقرات فقط. ما عليك سوى تنزيل برنامج التثبيت وتشغيله من الجدول أدناه والنقر فوق "تثبيت". يتضمن التثبيت الافتراضي.

غالبًا ما يتعين علينا تنزيل ملفات متنوعة من الإنترنت، على سبيل المثال، ملفات البرامج القابلة للتنفيذ، وملفات البرامج النصية، وأرشيفات المصدر. ولكن هذا لا يلزم دائمًا أن يتم من خلال المتصفح. في العديد من المواقف، يكون تنفيذ جميع الإجراءات من خلال الجهاز أسهل بكثير. لأنه بهذه الطريقة يمكنك أتمتة العملية. من ناحية أخرى، يتعين على مشرفي المواقع من وقت لآخر اختبار إمكانية الوصول إلى موقع الويب، والتحقق من العناوين المرسلة والمستلمة، وغير ذلك الكثير.

لحل مثل هذه المشكلات والمشكلات ذات النطاق المماثل، يمكنك استخدام الأداة المساعدة Curl. فهو يسمح لك بحل مجموعة واسعة من المشكلات، بما في ذلك حتى محاكاة إجراءات المستخدم على الموقع. في هذه المقالة سننظر في كيفية استخدام برنامج Curl وما هو ولماذا نحتاج إلى هذا البرنامج.

في الواقع، يعد curl أكثر من مجرد أداة مساعدة لسطر الأوامر لنظام التشغيل Linux أو Windows. هذه مجموعة من المكتبات التي تنفذ الإمكانيات الأساسية للعمل مع صفحات URL ونقل الملفات. تدعم المكتبة العمل مع البروتوكولات: FTP، FTPS، HTTP، HTTPS، TFTP، SCP، SFTP، Telnet، DICT، LDAP، بالإضافة إلى POP3، IMAP وSMTP. إنه أمر رائع لمحاكاة إجراءات المستخدم على الصفحات والعمليات الأخرى باستخدام عناوين URL.

تمت إضافة دعم مكتبة Curl إلى العديد من لغات ومنصات البرمجة المختلفة. الأداة المساعدة cur هي غلاف مستقل لهذه المكتبة. هذه هي الأداة التي سنركز عليها في هذه المقالة.

أمر حليقة

قبل الانتقال إلى وصف كيفية استخدام أمر Curl linux، دعونا نلقي نظرة على الأداة المساعدة نفسها وخياراتها الرئيسية التي سنحتاج إليها. بناء جملة الأداة بسيط للغاية:

رابط خيارات الضفيرة $

الآن دعونا نلقي نظرة على الخيارات الرئيسية:

  • -# - عرض شريط تقدم بسيط أثناء التحميل؛
  • -0 - استخدام بروتوكول http 1.0؛
  • -1 - استخدام بروتوكول التشفير tlsv1؛
  • -2 - استخدم sslv2؛
  • -3 - استخدم sslv3؛
  • -4 - استخدام IPv4؛
  • -6 - استخدام IPv6؛
  • - حدد USER_AGENT الخاص بك؛
  • - حفظ ملف تعريف الارتباط إلى ملف؛
  • - إرسال ملف تعريف الارتباط إلى الخادم من ملف؛
  • - متابعة تنزيل الملف من نقطة التوقف أو الإزاحة المحددة؛
  • - الحد الأقصى لوقت انتظار الرد من الخادم؛
  • - إرسال البيانات باستخدام طريقة POST؛
  • - حفظ الرؤوس التي أعادها الخادم إلى ملف؛
  • - قم بتعيين حقل Referer-uri، للإشارة إلى الموقع الذي جاء منه المستخدم؛
  • -E- استخدام شهادة SSL خارجية؛
  • -F- لا تعرض رسائل الخطأ.
  • -F- إرسال البيانات في شكل نموذج؛
  • - إذا تم تمكين هذا الخيار، فسيتم إرسال جميع البيانات المحددة في الخيار -d باستخدام طريقة GET؛
  • - نقل الرؤوس إلى الخادم؛
  • -أنا- تلقي رأس HTTP فقط وتجاهل محتوى الصفحة بالكامل؛
  • - قراءة وإرسال ملفات تعريف الارتباط من ملف؛
  • - إزالة الرأس من الطلب؛
  • - قبول ومعالجة عمليات إعادة التوجيه؛
  • - الحد الأقصى لعدد عمليات إعادة التوجيه باستخدام الموقع؛
  • - إخراج محتوى الصفحة إلى ملف؛
  • -O- حفظ المحتوى في ملف باسم الصفحة أو الملف الموجود على الخادم؛
  • - استخدام وكيل.
  • --بروتو- الإشارة إلى البروتوكول الذي سيتم استخدامه؛
  • - حفظ آخر وقت تعديل لملف بعيد؛
  • - عرض الحد الأدنى من المعلومات حول الأخطاء؛
  • - عرض رسائل الخطأ.
  • - تحميل الملف إلى الخادم؛
  • -الخامس- الإخراج الأكثر تفصيلا؛
  • -y- الحد الأدنى لسرعة التنزيل؛
  • -Y- أقصى سرعة للتنزيل؛
  • - تنزيل الملف فقط إذا تم تعديله بعد الوقت المحدد؛
  • -الخامس- عرض الإصدار.

لا يمثل هذا بأي حال من الأحوال كافة الخيارات المتاحة لـ curl linux، ولكنه يسرد الأساسيات التي ستحتاج إلى استخدامها.

كيفية استخدام الضفيرة؟

لقد تناولنا كل ما يتعلق بنظرية العمل مع الأداة المساعدة Curl، والآن حان الوقت للانتقال إلى التدريب وإلقاء نظرة على أمثلة لأمر Curl.

المهمة الأكثر شيوعا هي هذه. تنزيل الملف بسيط للغاية. للقيام بذلك، ما عليك سوى تمرير اسم الملف أو صفحة html إلى الأداة المساعدة في المعلمات:

حليقة https://raw.githubusercontent.com/curl/curl/master/README.md

ولكن هنا تنتظرك مفاجأة واحدة: سيتم إرسال محتويات الملف بالكامل إلى الإخراج القياسي. لكتابته على أي استخدام ملف:

حليقة -o readme.txt https://raw.githubusercontent.com/curl/curl/master/README.md

وإذا كنت تريد تسمية الملف الناتج بنفس اسم الملف الموجود على الخادم، فاستخدم الخيار -O:

حليقة -O https://raw.githubusercontent.com/curl/curl/master/README.md

حليقة -# -C - -O https://cdn.kernel.org/pub/linux/kernel/v4.x/testing/linux-4.11-rc7.tar.xz

إذا لزم الأمر، يمكنك تنزيل عدة ملفات بأمر واحد:

حليقة -O https://raw.githubusercontent.com/curl/curl/master/README.md -O https://raw.githubusercontent.com/curl/curl/master/README

الشيء الآخر الذي قد يكون مفيدًا للمسؤول هو تنزيل الملف فقط إذا تم تعديله:

curl -z 21 ديسمبر 17 https://raw.githubusercontent.com/curl/curl/master/README.md -O https://raw.githubusercontent.com/curl/curl/master/README

الحد الأقصى للسرعة

يمكنك تحديد سرعة التنزيل بالحد المطلوب حتى لا تفرط في الشبكة باستخدام الخيار -Y:

حليقة - معدل الحد 50K -O https://cdn.kernel.org/pub/linux/kernel/v4.x/testing/linux-4.11-rc7.tar.xz

تحتاج هنا إلى تحديد عدد الكيلوبايتات التي يمكن تنزيلها في الثانية. يمكنك أيضًا إنهاء الاتصال إذا كانت السرعة غير كافية، استخدم الخيار -Y للقيام بذلك:

حليقة -Y 100 -O https://raw.githubusercontent.com/curl/curl/master/README.md

نقل الملفات

حليقة -T تسجيل الدخول.txt ftp://speedtest.tele2.net/upload/

أو لنتأكد من إرسال الملف عبر HTTP؛ هناك خدمة خاصة بذلك:

حليقة -T ~/login.txt http://posttestserver.com/post.php

في الرد، ستخبرك الأداة المساعدة بالمكان الذي يمكنك العثور فيه على الملف الذي تم تنزيله.

إرسال بيانات ما بعد

لا يمكنك إرسال الملفات فحسب، بل يمكنك أيضًا إرسال أي بيانات باستخدام طريقة POST. اسمحوا لي أن أذكرك أن هذه الطريقة تستخدم لإرسال البيانات بأشكال مختلفة. لإرسال مثل هذا الطلب، استخدم الخيار -d. للاختبار سوف نستخدم نفس الخدمة:

حليقة -d "field1=val&fileld2=val1"http://posttestserver.com/post.php

إذا لم تكن راضيًا عن خيار الإرسال هذا، فيمكنك التظاهر بإرسال النموذج. هناك خيار لهذا -F:

حليقة -F "كلمة المرور=@pass;type=text/plain" http://posttestserver.com/post.php

نقوم هنا بتمرير حقل كلمة المرور بالنموذج كنص عادي، بنفس الطريقة التي يمكنك بها تمرير العديد من المعلمات.

إرسال واستقبال ملفات تعريف الارتباط

تستخدم مواقع الويب ملفات تعريف الارتباط لتخزين معلومات معينة من جانب المستخدم. قد يكون هذا ضروريًا، على سبيل المثال، للمصادقة. يمكنك إرسال واستقبال ملفات تعريف الارتباط باستخدام حليقة. لحفظ ملفات تعريف الارتباط المستلمة في ملف، استخدم الخيار -c:

حليقة -c cookie.txt http://posttestserver.com/post.php

يمكنك بعد ذلك إرسال ملف تعريف الارتباط الضفيرة مرة أخرى:

حليقة -b ملف تعريف الارتباط.txt http://posttestserver.com/post.php

نقل الرأس والتحليل

لا نحتاج بالضرورة دائمًا إلى محتوى الصفحة. في بعض الأحيان يمكن أن تكون العناوين الرئيسية فقط مثيرة للاهتمام. لعرضها فقط يوجد خيار -I:

حليقة -أنا https://site

ويتيح لك خيار -H إرسال عدة أو أكثر إلى الخادم، على سبيل المثال، يمكنك تمرير رأس If-Modified-Since بحيث لا يتم إرجاع الصفحة إلا إذا تم تعديلها:

مصادقة الضفيرة

إذا كان الخادم يتطلب أحد أنواع المصادقة الشائعة، مثل HTTP Basic أو FTP، فيمكن لـ curl التعامل مع هذه المهمة بسهولة شديدة. لتحديد تفاصيل المصادقة، ما عليك سوى تحديدها مفصولة بنقطتين في الخيار -u:

حليقة -u ftpuser:ftppass -T - ftp://ftp.testserver.com/myfile_1.txt

سيتم إجراء المصادقة على خوادم HTTP بنفس الطريقة.

باستخدام وكيل

إذا كنت بحاجة إلى استخدام خادم وكيل لتنزيل الملفات، فهذا أيضًا بسيط جدًا. يكفي تحديد عنوان الخادم الوكيل في الخيار -x:

حليقة -x proxysever.test.com:3128 http://google.co.in

الاستنتاجات

في هذه المقالة، نظرنا في كيفية استخدام تجعيد، ولماذا هناك حاجة إلى هذه الأداة المساعدة وقدراتها الرئيسية. على الرغم من التشابه بينهما، إلا أنهما مختلفان للغاية. تم تصميم الأمر curl linux بشكل أكبر لتحليل ومحاكاة الإجراءات المختلفة على الخادم، بينما يعد wget أكثر ملاءمة لتنزيل الملفات والزحف إلى المواقع.