Naudokite proxy IP su PHP cURL
Nustatykite HTTP arba SOCKS tarpinį serverį PHP cURL valdiklyje, laikykite svetainės URL atskirai ir skirkite perdavimo klaidas nuo HTTP atsakymų.
Svetainę palikite curl_init(), o tarpininką nustatykite tame valdiklyje. PHP reikia cURL plėtinio; veikianti terminalo programa curl neįrodo plėtinio pasiekiamumo.
<?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;Dokumentacijos IP ir prievadą pakeiskite savo HTTP tarpiniu serveriu arba įrašu iš HTTP tarpinių serverių sąrašo. CURLOPT_NOPROXY šiam bandymui pašalina apėjimo taisykles; CURLOPT_RETURNTRANSFER grąžina turinį, o ne siunčia jį naršyklei. Ryšio limitas apriboja užmezgimą, bendras laiko limitas — cURL operaciją.
SOCKS5 galiniam taškui pakeiskite HTTP tarpinio serverio parinktis prieš curl_exec():
curl_setopt($ch, CURLOPT_PROXY, '203.0.113.10:1080');
curl_setopt($ch, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS5_HOSTNAME);CURLPROXY_SOCKS5_HOSTNAME perduoda tikslo DNS SOCKS serveriui. Naudokite nurodytą protokolą; vien prievadas 1080 jo neidentifikuoja. Nė vienas pasirinkimas nereikalauja išjungti svetainės sertifikato tikrinimo.
$body === false tikrinkite griežtai. Tuščias turinys gali reikšti sėkmingą perdavimą, o tunelis gali sutrikti prieš atsirandant bet kokiam svetainės atsakymui. Ir atvirkščiai, netuščias turinys gali lydėti 403, 404 ar 429. Skaitykite CURLINFO_RESPONSE_CODE kartu su cURL klaidos rezultatu, kad nuspręstumėte, ar užbaigta užklausa atlieka užduotį.