প্রক্সি দিয়ে কীভাবে সিআরএল ব্যবহার করবেন?


128

আমি একটি প্রক্সি সার্ভার ব্যবহার করতে কার্ল সেট করতে খুঁজছি। Url এইচটিএমএল ফর্ম দ্বারা সরবরাহ করা হয়েছে, যা কোনও সমস্যা হয়নি a প্রক্সি ছাড়া এটি সূক্ষ্ম কাজ করে। আমি এই এবং অন্যান্য সাইটে কোড পেয়েছি, তবে সেগুলি কার্যকর হয় না। সঠিক সমাধান অনুসন্ধানে যে কোনও সহায়তা করা অনেক প্রশংসিত হবে। আমি অনুভব করি যে বেলো কাছাকাছি, তবে আমি কিছু অনুভব করছি। ধন্যবাদ.

বেলো কোডটি আমি এখান থেকে গ্রহণ করেছি http://www.webmasterworld.com/forum88/10572.htm তবে এটি 12 লাইনটিতে একটি অনুপস্থিত T_VARIABLE সম্পর্কে একটি ত্রুটি বার্তা দেয়।

<?

$url = '$_POST[1]';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, 0);
curl_setopt($ch, CURLOPT_PROXY, '66.96.200.39:80');
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 0);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST,'GET');
curl_setopt ($ch, CURLOPT_HEADER, 1)
curl_exec ($ch); 
$curl_info = curl_getinfo($ch);
curl_close($ch);
echo '<br />';
print_r($curl_info);
?>

বেলো প্রক্সির মাধ্যমে কার্ল থেকে আসে কোনও সামগ্রী দেয় না

<?

$proxy = "66.96.200.39:80";
$proxy = explode(':', $proxy);
$url = "$_POST[1]";

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_PROXY, $proxy[0]);
curl_setopt($ch, CURLOPT_PROXYPORT, $proxy[1]);
curl_setopt($ch, CURLOPT_HEADER, 1);

$exec = curl_exec($ch);

echo curl_error($ch);
print_r(curl_getinfo($ch));
echo $exec;
?>

বর্তমানে পেলিকান এসমেন্ট ডটকম-এ লাইভ থাকলেও কার্যকর হয় না।

আপডেট: আপনার সমস্ত সহায়তার জন্য আপনাকে ধন্যবাদ, আমি উপরের পরিবর্তনগুলি করেছি। এখন এটি কেবল একটি ফাঁকা স্ক্রিন দেয়।

<?

$url = $_POST['1'];
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, 0);
curl_setopt($ch, CURLOPT_PROXY, '66.96.200.39:80');
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 0);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST,'GET');
curl_setopt ($ch, CURLOPT_HEADER, 1);
curl_exec ($ch); 
$curl_scraped_page = curl_exec($ch);
curl_close($ch);

echo $curl_scraped_page;
?> 

3
আপনি 12 রেখায় একটি সেমিকোলন মিস করছেন
পেক্কা

এছাড়াও, আপনার $ url = '$ _POST [1]' থেকে $ url = $ _POST [1] এ পরিবর্তন করা দরকার - অন্যথায়,
want

এছাড়াও, $_POST['1']
_P

2
Pelican-cement.com- এ ফর্মটির "ফার্স্টনাম" এবং "শেষ নাম" এর ইনপুট রয়েছে তবে "1" নামটির কোনওটিই নেই।
জন ফ্ল্যাটনেস

2
@ user586011: দয়া করে নীচের উত্তর হিসাবে আপনার সমাধান যুক্ত করুন এবং এটি গ্রহণ করুন। প্রশ্নের সমাধানটি রাখবেন না, এটি ভাল কাজ করে না।
hakre

উত্তর:


221

আপনার বাগগুলি মুছে ফেলা সহ এটি একটি কার্যকারী সংস্করণ।

$url = 'http://dynupdate.no-ip.com/ip.php';
$proxy = '127.0.0.1:8888';
//$proxyauth = 'user:password';

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_PROXY, $proxy);
//curl_setopt($ch, CURLOPT_PROXYUSERPWD, $proxyauth);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 1);
$curl_scraped_page = curl_exec($ch);
curl_close($ch);

echo $curl_scraped_page;

CURLOPT_PROXYUSERPWDআপনার প্রক্সির কোনও ব্যবহারকারীর নাম এবং পাসওয়ার্ডের প্রয়োজন হলে আমি যুক্ত করেছি । আমি CURLOPT_RETURNTRANSFER1 তে সেট করেছি , যাতে ডেটা $curl_scraped_pageভেরিয়েবলটিতে ফিরে আসবে ।

আমি একটি দ্বিতীয় অতিরিক্ত সরিয়েছি curl_exec($ch);যা ভেরিয়েবলটি ফিরে আসা বন্ধ করবে। আমি আপনার প্রক্সি আইপি এবং পোর্টকে এক সেটিংয়ে একীভূত করেছি।

আমিও সরিয়েছি CURLOPT_HTTPPROXYTUNNELএবং CURLOPT_CUSTOMREQUESTএটি পূর্বনির্ধারিত ছিল।

আপনি যদি শিরোনামগুলি ফিরে না চান তবে মন্তব্য করুন CURLOPT_HEADER

প্রক্সিটি অক্ষম করতে কেবল এটিকে শূন্য করতে সেট করুন।

curl_setopt($ch, CURLOPT_PROXY, null);

