somewhere in... blog
x
ফোনেটিক ইউনিজয় বিজয়

PHP::cURL - একটি Facebook Remote Script

১০ ই ডিসেম্বর, ২০০৯ রাত ৮:৪৪
এই পোস্টটি শেয়ার করতে চাইলে :

কাজ করতে ইচ্ছে করছে না, কারন অনেক কাজ জমে গেছে।তাই কাজ থেকে ফাকি দেবার জন্যেই এই লেখা, অবশ্য টেকি পোস্ট।

কি জন্য এই পোস্ট, সেটা জেনে এই লেখা পড়তে হলে এইখানে ক্লক করুন।

আমরা যখন একটা ওয়েবপেজ ব্রাউজ করি, তখন ব্রাউজার প্রথমে টেক্সট (এইচ.টি.এম.এল) রিড করে, এবং পরে রিসোর্স লিংক থেকে রিসোর্স ডাউনলোড করে থাকে, ছবি/ফ্ল্যাশ এপলেট/জাভা এপলেট ইত্যাদি। খেয়াল করে থাকবেন হয়তো, যে কমপিউটারে এ্যাডোব ফ্ল্যাশ প্লেয়ার ইনস্টল করা থাকে না, সেখানে ফ্ল্যাশ এপলেট রান করে না। কারন ব্রাউজারের রিসোর্স ম্যানেজার যখন HTML Code থেকে ফ্ল্যাশ এপলেটের URL খুজে পায়, তখন অপারেটিং সিস্টেমের কাছে এক্সটেশন/প্লাগইন Seek করে। যদি অপারেটিং সিস্টেম রেসপন্স করে থাকে যে ফাইল এক্সটেশন/প্লাগইনটি পরিচিত, তখন URL থেকে ফ্ল্যাশ এপলেট ডাউনলোড হতে থাকে, এবং ফ্ল্যাশ প্লেয়ার মুভি/এপলেট রিড করে। এটা সহজ ভাষায় ব্রাউজারের একটিভিটি।

এখন আমরা যদি একটি Script লিখতে চাই তবে আমাদেরকে একটা প্রক্সি এ্যাপলিকেশন লিখতে হবে, যা ব্রাউজারের মতো আচরন করবে। কারন, সার্ভারের কাছে রিসোর্সের জন্য রিকোয়েস্ট পাঠাতে হলে RFC মেনে কাজ করতে হয়। তাহলে আমাদেরকে কি অনেক Routine Script লেখতে হবে? না এই জন্য আমরা অনেকগুলো টেকনিক ব্যবহার করতে পারি। যেমন, WGET, Socket, File, CURL। তবে আমি এখানে CURL নিয়ে কিছু কথা বলবো। অন্যগুলো না হয় অন্যকোনো 'ফাকি দিবসে' লেখা যাবে।

WGET, CURL হলো একটি ইউনিক্স প্রোগ্রাম যা ইউনিক্স Shell এ Run করে। Socket হলো প্রটোকল, আর আমরা এখানে PHP তে উদাহরন টানবো, এবং এই ল্যাংগুয়েজে Socket এর জন্য বিল্টইন ফাংশন আছে। File এর ও PHP তে ফাংশন বিদ্যমান। যারা উইন্ডোজ ইউজার তাদের চিন্তিত হবার কারন নেই, কারন CURL এর মড্যুল PHP এর উইন্ডোজ ডিস্ট্রিবিউশনে বান্ডেল করে দেয়া আছে। যা হোক, ভুমিকা বাদ দেই, তাতে আমাদের সবার ধৈর্য্যচ্যুতি ঘটতে পারে (আমার ঘটে গেছে :))।

cURL = Client URL
মনে করি আমরা একটা এ্যাপলিকেশন বানাবো যেটা ফেসবুকের স্ট্যাটাস চেন্জ করে দিবে আপনার ওয়েব সাইট থেকে বা লোকালহোস্ট থেকে।

একটা এইচটিএমএল ফরম তৈরী করি, যেখানে ইনপুট হিসেবে ইউজার, পাসওয়ার্ড, এবং স্ট্যাটাস ম্যাসেজ থাকবে। এবং index.php নামে ওয়েবসার্ভারের রুটে (বা আলাদা ফোল্ডারে) সেভ করি।
সামু তে বাগ আছে, এইচটিএমএল কন্টেন্ট থাকলে পোস্ট এডিট করলে পরে আর দেখায় না, তাই দয়া করে এটাচমেন্ট থেকে index.php এর কোড দেখে নিন।

আমাদের এখন Proxy Script তৈরী করতে হবে। আমরা প্রথম ফেইসবুকের হোমপেজে ভিজিট করবো যাতে করে ফেইসবুক আমাদের স্ক্রীপ্টকে চিনতে না পারে, এন্ড ইউজার এটিচুড - ফাকি বাজি আরকি!

