لمصادقة البروكسي خيارات cURL خاصة. ضبط CURLOPT_USERPWD لدخول موقع لا يضبط حساب البروكسي، واختيار CURLOPT_HTTPAUTH لا يختار طريقة مصادقة البروكسي.

<?php
$user = 'proxy-user';
$password = getenv('PROXY_PASSWORD');
if ($password === false) {
    throw new RuntimeException('Set PROXY_PASSWORD');
}

$ch = curl_init('https://example.com/');
curl_setopt_array($ch, [
    CURLOPT_PROXY => 'http://203.0.113.10:8080',
    CURLOPT_NOPROXY => '',
    CURLOPT_PROXYUSERPWD =>
        rawurlencode($user) . ':' . rawurlencode($password),
    CURLOPT_PROXYAUTH => CURLAUTH_BASIC,
    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;

استبدل IP التوثيقي واستخدم بيانات الاعتماد المقدمة لذلك البروكسي. اختير Basic عمدًا في المثال؛ استخدم الطريقة المدعومة والمعتمدة لخدمتك بدل افتراض أن كل نقطة تحتاجها.

للحقل المدمج قاعدة ترميز

توثق libcurl أن CURLOPT_PROXYUSERPWD يفك ترميز URL لاسم المستخدم وكلمة المرور. يرمز المثال كل مكون قبل جمعهما بالفاصل. يهم ذلك إذا كان تسلسل نسبة مئوية حرفي أو رمز خاص آخر جزءًا من البيانات.

خيارات اسم المستخدم وكلمة المرور المنفصلة للبروكسي تقبل قيمها مباشرة:

curl_setopt($ch, CURLOPT_PROXYUSERNAME, $user);
curl_setopt($ch, CURLOPT_PROXYPASSWORD, $password);

استخدمها كصيغة بديلة قبل تنفيذ الطلب. لا تطبق قاعدة فك ترميز حقل البروكسي المدمج تلقائيًا على CURLOPT_USERPWD؛ توثق libcurl فرقًا بينهما.

افصل مراحل المصادقة

يختار CURLOPT_PROXYAUTH مصادقة البروكسي، بينما يختار CURLOPT_HTTPAUTH مصادقة HTTP مع الوجهة. إذا طلب الطرفان الدخول، فأعد الخيارات المناسبة لكل طرف بدل نسخ البيانات نفسها في الموضعين.

يسمح CURLAUTH_ANY بالتفاوض وقد يضيف تبادل تحدٍّ واستجابة قبل اختيار الطريقة. لا يثبت صحة البيانات. إضافة ترويسة Proxy-Authorization يدويًا أيضًا قد تتداخل مع معالجة المكتبة للمصادقة.

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

مقالات ذات صلة