Օգտագործեք պրոքսի IP՝ PHP cURL-ով
PHP cURL բռնակի վրա կարգավորեք HTTP կամ SOCKS պրոքսի, կայքի URL-ը պահեք առանձին ու տարբերակեք փոխանցման սխալները HTTP պատասխաններից։
Կայքը պահեք 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-ի սխալի արդյունքի հետ՝ որոշելու՝ ավարտված հարցումը կատարում է ձեր խնդիրը, թե ոչ։