ویب سائٹ 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 خرابی کے نتیجے کے ساتھ پڑھیں تاکہ معلوم ہو مکمل درخواست آپ کا کام پورا کرتی ہے یا نہیں۔

متعلقہ مضامین