ድረ ገጹን በ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 የስህተት ውጤት ጋር ያንብቡ።

ተዛማጅ ጽሑፎች