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.

Articles relacionats