Koristite proxy IP s PHP cURL-om
Postavite HTTP ili SOCKS proxy na PHP cURL handle, odvojite URL stranice i razlikujte transportne pogreške od HTTP odgovora.
Zadržite web-stranicu u curl_init(), a posrednika postavite na taj handle. PHP treba svoje cURL proširenje; ispravan terminalski curl program ne dokazuje da je proširenje dostupno.
<?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;Zamijenite dokumentacijski IP i priključak vlastitim HTTP proxyjem ili unosom iz popisa HTTP proxyja. CURLOPT_NOPROXY uklanja pravila zaobilaženja za ovaj test; CURLOPT_RETURNTRANSFER vraća tijelo umjesto da ga šalje pregledniku. Ograničenje povezivanja obuhvaća uspostavu, a ukupni vremenski limit ograničava cURL operaciju.
Za SOCKS5 krajnju točku zamijenite HTTP proxy opcije prije curl_exec():
curl_setopt($ch, CURLOPT_PROXY, '203.0.113.10:1080');
curl_setopt($ch, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS5_HOSTNAME);CURLPROXY_SOCKS5_HOSTNAME prepušta DNS odredišta SOCKS poslužitelju. Koristite navedeni protokol; sam priključak 1080 ga ne određuje. Nijedan izbor proxyja ne zahtijeva isključivanje provjere certifikata stranice.
Strogo provjeravajte $body === false. Prazno tijelo može biti uspješan prijenos, dok se pogreška tunela može javiti prije bilo kakvog odgovora stranice. Obrnuto, neprazno tijelo može pratiti 403, 404 ili 429. Čitajte CURLINFO_RESPONSE_CODE uz rezultat pogreške cURL-a da biste utvrdili služi li dovršeni zahtjev vašem zadatku.