La nettstedet stå i curl_init() og angi mellomleddet på det håndtaket. PHP må ha cURL-utvidelsen; at curl virker i terminalen, dokumenterer ikke at utvidelsen finnes.

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

Bytt ut dokumentasjonens IP og port med din HTTP-proxy eller en oppføring i listen over HTTP-proxyer. CURLOPT_NOPROXY fjerner omgåelsesreglene for denne testen; CURLOPT_RETURNTRANSFER gir innholdet tilbake i stedet for å sende det til nettleseren. Forbindelsestidsgrensen setter rammer for opprettelsen, og totalfristen begrenser hele cURL-operasjonen.

Skal du bruke et SOCKS5-endepunkt, erstatt HTTP-proxyalternativene 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 lar SOCKS-serveren håndtere DNS for målet. Bruk protokollen som er oppgitt; port 1080 alene fastslår den ikke. Ingen av de to valgene krever å slå av kontrollen av nettstedets sertifikat.

Kontroller $body === false med streng sammenligning. En tom responskropp kan bety vellykket overføring, mens tunnelen kan svikte før nettstedet har gitt noe svar. Samtidig kan en kropp med innhold komme med 403, 404 eller 429. Vurder CURLINFO_RESPONSE_CODE sammen med cURLs feilresultat for å avgjøre om den fullførte forespørselen er nyttig for oppgaven.

Relaterte artikler