PHP cURL দিয়ে প্রক্সি IP ব্যবহার করুন
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 ত্রুটির ফল দেখুন।