//Initializing FB Homepage to void suspicious attitude
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://login.facebook.com/');
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file);
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3");
$page = curl_exec($ch);
/*
কোড কমেন্ট:
curl_init() - এই ফাংশন কল করে ইনিশিয়েলাইজ করে নিচ্ছি
curl_setopt() - এই ফাংশন দিয়ে আমরা ব্রাউজারের ব্যবহারবিধি বলে দেব।
CURLOPT_URL - যে পেজটা আমরা এই স্ক্রীপট দিয়ে পড়তে চাই
CURLOPT_SSL_VERIFYPEER - যদি আমরা SSL Certificate Validate করতে চাই তবে ১ হবে, অন্যথায় ০ হবে। সাধারনত ব্যাংকের ট্রানসেকশন সংক্রান্ত প্রসেসে এটা ট্রু করে নিতে হয় নিরাপত্তার জন্য, তবে এর জন্যে Certificate ইন্সটল করে নিতে হয়। সাধারন কাজে লাগে না, তাই ঐ দিকে যাবো না।
CURLOPT_COOKIEFILE - যে ফাইলে আমরা কুকিগোলো সেভ করবো।
CURLOPT_COOKIEJAR - যে ফাইলে আমরা কুকিগোলো রিড করবো।
CURLOPT_COOKIEJAR এবং CURLOPT_COOKIEFILE এর ভ্যালু একই হবে।
CURLOPT_RETURNTRANSFER - আমরা CURL কে বলে দিচ্ছি যে আমরা পেজ ডাউনলোড করবো। না চাইলে ০। এখানে ১ বা ট্রু করতে হবে।
CURLOPT_USERAGENT - এখানে আপনি যা ইচ্ছা লিখে দিতে পারেন। এটাই সার্ভার পড়বে। তবে সন্দেহজনক আচরন থেকে বাচার জন্য পরিচিত ব্রাউজারের মেটা লিখে দেয়া উত্তম। তাতে করে আপনি সন্দেহের তালিকা থেকে বেচে যাবেন ৫০ ভাগ।

curl_exec() - সব সেটিংস হয়ে যাবার পর আমরা এই ফাংশন কে কল করলে Shell এ CURL এক্সেকিউট করবে এবং পেইজ ডাউনলোড করবে একজন মানুষের মতো করে। আমরা $page নামক ভ্যারিয়েবলে পুরো পেইজের HTML কোড ধরে রাখবো পরবর্তী ধাপের জন্য।
*/

আমরা এখন ইউজার আইডি, পাসওয়ার্ড , স্ট্যাটাস ম্যাসেজ দিয়ে ফেইসবুকে লগইন করার চেষ্টা করবো-

//Submitting the login credential to FB
curl_setopt($ch, CURLOPT_URL, 'https://login.facebook.com/login.php?&next=http://m.facebook.com/home.php');
curl_setopt($ch, CURLOPT_POSTFIELDS,'email='.urlencode($login_email).'&pass='.urlencode($login_pass).'&login=Login');
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file);
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3");
$page = curl_exec($ch);

/*
কোড কমেন্ট:
এখানে CURL এর দুটো নতুন অপশন প্যারামিটার যোগ হয়েছে -
CURLOPT_POSTFIELDS - আমরা HTML Form এ যে ফিল্ডগুলো এড করেছি সেগুলোকে CURL এর মাধ্যমে POST করবো।
CURLOPT_POST - আমাদের এই অপারেশনে একটি ফরম POST হবে সে সেট করে দিচ্ছি। দেখুন আগের প্রসেসে আমরা POST করিনি, GET করেছি। GET ডিফল্ট অপশন।

$page নামক ভ্যারিয়েবলে পুরো পেইজের HTML কোড ধরে রেখেছি।
*/

বেস্ট কেস হলে আমাদের কাজ শেষ, কিন্তু FB Challenge করে বসলে কাজ হবে না। আরো কিছু সাবধানতা অবলম্বন করতে হবে। দেখি কিভাবে FB Challenge করতে পারে।

আপনার IP পরিচিত না হলে আপনাকে সন্দেহ করে জন্মদিন জিজ্ঞেস করবে। আমরা তারজন্যেও প্রস্তুত। আমাদের চেক করে দেখতে হবে যে স্পেসিফিক কোনো টেক্সট আছে কিনা। এইজন্য রেগুলার এক্সপ্রেশন লাগবে। PHP এর আছে দারুন এক ফাংশন - preg_match। ereg/preg নিয়ে অন্যদিন কথা বলবো। আর এইখানে কোড তুলে দিলে ভালো দেখাচ্ছে না, ডাউনলোড করে নিন এইখান থেকে । -

if(preg_match('/You are signing in from an unfamiliar location/sim',$page)) {
//কিছু করতে হবে
}


এই কাজটি ফেইসবুকের API দিয়ে করা যায়। কিন্তু আমি এখানে PHP - cURL ব্যবহার ও পদ্ধতি দেখাবার জন্য এভাবে বর্ননা করলাম। কারো কোনো কিছু বুঝতে হলে আমাকে জানাবেন, সার্বিক ভাবে সাহায্য করবো। ধন্যবাদ।

