Hald nettstaden i curl_init() og set mellomleddet på det handtaket. PHP treng cURL-utvidinga si; eit fungerande curl-program i terminalen provar ikkje at utvidinga er tilgjengeleg.

<?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;

Erstatt dokumentasjons-IP og port med din HTTP-proxy eller ei oppføring frå lista over HTTP-proxyar. CURLOPT_NOPROXY tømmer omgåingsreglar for denne testen; CURLOPT_RETURNTRANSFER returnerer innhaldet i staden for å sende det til nettlesaren. Tilkoplingsgrensa avgrensar oppsettet, og den samla tidsgrensa avgrensar cURL-operasjonen.

For eit SOCKS5-endepunkt, erstatt HTTP-proxyvala før curl_exec():

curl_setopt($ch, CURLOPT_PROXY, '203.0.113.10:1080');
curl_setopt($ch, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS5_HOSTNAME);

CURLPROXY_SOCKS5_HOSTNAME overlet DNS for målet til SOCKS-tenaren. Bruk den oppgjevne protokollen; port 1080 åleine identifiserer han ikkje. Ingen av proxyvala krev å deaktivere sertifikatkontrollen til nettstaden.

Test $body === false strengt. Tomt innhald kan vere ei vellukka overføring, medan ein tunnel kan feile før noko svar frå nettstaden finst. Omvendt kan ikkje-tomt innhald følgje med 403, 404 eller 429. Les CURLINFO_RESPONSE_CODE saman med feilresultatet frå cURL for å avgjere om den avslutta førespurnaden fyller oppgåva di.

Relaterte artiklar