কোন প্রশ্ন জিজ্ঞাসা নির্দ্বিধায়, আমি cURLপ্রতিদিন সঙ্গে কাজ ।


আপনি প্রতিদিন সিআরএল নিয়ে কাজ করেন তা জেনে খুশী। আমি একটি মোজা প্রক্সি সেট করার চেষ্টা করেছি এবং এটি আমার স্থানীয় মেশিনে কাজ করে তবে আমার লিনাক্স ডেডিকেটেড সার্ভারে কাজ করে না। কোন ধারণা ?
কোডিং_আইডিওট

@ কোডিং_আইডিট বেশিরভাগ ওয়েব হোস্টগুলি পোর্টগুলি ব্লক করে যা সুরক্ষার কারণে 80 বা 443 নয়।
সসদেব

যদিও আমি ইতিমধ্যে এটি সমাধান করেছি। আমি নিশ্চিত অন্যরা এতে উপকৃত হবে।
কোডিং_ইডিয়ট

@ গ্রাভি কোড: যদি সেই ক্ষেত্রে কিছু পরিষেবা থেকে প্রক্সি পাই তবে কি আমার ব্যবহারকারীর নাম / পাসওয়ার্ড পাস করার দরকার আছে?
প্রগণেশ চৌহান

1
প্রক্সি পোর্টটি ওয়েবহোস্ট দ্বারা ব্লক করা হয়েছে কিনা তা আমার কীভাবে জানা উচিত?
ব্যবহারকারী 1788736

35

আমি সিআরএল প্রক্সির জন্য প্রয়োজনীয় বিভিন্ন সিআরএল বিকল্পগুলির ব্যাখ্যা ব্যাখ্যা করেছি।

$url = 'http://dynupdate.no-ip.com/ip.php';
$proxy = '127.0.0.1:8888';
$proxyauth = 'user:password';

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);         // URL for CURL call
curl_setopt($ch, CURLOPT_PROXY, $proxy);     // PROXY details with port
curl_setopt($ch, CURLOPT_PROXYUSERPWD, $proxyauth);   // Use if proxy have username and password
curl_setopt($ch, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS5); // If expected to call with specific PROXY type
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);  // If url has redirects then go to the final redirected URL.
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 0);  // Do not outputting it out directly on screen.
curl_setopt($ch, CURLOPT_HEADER, 1);   // If you want Header information of response else make 0
$curl_scraped_page = curl_exec($ch);
curl_close($ch);

echo $curl_scraped_page;

3
এই মন্তব্যগুলি সহায়ক, তবে অন্যদের অবশ্যই লক্ষ্য করা উচিত যে অতিরিক্ত বিকল্পগুলি আসলে প্রয়োজন হয় না ।
নট

-1

এখানে একটি ভাল পরীক্ষিত ফাংশন যা আমি আমার প্রকল্পগুলির জন্য বিশদ স্ব ব্যাখ্যামূলক মন্তব্য সহ ব্যবহার করি


অনেক সময় দেখা যায় যে ৮০ টির পরিবর্তে পোর্টগুলি সার্ভার ফায়ারওয়াল দ্বারা অবরুদ্ধ করা হয়েছে তাই কোডটি লোকালহোস্টে ঠিকঠাকভাবে কাজ করছে তবে সার্ভারে নয় to

function get_page($url){

global $proxy;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
//curl_setopt($ch, CURLOPT_PROXY, $proxy);
curl_setopt($ch, CURLOPT_HEADER, 0); // return headers 0 no 1 yes
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // return page 1:yes
curl_setopt($ch, CURLOPT_TIMEOUT, 200); // http request timeout 20 seconds
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); // Follow redirects, need this if the url changes
curl_setopt($ch, CURLOPT_MAXREDIRS, 2); //if http server gives redirection responce
curl_setopt($ch, CURLOPT_USERAGENT,
    "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.7) Gecko/20070914 Firefox/2.0.0.7");
curl_setopt($ch, CURLOPT_COOKIEJAR, "cookies.txt"); // cookies storage / here the changes have been made
curl_setopt($ch, CURLOPT_COOKIEFILE, "cookies.txt");
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // false for https
curl_setopt($ch, CURLOPT_ENCODING, "gzip"); // the page encoding

$data = curl_exec($ch); // execute the http request
curl_close($ch); // close the connection
return $data;
}

1
এটি আমাকে সহায়তা করেছে: curl_setopt ($ ch, CURLOPT_SSL_VERIFYPEER, মিথ্যা); // https এর জন্য মিথ্যা
ভিলমেজিয়ার

1
@ ভিল্লেমিজিয়া সাবধান, যদিও, CURLOPT_SSL_VERIFYPEER = মিথ্যা ব্যবহার করে। এর অর্থ হল যে https সার্ভারের সাথে সংযোগ করার সময় সিআরএল কোনও শংসাপত্র যাচাই করতে পারবে না, এইভাবে সংযোগটি কোনও সম্ভাব্য ম্যান-ইন-মধ্য-আক্রমণের জন্য ঝুঁকিরূপে সরবরাহ করে - সুতরাং ডেটা সুরক্ষার কোনও নিশ্চয়তা নেই। বৈধ রুট সার্টিফিকেশন কর্তৃপক্ষের একটি সেট ধারণকারী ডিরেক্টরি দেওয়ার জন্য CURLOPT_CAPATH ব্যবহার করা ভাল (উদাহরণস্বরূপ দেবিয়ান /etc/ssl/certs/ উবুন্টুতে)
এলে
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.