Կայքը պահեք 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-ի սխալի արդյունքի հետ՝ որոշելու՝ ավարտված հարցումը կատարում է ձեր խնդիրը, թե ոչ։

Առնչվող հոդվածներ