Fes servir una IP proxy amb PHP cURL
Configura un proxy HTTP o SOCKS en un identificador PHP cURL, mantén separat l’URL del lloc i distingeix errors de transport de respostes HTTP.
Mantén el lloc web a curl_init() i configura l’intermediari en aquell identificador. PHP necessita l’extensió cURL; que l’executable curl funcioni al terminal no demostra que l’extensió estigui disponible.
<?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;Substitueix la IP i el port de documentació pel teu proxy HTTP o una entrada de la llista de proxys HTTP. CURLOPT_NOPROXY esborra les regles d’exclusió per a aquesta prova; CURLOPT_RETURNTRANSFER retorna el cos en comptes d’enviar-lo al navegador. El límit de connexió acota l’establiment i el temps límit global limita l’operació cURL.
Per a un punt SOCKS5, substitueix les opcions del proxy HTTP abans 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 el DNS del destí al servidor SOCKS. Utilitza el protocol indicat; el port 1080 sol no l’identifica. Cap de les dues opcions de proxy requereix desactivar la verificació del certificat del lloc.
Comprova $body === false estrictament. Un cos buit pot ser una transferència reeixida, mentre que un túnel pot fallar abans que existeixi cap resposta del lloc. A la inversa, un cos no buit pot acompanyar un 403, 404 o 429. Llegeix CURLINFO_RESPONSE_CODE juntament amb el resultat d’error de cURL per decidir si la petició completada serveix per a la teva tasca.