Proksi-IP kasutamine PHP cURL-iga
Määra PHP cURL-pidemele HTTP- või SOCKS-puhverserver, hoia veebisaidi URL eraldi ning erista transpordivigu HTTP-vastustest.
Hoia veebisait curl_init() sees ja määra vahendaja sellele pidemele. PHP vajab cURL-laiendust; töötav terminali curl-programm ei tõenda laienduse kättesaadavust.
<?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;Asenda dokumentatsiooni IP ja port oma HTTP-puhverserveri või kirjega HTTP-puhverserverite loendist. CURLOPT_NOPROXY kustutab selle testi jaoks möödaviigureeglid; CURLOPT_RETURNTRANSFER tagastab sisu selle brauserile saatmise asemel. Ühenduse ajalimiit piirab loomist ja üldine ajalimiit cURL-toimingut.
SOCKS5-lõpp-punkti jaoks asenda HTTP-puhverserveri valikud enne curl_exec():
curl_setopt($ch, CURLOPT_PROXY, '203.0.113.10:1080');
curl_setopt($ch, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS5_HOSTNAME);CURLPROXY_SOCKS5_HOSTNAME annab sihtkoha DNS-i SOCKS-serveri hoolde. Kasuta märgitud protokolli; port 1080 üksi ei tuvasta seda. Kumbki valik ei nõua veebisaidi serdikontrolli väljalülitamist.
Kontrolli $body === false rangelt. Tühi sisu võib tähendada edukat edastust, samas kui tunneli tõrge võib tekkida enne mis tahes veebisaidi vastust. Seevastu mittetühja sisuga võib kaasneda 403, 404 või 429. Loe CURLINFO_RESPONSE_CODE koos cURL-i veatulemusega, et otsustada, kas lõppenud päring täidab ülesande.