وېبپاڼه په 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 د تېروتنې له پایلې سره یو ځای ولولئ، څو پوه شئ چې بشپړې شوې غوښتنې مو کار ترسره کړی که نه.

اړوندې مقالې