Izmantojiet proxy IP ar PHP cURL
Iestatiet HTTP vai SOCKS starpniekserveri PHP cURL rokturī, vietnes URL atstājiet atsevišķi un atšķiriet transporta kļūdas no HTTP atbildēm.
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.