Uporabite IP proxyja s PHP cURL
Nastavite HTTP ali SOCKS proxy na ročico PHP cURL, URL spletne strani pustite ločen in razlikujte transportne napake od odgovorov HTTP.
Spletno stran ohranite v curl_init(), posrednika pa nastavite na tej ročici. PHP potrebuje razširitev cURL; delujoč terminalski program curl ne dokazuje njene razpoložljivosti.
<?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;Dokumentacijski IP in vrata nadomestite s svojim proxyjem HTTP ali vnosom s seznama proxyjev HTTP. CURLOPT_NOPROXY počisti pravila obhoda za ta preizkus; CURLOPT_RETURNTRANSFER vrne telo, namesto da bi ga poslal brskalniku. Omejitev povezave omeji vzpostavitev, skupna časovna omejitev pa operacijo cURL.
Za končno točko SOCKS5 nadomestite možnosti proxyja HTTP pred curl_exec():
curl_setopt($ch, CURLOPT_PROXY, '203.0.113.10:1080');
curl_setopt($ch, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS5_HOSTNAME);CURLPROXY_SOCKS5_HOSTNAME prepusti DNS cilja strežniku SOCKS. Uporabite navedeni protokol; samo vrata 1080 ga ne določajo. Nobena od možnosti proxyja ne zahteva izklopa preverjanja potrdila spletne strani.
$body === false preverjajte strogo. Prazno telo je lahko uspešen prenos, medtem ko predor lahko odpove, še preden obstaja kakršen koli odgovor strani. Nasprotno lahko neprazno telo spremlja 403, 404 ali 429. Preberite CURLINFO_RESPONSE_CODE skupaj z rezultatom napake cURL, da presodite, ali dokončana zahteva izpolnjuje vašo nalogo.