Použite IP proxy s PHP cURL
Nastavte HTTP či SOCKS proxy na PHP cURL handle, URL webu ponechajte oddelene a rozlišujte prenosové chyby od odpovedí HTTP.
Web ponechajte v curl_init() a sprostredkovateľa nastavte na tomto handle. PHP potrebuje rozšírenie cURL; funkčný program curl v termináli nedokazuje dostupnosť rozšírenia.
<?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;Dokumentačnú IP a port nahraďte vlastnou HTTP proxy alebo položkou zo zoznamu HTTP proxy. CURLOPT_NOPROXY pre tento test zruší pravidlá obchádzania; CURLOPT_RETURNTRANSFER vráti telo namiesto odoslania do prehliadača. Limit pripojenia obmedzuje nadväzovanie a celkový časový limit operáciu cURL.
Pre koncový bod SOCKS5 nahraďte voľby HTTP proxy pred curl_exec():
curl_setopt($ch, CURLOPT_PROXY, '203.0.113.10:1080');
curl_setopt($ch, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS5_HOSTNAME);CURLPROXY_SOCKS5_HOSTNAME odovzdáva DNS cieľa SOCKS serveru. Použite uvedený protokol; samotný port 1080 ho neurčuje. Ani jedna možnosť proxy nevyžaduje vypnutie overovania certifikátu webu.
$body === false testujte striktne. Prázdne telo môže znamenať úspešný prenos, kým tunel môže zlyhať skôr než príde akákoľvek odpoveď webu. Naopak neprázdne telo môže sprevádzať 403, 404 či 429. Čítajte CURLINFO_RESPONSE_CODE spolu s chybovým výsledkom cURL, aby ste rozhodli, či dokončená požiadavka plní váš cieľ.