ୱେବସାଇଟ୍ 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 ତ୍ରୁଟି ଫଳ ସହ ପଢ଼ନ୍ତୁ।

ସମ୍ପର୍କିତ ପ୍ରବନ୍ଧ