Uzu prokurilan IP kun PHP cURL
Agordu HTTP- aŭ SOCKS-prokurilon ĉe PHP-cURL-tenilo, tenu la retejan URL aparta kaj distingu transporterarojn de HTTP-respondoj.
Tenu la retejon en curl_init() kaj agordu la peranton ĉe tiu tenilo. PHP bezonas sian cURL-etendaĵon; funkcianta terminala curl-programo ne pruvas ke la etendaĵo disponeblas.
<?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;Anstataŭigu la dokumentan IP kaj pordon per via HTTP-prokurilo aŭ ero el la listo de HTTP-prokuriloj. CURLOPT_NOPROXY forigas preterirajn regulojn por ĉi tiu testo; CURLOPT_RETURNTRANSFER redonas la korpon anstataŭ sendi ĝin al la retumilo. La konektolimo limigas starigon kaj la ĝenerala tempolimo limigas la cURL-operacion.
Por SOCKS5-finpunkto anstataŭigu la HTTP-prokurilajn opciojn antaŭ curl_exec():
curl_setopt($ch, CURLOPT_PROXY, '203.0.113.10:1080');
curl_setopt($ch, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS5_HOSTNAME);CURLPROXY_SOCKS5_HOSTNAME delegas la celan DNS al la SOCKS-servilo. Uzu la deklaritan protokolon; pordo 1080 sola ne povas identigi ĝin. Nek prokurila elekto postulas malŝalti la retejan atestilkontrolon.
Testu $body === false strikte. Malplena korpo povas esti sukcesa transdono, dum tunela malsukceso povas okazi antaŭ ekzisto de iu reteja respondo. Male, nemalplena korpo povas akompani 403, 404 aŭ 429. Legu CURLINFO_RESPONSE_CODE kune kun la erarrezulto de cURL por decidi ĉu la finita peto servas vian taskon.