Použijte IP proxy s PHP cURL
Nastavte HTTP či SOCKS proxy na PHP cURL handle, ponechte URL webu odděleně a rozlišujte přenosové chyby od odpovědí HTTP.
Web ponechte v curl_init() a prostředníka nastavte na tomto handle. PHP potřebuje rozšíření cURL; funkční program curl v terminálu nedokazuje dostupnost rozšíření.
<?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 vlastní HTTP proxy nebo položkou ze seznamu HTTP proxy. CURLOPT_NOPROXY pro tento test smaže pravidla obcházení; CURLOPT_RETURNTRANSFER vrací tělo místo odeslání do prohlížeče. Limit připojení omezuje navazování a celkový časový limit omezuje operaci cURL.
Pro koncový bod SOCKS5 nahraďte volby HTTP proxy před curl_exec():
curl_setopt($ch, CURLOPT_PROXY, '203.0.113.10:1080');
curl_setopt($ch, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS5_HOSTNAME);CURLPROXY_SOCKS5_HOSTNAME předává DNS cíle serveru SOCKS. Použijte uvedený protokol; samotný port 1080 jej neurčuje. Ani jedna varianta proxy nevyžaduje vypnutí ověřování certifikátu webu.
$body === false testujte striktně. Prázdné tělo může znamenat úspěšný přenos, zatímco selhání tunelu může nastat dříve než jakákoli odpověď webu. Naopak neprázdné tělo může doprovázet 403, 404 nebo 429. Čtěte CURLINFO_RESPONSE_CODE spolu s chybovým výsledkem cURL, abyste rozhodli, zda dokončený požadavek plní váš úkol.