Користите прокси IP уз PHP cURL
Поставите HTTP или SOCKS прокси на PHP cURL handle, одвојите 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 резултат грешке да бисте утврдили служи ли завршени захтев вашем задатку.