يقبل خيار proxy في Guzzle عنوان URL كاملًا لنقطة الاتصال. عيّنه في الطلب عندما تريد لهذه العملية وحدها استخدام IP المختار.

<?php
require __DIR__ . '/vendor/autoload.php';

$client = new GuzzleHttp\Client();
$response = $client->request('GET', 'https://example.com/', [
    'proxy' => 'http://203.0.113.10:8080',
    'connect_timeout' => 5,
    'timeout' => 15,
    'http_errors' => false,
]);

echo $response->getStatusCode(), PHP_EOL;
echo (string) $response->getBody();

يفترض المثال تثبيت Guzzle 7 عبر Composer. استبدل العنوان التوثيقي ببروكسي HTTP فعلي من المزود أو قائمة وكلاء HTTP. أبقِ الوجهة في URL الطلب: البروكسي وسيط وليس المورد الذي يُنزّل.

هنا http_errors هو false لتظل استجابة خطأ HTTP متاحة للفحص. إخفاقات الاتصال ما زالت ترمي استثناءات نقل. لذلك قد يفشل نفق HTTPS مرفوض أثناء الإعداد قبل أن تتلقى كائن استجابة عاديًا من الموقع.

افحص المعالج عندما تختلف حدود الاتصال

يمكن لـGuzzle استخدام معالجات HTTP مختلفة. تقول وثائقه إن معالج cURL المدمج يدعم connect_timeout. المعالج المخصص أو بيئة بلا PHP cURL ليسا بالضرورة مكافئين. افحص معالج التطبيق قبل افتراض أن خيار المهلة المنسوخ يعمل.

يستحق timeout الإجمالي التعيين أيضًا. قد تتوقف سجلات القوائم المجانية عن الرد بين الفحوصات، والقيمة الافتراضية ليست موعدًا نهائيًا مفيدًا لطلب يجب أن ينتهي سريعًا.

استخدام خريطة بروكسي

تتيح الخريطة اختيار المسارات بحسب مخطط الوجهة وتحديد مضيفين صراحة لتجاوز البروكسي:

'proxy' => [
    'http' => 'http://203.0.113.10:8080',
    'https' => 'http://203.0.113.10:8080',
    'no' => [],
],

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

عندما تقدم خيار proxy للطلب بنفسك، يتوقع Guzzle أن تقدم قيم no المطلوبة، بدل نسخها تلقائيًا من NO_PROXY. القائمة الفارغة مفيدة لاختبار بروكسي معزول. إن كانت للتطبيق قواعد تجاوز مقصودة، فاحتفظ بها صراحة.

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