Automation & Gray-Hat Engineering

Building a Facebook Session Token Generator API with Node.js

মার্কেটিং অটোমেশন টুল, ফেসবুক গ্রুপ স্ক্র্যাপার কিংবা অটো-পোস্টার বট তৈরি করার ক্ষেত্রে সবচেয়ে গুরুত্বপূর্ণ ধাপ হলো ফেসবুকের Graph API Access Token (যেমন: EAAG বা EAAI টোকেন) সংগ্রহ করা। সাধারণ নিয়মে ফেসবুক ডেভেলপার প্যানেল থেকে টোকেন জেনারেট করা বেশ জটিল এবং এগুলো দ্রুত এক্সপায়ার (Expire) হয়ে যায়।

তবে প্রফেশনাল অটোমেশন আর্কিটেকচারে একাউন্টের লাইভ ব্রাউজার কুকি (App Cookies) ব্যবহার করে সার্ভার ব্যাকএন্ডের মাধ্যমে ডাইনামিকালি সেশন টোকেন এক্সট্র্যাক্ট করা হয়। আজ আমরা দেখবো কীভাবে এক্সপ্রেস ডট জেএস (Express.js) এবং এক্সিওস (Axios) লাইব্রেরি ব্যবহার করে একটি রেডিমেড Cookie-to-Token Converter API তৈরি করা যায়।

১. আর্কিটেকচার মেকানিজম কীভাবে কাজ করে?

যখন কোনো ইউজার তার ভ্যালিড ফেসবুক কুকি স্ট্রিং (যাতে c_user এবং xs ডাটা থাকে) আমাদের এপিআই এন্ডপয়েন্টে পোস্ট করে, তখন আমাদের ব্যাকএন্ড সার্ভার ছদ্মবেশে ফেসবুকের ইন্টারনাল বিজনেস ম্যানেজার বা এডস ম্যানেজার মেটা-ডাটা পেজে হিট করে। সেখান থেকে রেগুলার এক্সপ্রেশন (RegEx) প্যাটার্ন ম্যাচিংয়ের মাধ্যমে সিকিউর টোকেনটি ফিল্টার করে নিয়ে আসে এবং ক্লায়েন্টকে রেসপন্স হিসেবে রিটার্ন করে।

ধাপ ২: প্রজেক্ট এবং এপিআই স্ট্রাকচার সেটআপ

আপনার মোবাইল ডেভলপমেন্ট এনভায়রনমেন্ট বা টারমাক্স ডিরেক্টরিতে গিয়ে প্রয়োজনীয় মডিউলগুলো ইনস্টল করে নিন:

npm install express axios dotenv

ধাপ ৩: কোর সেশন জেনারেটর এপিআই কোড

আপনার প্রোজেক্টে token-api.js নামে একটি ফাইল তৈরি করুন এবং নিচের প্রিমিয়াম সোর্স কোডটি রাইট করুন। এটি মেটার ইন্টারনাল এন্ডপয়েন্ট থেকে নিরাপদ উপায়ে টোকেন স্ক্র্যাপ করতে সক্ষম:

const express = require('express');
const axios = require('axios');
const app = express();

app.use(express.json());

// টোকেন এক্সট্র্যাক্ট করার কোর ফাংশন
async function generateFBToken(cookie) {
    const targetUrl = "https://business.facebook.com/business_locations";
    
    const customHeaders = {
        "Cookie": cookie,
        "User-Agent": "Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Mobile Safari/537.36",
        "Referer": "https://business.facebook.com/",
        "Host": "business.facebook.com"
    };

    try {
        const response = await axios.get(targetUrl, { headers: customHeaders, timeout: 15000 });
        const htmlContent = response.data;

        // EAAG টোকেন খোঁজার জন্য কাস্টম রেগুলার এক্সপ্রেশন প্যাটার্ন
        const tokenRegex = /(EAAG\w+)/;
        const matches = htmlContent.match(tokenRegex);

        if (matches && matches[0]) {
            return { success: true, token: matches[0] };
        } else {
            return { success: false, error: "Could not find token. Ensure your cookie is fully active and has business access." };
        }
    } catch (error) {
        return { success: false, error: "Network Error or Facebook blocked the session request." };
    }
}

// এপিআই এন্ডপয়েন্ট রাউটিং (POST Method)
app.post('/api/v1/generate-token', async (req, res) => {
    const { fb_cookie } = req.body;

    if (!fb_cookie) {
        return res.status(400).json({ error: "Missing parameter: 'fb_cookie' field is required." });
    }

    console.log("Processing incoming token extraction request...");
    const result = await generateFBToken(fb_cookie);

    if (result.success) {
        return res.status(200).json({
            status: "Success",
            developer: "Ahyan Creations",
            access_token: result.token
        });
    } else {
        return res.status(422).json({
            status: "Failed",
            reason: result.error
        });
    }
});

const PORT = process.env.PORT || 5000;
app.listen(PORT, () => console.log(`Facebook Session API Engine running on port ${PORT}`));

ধাপ ৪: এপিআই টেস্টিং ও ব্যবহার বিধি

আপনার স্ক্রিপ্টটি টার্মিনালে রান করুন (node token-api.js)। এবার Postman, Termux cURL অথবা আপনার ফ্রন্টএন্ড চ্যাট অ্যাপ্লিকেশন থেকে নিচের ফরম্যাটে একটি POST রিকোয়েস্ট পাঠান:

Endpoint URL: http://localhost:5000/api/v1/generate-token

JSON Payload Body:

{
  "fb_cookie": "c_user=1000xxxxxx; xs=xxxxxx; fr=xxxxxx;"
}

রিকোয়েস্ট পাঠানোর সাথে সাথেই ব্যাকএন্ড মিলি-সেকেন্ডের মধ্যে মেটার সার্ভার থেকে আপনার সেশনের জন্য তৈরি হওয়া অফিসিয়াল EAAG... টোকেনটি স্ক্র্যাপ করে একদম ফ্রেশ জেসন (JSON) ফরম্যাটে রেসপন্স হিসেবে অবজেক্ট আউটপুট দেবে।

নিরাপত্তা ও নৈতিকতা সতর্কতা (Security Notice): ফেসবুক সেশন কুকি এবং অ্যাক্সেস টোকেন অত্যন্ত সংবেদনশীল ডেটা। এর অপব্যবহার একাউন্ট চিরতরে রেস্ট্রিক্ট বা লক করে দিতে পারে। এই এপিআই-টি ডেভেলপ করার সময় সর্বদা ট্রাফিক এন্ডপয়েন্টে SSL/HTTPS প্রক্সি প্রোটেকশন (যেমন ক্লাউডফ্লেয়ার রিভার্স প্রক্সি) ব্যবহার করবেন, যাতে মাঝপথে কেউ আপনার ইউজারের কুকি ডাটা স্নীফ (Sniff) বা হ্যাক করতে না পারে।