वेबसाइट 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 त्रुटि परिणामसँग पढ्नुहोस्।

सम्बन्धित लेखहरू