PHP cURL-д прокси IP ашиглах
PHP cURL handle дээр HTTP эсвэл SOCKS прокси тохируулж, сайтын URL-ийг тусад нь хадгалан, дамжуулалтын алдааг HTTP хариунаас ялга.
Сайтыг curl_init() дотор үлдээж, зуучлагчийг тэр handle дээр тохируул. 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 алдааны үр дүнтэй хамт унш.