వెబ్‌సైట్‌ను 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 లోప ఫలితంతో కలిపి చదవండి.

సంబంధిత వ్యాసాలు