Выкарыстоўвайце IP проксі з PHP cURL
Наладзьце HTTP або SOCKS проксі на PHP cURL-дэскрыптары, аддзяліце 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, каб вырашыць, ці выконвае завершаны запыт вашу задачу.