გამოიყენეთ პროქსი IP PHP cURL-ით
PHP cURL სახელურზე გამართეთ HTTP ან SOCKS პროქსი, საიტის URL ცალკე შეინახეთ და ტრანსპორტის შეცდომები HTTP პასუხებისგან განასხვავეთ.
საიტი დატოვეთ curl_init()-ში, შუამავალი კი იმ სახელურზე გამართეთ. PHP-ს cURL გაფართოება სჭირდება; ტერმინალში მომუშავე curl პროგრამა გაფართოების ხელმისაწვდომობას არ ამტკიცებს.
<?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;დოკუმენტაციის IP და პორტი შეცვალეთ თქვენი HTTP პროქსით ან HTTP პროქსიების სიიდან აღებული ჩანაწერით. CURLOPT_NOPROXY ამ ტესტისთვის შემოვლის წესებს ასუფთავებს; CURLOPT_RETURNTRANSFER სხეულს აბრუნებს, ბრაუზერში გაგზავნის ნაცვლად. კავშირის ლიმიტი დამყარებას ზღუდავს, საერთო დროის ლიმიტი კი cURL ოპერაციას.
SOCKS5 ბოლო წერტილისთვის HTTP პროქსის პარამეტრები შეცვალეთ curl_exec()-მდე:
curl_setopt($ch, CURLOPT_PROXY, '203.0.113.10:1080');
curl_setopt($ch, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS5_HOSTNAME);CURLPROXY_SOCKS5_HOSTNAME დანიშნულების DNS-ს SOCKS სერვერს ანდობს. გამოიყენეთ მითითებული პროტოკოლი; მარტო 1080 პორტი მას ვერ განსაზღვრავს. პროქსის არც ერთი ვარიანტი არ მოითხოვს საიტის სერტიფიკატის შემოწმების გამორთვას.
$body === false მკაცრი შედარებით შეამოწმეთ. ცარიელი სხეული შეიძლება წარმატებულ გადაცემას ნიშნავდეს, ხოლო გვირაბი საიტის რაიმე პასუხის მიღებამდე შეიძლება ჩავარდეს. პირიქით, არაცარიელ სხეულს შეიძლება 403, 404 ან 429 ახლდეს. CURLINFO_RESPONSE_CODE წაიკითხეთ cURL-ის შეცდომის შედეგთან ერთად, რათა გადაწყვიტოთ, ასრულებს თუ არა დასრულებული მოთხოვნა თქვენს ამოცანას.