Gumamit ng proxy IP sa PHP cURL
Magtakda ng HTTP o SOCKS proxy sa PHP cURL handle, ihiwalay ang URL ng website at pag-ibahin ang transport error sa HTTP response.
Panatilihin ang website sa curl_init() at itakda ang tagapamagitan sa handle na iyon. Kailangan ng PHP ang cURL extension nito; hindi patunay na available ang extension ang gumaganang curl executable sa terminal.
<?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;Palitan ang IP at port na pangdokumentasyon ng iyong HTTP proxy o entry mula sa listahan ng mga HTTP proxy. Nililinis ng CURLOPT_NOPROXY ang mga bypass rule para sa test na ito; ibinabalik ng CURLOPT_RETURNTRANSFER ang body sa halip na ipadala sa browser. Nililimitahan ng connection limit ang setup at ng kabuuang timeout ang operasyon ng cURL.
Para sa SOCKS5 endpoint, palitan ang mga HTTP proxy option bago ang curl_exec():
curl_setopt($ch, CURLOPT_PROXY, '203.0.113.10:1080');
curl_setopt($ch, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS5_HOSTNAME);Ipinauubaya ng CURLPROXY_SOCKS5_HOSTNAME ang destination DNS sa SOCKS server. Gamitin ang nakasaad na protocol; hindi ito matutukoy sa port 1080 lang. Walang proxy choice na nangangailangang patayin ang certificate verification ng website.
Suriin ang $body === false nang mahigpit. Maaaring matagumpay na transfer ang walang laman na body, habang maaaring pumalya ang tunnel bago magkaroon ng anumang response mula sa website. Sa kabilang banda, maaaring may laman ang body kasabay ng 403, 404 o 429. Basahin ang CURLINFO_RESPONSE_CODE kasama ng error result ng cURL upang malaman kung natutugunan ng tapos na request ang iyong gawain.