Usa unha IP proxy con PHP cURL
Configura un proxy HTTP ou SOCKS nun handle PHP cURL, mantén separado o URL do sitio e distingue erros de transporte de respostas HTTP.
Mantén o sitio web en curl_init() e configura o intermediario nese handle. PHP necesita a extensión cURL; que o executable curl funcione no terminal non demostra que a extensión estea dispoñible.
<?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;Substitúe a IP e o porto de documentación polo teu proxy HTTP ou unha entrada da lista de proxys HTTP. CURLOPT_NOPROXY borra as regras de exclusión para esta proba; CURLOPT_RETURNTRANSFER devolve o corpo en vez de envialo ao navegador. O límite de conexión acouta o establecemento e o tempo límite global limita a operación cURL.
Para un punto SOCKS5, substitúe as opcións do proxy HTTP antes de curl_exec():
curl_setopt($ch, CURLOPT_PROXY, '203.0.113.10:1080');
curl_setopt($ch, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS5_HOSTNAME);CURLPROXY_SOCKS5_HOSTNAME delega o DNS do destino no servidor SOCKS. Usa o protocolo indicado; o porto 1080 só non o identifica. Ningunha das opcións require desactivar a verificación do certificado do sitio.
Comproba $body === false estritamente. Un corpo baleiro pode ser unha transferencia correcta, mentres que un túnel pode fallar antes de que exista resposta ningunha do sitio. Pola contra, un corpo non baleiro pode acompañar un 403, 404 ou 429. Le CURLINFO_RESPONSE_CODE xunto co resultado de erro de cURL para decidir se a petición completada cumpre a túa tarefa.