استخدام عنوان IP لوكيل مع PHP cURL
اضبط وكيل HTTP أو SOCKS على مقبض PHP cURL، وافصل عنوان الموقع وميّز أخطاء النقل من استجابات HTTP.
اترك الموقع في curl_init() واضبط الوسيط على ذلك المقبض. يحتاج PHP إلى امتداد cURL؛ عمل البرنامج التنفيذي curl في الطرفية لا يثبت أن الامتداد متاح.
<?php
$ch = curl_init('https://example.com/');
curl_setopt_array($ch, [
CURLOPT_PROXY => 'http://203.0.113.10:8080',
CURLOPT_PROXYTYPE => CURLPROXY_HTTP,
CURLOPT_NOPROXY => '',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CONNECTTIMEOUT => 5,
CURLOPT_TIMEOUT => 15,
]);
$body = curl_exec($ch);
if ($body === false) {
throw new RuntimeException(curl_error($ch), curl_errno($ch));
}
echo curl_getinfo($ch, CURLINFO_RESPONSE_CODE), PHP_EOL;
echo $body;استبدل عنوان IP والمنفذ التوثيقيين بوكيل HTTP الخاص بك أو بإدخال من قائمة وكلاء HTTP. يمحو CURLOPT_NOPROXY قواعد التجاوز لهذا الاختبار؛ ويعيد CURLOPT_RETURNTRANSFER جسم الاستجابة بدل إرساله إلى المتصفح. يحدّ زمن الاتصال مرحلة الإنشاء، وتحدّ المهلة الإجمالية عملية cURL.
لنقطة اتصال SOCKS5، استبدل خيارات وكيل HTTP قبل curl_exec():
curl_setopt($ch, CURLOPT_PROXY, '203.0.113.10:1080');
curl_setopt($ch, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS5_HOSTNAME);يفوّض CURLPROXY_SOCKS5_HOSTNAME DNS الوجهة إلى خادم SOCKS. استخدم البروتوكول المعلن؛ المنفذ 1080 وحده لا يحدّده. لا يتطلب أي من خياري الوكيل تعطيل التحقق من شهادة الموقع.
اختبر $body === false بمقارنة صارمة. قد يعني الجسم الفارغ نقلًا ناجحًا، بينما قد يفشل النفق قبل وجود أي استجابة من الموقع. وبالعكس، قد يرافق الجسم غير الفارغ رمز 403 أو 404 أو 429. اقرأ CURLINFO_RESPONSE_CODE مع نتيجة خطأ cURL لتقرّر هل يخدم الطلب المكتمل مهمتك.