হেল্প ও রেফারেন্স লিংক:
PHP কি?
cURL
cURL কি?
সর্বশেষ এডিট : ০৯ ই ডিসেম্বর, ২০১০ রাত ১০:০০
১২টি মন্তব্য ১০টি উত্তর

আপনার মন্তব্য লিখুন

ছবি সংযুক্ত করতে এখানে ড্রাগ করে আনুন অথবা কম্পিউটারের নির্ধারিত স্থান থেকে সংযুক্ত করুন (সর্বোচ্চ ইমেজ সাইজঃ ১০ মেগাবাইট)
Shore O Shore A Hrosho I Dirgho I Hrosho U Dirgho U Ri E OI O OU Ka Kha Ga Gha Uma Cha Chha Ja Jha Yon To TTho Do Dho MurdhonNo TTo Tho DDo DDho No Po Fo Bo Vo Mo Ontoshto Zo Ro Lo Talobyo Sho Murdhonyo So Dontyo So Ho Zukto Kho Doye Bindu Ro Dhoye Bindu Ro Ontosthyo Yo Khondo Tto Uniswor Bisworgo Chondro Bindu A Kar E Kar O Kar Hrosho I Kar Dirgho I Kar Hrosho U Kar Dirgho U Kar Ou Kar Oi Kar Joiner Ro Fola Zo Fola Ref Ri Kar Hoshonto Doi Bo Dari SpaceBar
এই পোস্টটি শেয়ার করতে চাইলে :
আলোচিত ব্লগ

একজন বণিক, যিনি বদলে দিয়েছিলেন সমগ্র আরবের ইতিহাস

লিখেছেন সৈয়দ কুতুব, ০৮ ই জুন, ২০২৬ রাত ২:৪৩


মরুভূমির মাঝে দাঁড়িয়ে পুরো আরবকে বদলে দেওয়ার স্বপ্ন দেতেন একজন মানুষ। শুনতে পাগলামি লাগে, তাই না? কিন্তু সেই মানুষটা যদি ছোটবেলা থেকে কাফেলায় কাজ করে থাকেন, যদি তিনি জানেন... ...বাকিটুকু পড়ুন

কৃত্তিম বুদ্ধিমত্তা যেভাবে আব্বাসীদের জন্য হুমকি হয়ে আসছে- কী হবে খালেদ মহিউদ্দিনের?

লিখেছেন হিমন, ০৮ ই জুন, ২০২৬ রাত ২:৫০

হোমো ইরেক্টাসদের প্রায় বিশ লাখ বছর আগের আগুনের ব্যবহার থেকে শুরু করে ছয় হাজার বছর আগের চাকা আবিষ্কার, ১৮৩১ সালের বিদ্যুৎ, গত শতাব্দীর অ্যান্টিবায়োটিক, আর এই সেদিনের ইন্টারনেট ও স্মার্টফোন—... ...বাকিটুকু পড়ুন

আসলে কেউ ফেরে না।

লিখেছেন রানার ব্লগ, ০৮ ই জুন, ২০২৬ সকাল ৭:০৬

মৃতরা ফিরে আসে না।
ফিরে আসে তাদের ফেলে যাওয়া শূন্যতা,
চায়ের কাপের ধোঁয়া,
অধেক বলা কোনো কথা
অথবা হঠাৎ থেমে যাওয়া কোন সুর

যে প্রেম চলে গিয়েছিল,
সে আর কোনোদিন দরজায় কড়া নাড়ে না।
শুধু একদিন আয়নায়... ...বাকিটুকু পড়ুন

দ্য ড্রাগ কিং

লিখেছেন শাম্মী নূর-এ-আলম রাজু, ০৮ ই জুন, ২০২৬ দুপুর ১২:১৫


সতর্কবার্তা: এটি একটি সম্পূর্ণ কাল্পনিক ক্রাইম ফিকশন। বাস্তব একটি অপরাধের কাঠামোর ওপর ভিত্তি করে পাঠকদের জন্য এর চরিত্র, নাম এবং স্থান পরিবর্তন করে গল্পটি সাজানো হয়েছে।

খুলনা... ...বাকিটুকু পড়ুন

সামুতে আবারও লিলিপুটিয়ানদের সংখ্যা বেড়ে যাচ্ছে

লিখেছেন সত্যপথিক শাইয়্যান, ০৮ ই জুন, ২০২৬ দুপুর ১২:৫৮

আমার গত পোস্টে আলামিন১০৪ নামের এক ব্লগার মন্তব্য করেছেন যে - "এ আই দিয়ে হুমায়ূন আহমেদের মতো লেখা যায়।"
তিনি এ আই-কে প্রম্পট দিয়েছিলেন ' হুমায়ুন আহমেদের মতো গল্প লিখে... ...বাকিটুকু পড়ুন

×