Proxy-IP:n käyttäminen PHP cURLin kanssa
Aseta HTTP- tai SOCKS-välityspalvelin PHP cURL -kahvaan, pidä sivuston URL erillään ja erota siirtovirheet HTTP-vastauksista.
Pidä verkkosivusto kohdassa curl_init() ja aseta välittäjä kyseiseen kahvaan. PHP tarvitsee cURL-laajennuksensa; toimiva komentorivin curl-ohjelma ei osoita laajennuksen olevan saatavilla.
<?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;Korvaa dokumentaation IP ja portti omalla HTTP-välityspalvelimellasi tai merkinnällä HTTP-välityspalvelinten luettelosta. CURLOPT_NOPROXY tyhjentää ohitussäännöt tätä testiä varten; CURLOPT_RETURNTRANSFER palauttaa sisällön sen sijaan että lähettäisi sen selaimelle. Yhteysraja rajoittaa muodostamista ja kokonaisaikaraja cURL-toimintoa.
Korvaa SOCKS5-päätepistettä varten HTTP-välityspalvelinasetukset ennen kohtaa curl_exec():
curl_setopt($ch, CURLOPT_PROXY, '203.0.113.10:1080');
curl_setopt($ch, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS5_HOSTNAME);CURLPROXY_SOCKS5_HOSTNAME siirtää kohteen DNS:n SOCKS-palvelimelle. Käytä ilmoitettua protokollaa; pelkkä portti 1080 ei tunnista sitä. Kumpikaan välityspalvelinvalinta ei vaadi sivuston varmenteen tarkistuksen poistamista käytöstä.
Testaa $body === false tarkasti. Tyhjä sisältö voi merkitä onnistunutta siirtoa, kun taas tunneli voi epäonnistua ennen minkäänlaista sivuston vastausta. Toisaalta ei-tyhjään sisältöön voi liittyä 403, 404 tai 429. Lue CURLINFO_RESPONSE_CODE yhdessä cURLin virhetuloksen kanssa ratkaistaksesi, palveleeko valmistunut pyyntö tehtävääsi.