Atstājiet vietni curl_init() un iestatiet starpnieku šajā rokturī. PHP vajag cURL paplašinājumu; strādājoša termināļa programma curl nepierāda paplašinājuma pieejamību.

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

Aizstājiet dokumentācijas IP un portu ar savu HTTP starpniekserveri vai ierakstu no HTTP starpniekserveru saraksta. CURLOPT_NOPROXY šim testam iztīra apiešanas noteikumus; CURLOPT_RETURNTRANSFER atgriež saturu, nevis sūta to pārlūkam. Savienojuma limits ierobežo izveidi, bet kopējais laika limits — cURL darbību.

SOCKS5 galapunktam aizstājiet HTTP starpniekservera opcijas pirms curl_exec():

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

CURLPROXY_SOCKS5_HOSTNAME nodod mērķa DNS SOCKS serverim. Izmantojiet norādīto protokolu; ports 1080 viens pats to neidentificē. Neviena izvēle neprasa izslēgt vietnes sertifikāta pārbaudi.

Pārbaudiet $body === false stingri. Tukšs saturs var būt veiksmīga pārsūtīšana, bet tunelis var atteikties, pirms ir jebkāda vietnes atbilde. Savukārt netukšs saturs var būt kopā ar 403, 404 vai 429. Lasiet CURLINFO_RESPONSE_CODE līdzās cURL kļūdas rezultātam, lai izlemtu, vai pabeigtais pieprasījums izpilda uzdevumu.

Saistītie raksti