Socket
Book a DemoInstallSign in
Socket

messenger-web-reverse

Package Overview
Dependencies
Maintainers
1
Versions
3
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

messenger-web-reverse

๐Ÿš€ Real Facebook Messenger Client for Node.js - Direct connection, no browser automation! Login with email/password, send/receive messages in real-time. Fixed v3.3.0

3.3.0
latest
npmnpm
Version published
Maintainers
1
Created
Source

messenger-web-reverse - Real Facebook Messenger Client for Node.js

A comprehensive Node.js library that provides real Facebook Messenger functionality similar to Baileys for WhatsApp. This library connects directly to Facebook's servers using reverse-engineered protocols, enabling authentic messaging without browser automation.

๐Ÿš€ Features

  • Real Facebook Connection: Direct WebSocket connection to Facebook's servers
  • No Browser Automation: Pure HTTP/WebSocket implementation, no Puppeteer required
  • Email/Password Authentication: Login with your Facebook credentials
  • Session Management: Persistent sessions with automatic restoration
  • Real-time Messaging: Send and receive messages instantly
  • Event-driven Architecture: Clean, reactive programming model
  • Auto-reconnection: Automatic reconnection with configurable retry logic
  • Typing Indicators: Send and receive typing status
  • Message History: Retrieve conversation history
  • Cross-platform: Works on Windows, Linux, macOS, Android (Termux)

๐Ÿ“ฆ Installation

Install the library using npm:

npm install messenger-web-reverse

Or using yarn:

yarn add messenger-web-reverse

Or using pnpm:

pnpm add messenger-web-reverse

๐ŸŒ NPM Package

Package Name: messenger-web-reverse
Current Version: 2.2.0
NPM Link: https://www.npmjs.com/package/messenger-web-reverse

# Install the latest version
npm install messenger-web-reverse@latest

๐ŸŽฏ Quick Start

const FacebookMessenger = require('messenger-web-reverse');

async function main() {
    const messenger = new FacebookMessenger({
        debug: true
    });
    
    // Setup event handlers
    messenger.on('message', (message) => {
        console.log(`๐Ÿ“ฉ New message from ${message.from}: ${message.body}`);
    });
    
    messenger.on('connected', () => {
        console.log('๐ŸŒ Connected to Facebook Messenger!');
    });
    
    // Login with Facebook credentials - METODA CORECTฤ‚
    const loginResult = await messenger.login('your-email@example.com', 'your-password');
    
    if (loginResult.success) {
        // Connect to WebSocket
        await messenger.connect();
        
        // Send a message
        await messenger.sendMessage('recipient-user-id', 'Hello from FacebookMessenger!');
    }
}

main().catch(console.error);

๐Ÿ” Authentication - METODฤ‚ CORECTฤ‚

โš ๏ธ IMPORTANT: Metoda corectฤƒ de autentificare este messenger.login(), NU client.login() sau messenger.authenticate()!

Biblioteca suportฤƒ autentificare realฤƒ Facebook cu persistenศ›a sesiunii:

const messenger = new FacebookMessenger();

// METODA CORECTฤ‚: foloseศ™te messenger.login() nu client.login()!
const loginResult = await messenger.login('email@example.com', 'password');

if (loginResult.success) {
    console.log('โœ… Login successful');
    console.log('๐Ÿ‘ค User:', loginResult.user.userInfo.name);
    console.log('๐Ÿ†” User ID:', loginResult.user.userId);
    
    await messenger.connect();
} else if (loginResult.requires2FA) {
    console.log('๐Ÿ”’ Two-factor authentication required');
} else {
    console.log('โŒ Login failed:', loginResult.error);
}

// Subsequent runs - automatic session restoration  
if (await messenger.restoreSession()) {
    console.log('๐Ÿ“‚ Session restored successfully');
    await messenger.connect();
} else {
    // Need to login again - FOLOSEศ˜TE MEREU messenger.login()
    await messenger.login('email@example.com', 'password');
}

๐Ÿ“ฑ Real-time Events

The library emits real-time events from Facebook's servers:

// Message events
messenger.on('message', (message) => {
    console.log(`๐Ÿ“ฉ Message from ${message.from}: ${message.body}`);
    console.log(`๐Ÿ• Timestamp: ${new Date(message.timestamp)}`);
    console.log(`๐Ÿ’ฌ Thread ID: ${message.threadId}`);
});

messenger.on('message_sent', (data) => {
    console.log(`๐Ÿ“ค Message sent successfully: ${data.messageId}`);
});

// Delivery and read receipts
messenger.on('delivery_receipt', (receipt) => {
    console.log(`โœ… Message delivered: ${receipt.messageId}`);
});

messenger.on('read_receipt', (receipt) => {
    console.log(`๐Ÿ‘๏ธ Message read: ${receipt.messageId}`);
});

// Typing indicators
messenger.on('typing', (typing) => {
    console.log(`โŒจ๏ธ ${typing.from} is ${typing.isTyping ? 'typing' : 'stopped typing'}...`);
});

// Presence updates
messenger.on('presence', (presence) => {
    console.log(`๐Ÿ‘ค ${presence.userId} is ${presence.status}`);
});

// Connection events
messenger.on('connected', () => console.log('๐ŸŒ Connected to Facebook'));
messenger.on('disconnected', (data) => console.log('๐Ÿ“ด Disconnected:', data));
messenger.on('error', (error) => console.error('โŒ Error:', error.message));

๐Ÿ’ฌ Sending Messages

Text Messages

// Send simple text message
await messenger.sendMessage('user-id', 'Hello, World!');

// Send message with options
await messenger.sendMessage('user-id', 'Hello!', {
    source: 'chat:web'
});

Typing Indicators

// Show typing indicator
await messenger.sendTypingIndicator('user-id', true);

// Simulate typing and send message
await messenger.sendTypingIndicator('user-id', true);
setTimeout(async () => {
    await messenger.sendTypingIndicator('user-id', false);
    await messenger.sendMessage('user-id', 'Hello after typing!');
}, 2000);

๐Ÿ“š Message History

// Get recent messages from a conversation
const messages = await messenger.getMessages('user-id', 20);

console.log(`๐Ÿ“œ Retrieved ${messages.length} messages:`);
messages.forEach((msg, index) => {
    console.log(`${index + 1}. ${msg.body} (from: ${msg.from})`);
});

โš™๏ธ Configuration Options

const messenger = new FacebookMessenger({
    debug: true,                           // Enable debug logging
    sessionPath: './facebook_session.json', // Session storage path
    autoReconnect: true,                   // Auto-reconnect on disconnect
    maxReconnectAttempts: 5,               // Max reconnection attempts
    reconnectDelay: 5000,                  // Delay between reconnects (ms)
    userAgent: 'Custom User Agent'         // Custom user agent string
});

๐Ÿ”„ Session Management

Sessions are automatically managed and persisted:

// Sessions are saved automatically after successful login
await messenger.login('email', 'password');

// Check session status
const status = messenger.getStatus();
console.log('๐Ÿ“Š Status:', {
    isConnected: status.isConnected,
    isLoggedIn: status.isLoggedIn,
    userId: status.userId
});

// Manual logout (clears session)
await messenger.logout();

๐Ÿ› ๏ธ Error Handling

try {
    const loginResult = await messenger.login('email', 'password');
    
    if (!loginResult.success) {
        if (loginResult.requires2FA) {
            console.log('๐Ÿ”’ Two-factor authentication required');
            // Handle 2FA manually
        } else {
            console.log('โŒ Login failed:', loginResult.error);
        }
        return;
    }
    
    await messenger.connect();
    
} catch (error) {
    console.error('๐Ÿ’ฅ Connection error:', error.message);
    
    if (error.message.includes('timeout')) {
        console.log('๐Ÿ• Connection timeout - check internet connection');
    } else if (error.message.includes('credentials')) {
        console.log('๐Ÿ”‘ Invalid credentials - check email/password');
    }
}

๐Ÿค– Bot Example

const FacebookMessenger = require('messenger-web-reverse');

class MessengerBot extends FacebookMessenger {
    constructor() {
        super({ debug: true });
        this.setupHandlers();
    }
    
    setupHandlers() {
        this.on('message', this.handleMessage.bind(this));
        this.on('connected', () => {
            console.log('๐Ÿค– Bot connected and ready!');
        });
    }
    
    async handleMessage(message) {
        const { from, body } = message;
        
        if (body.startsWith('/help')) {
            await this.sendMessage(from, '๐Ÿค– Available commands:\n/help - Show this help\n/time - Get current time\n/echo <text> - Echo your message');
            
        } else if (body.startsWith('/time')) {
            await this.sendMessage(from, `๐Ÿ• Current time: ${new Date().toISOString()}`);
            
        } else if (body.startsWith('/echo ')) {
            const text = body.substring(6);
            await this.sendMessage(from, `๐Ÿ”„ Echo: ${text}`);
            
        } else {
            await this.sendMessage(from, '๐Ÿ‘‹ Hello! Type /help for available commands.');
        }
    }
}

// Usage
const bot = new MessengerBot();
await bot.login('bot-email@example.com', 'bot-password');
await bot.connect();

๐ŸŽฎ Running Examples

Set your Facebook credentials as environment variables:

export FACEBOOK_EMAIL="your-email@example.com"
export FACEBOOK_PASSWORD="your-password"
export TARGET_USER_ID="friend-user-id"  # Optional: for testing messages

# Run the example
node examples/real-facebook-messenger.js

With auto-reply enabled:

export AUTO_REPLY="true"
node examples/real-facebook-messenger.js

๐Ÿ“ Project Structure

โ”œโ”€โ”€ lib/
โ”‚   โ”œโ”€โ”€ FacebookMessenger.js    # Main client class (NEW)
โ”‚   โ”œโ”€โ”€ MessengerClient.js      # Legacy modular client
โ”‚   โ”œโ”€โ”€ auth/                   # Authentication components
โ”‚   โ”œโ”€โ”€ messaging/              # Message handling
โ”‚   โ”œโ”€โ”€ websocket/              # WebSocket management
โ”‚   โ””โ”€โ”€ protocol/               # Protocol parsing
โ”œโ”€โ”€ examples/
โ”‚   โ”œโ”€โ”€ real-facebook-messenger.js  # Real Facebook example (NEW)
โ”‚   โ”œโ”€โ”€ basic-usage.js              # Simple example
โ”‚   โ””โ”€โ”€ advanced-usage.js           # Advanced bot example
โ””โ”€โ”€ README.md

๐ŸŒŸ Key Advantages

โœ… Compared to Browser Automation (Puppeteer):

  • Much faster - No browser overhead
  • Lower resource usage - Minimal memory and CPU
  • More reliable - No browser crashes or timeouts
  • Cross-platform - Works on servers, Android (Termux), etc.
  • Real-time - True WebSocket connection to Facebook

โœ… Compared to Unofficial APIs:

  • Direct connection - Uses Facebook's real protocols
  • Always up-to-date - Adapts to Facebook's changes
  • Full feature support - All Messenger features available
  • Real authentication - Uses your actual Facebook account

๐Ÿ“‹ Requirements

  • Node.js 14+
  • Facebook account with valid credentials
  • Internet connection
  • No browser required - Pure Node.js implementation

๐Ÿ”ง Troubleshooting & Metode Corecte

โš ๏ธ FOARTE IMPORTANT - Metodele Corecte:

โœ… CORECT:

const FacebookMessenger = require('messenger-web-reverse');
const messenger = new FacebookMessenger();
await messenger.login('email@example.com', 'password');  // โœ… CORECT
await messenger.connect();

โŒ GREศ˜IT:

await client.login('email', 'password');  // โŒ NU FUNCศšIONEAZฤ‚
await messenger.authenticate('email', 'password');  // โŒ NU FUNCศšIONEAZฤ‚  

Common Issues:

โŒ Login Failed:

  • Verify email/password are correct
  • Check if account requires 2FA
  • Ensure account is not locked/restricted

โŒ Connection Timeout:

  • Check internet connection
  • Verify firewall settings
  • Try different network

โŒ Session Expired:

  • Delete session file: rm facebook_session.json
  • Login again with fresh credentials

โŒ 2FA Required:

  • Currently requires manual handling
  • Future versions will support 2FA automation

Debug Mode:

Enable detailed logging:

const messenger = new FacebookMessenger({ debug: true });

๐Ÿค Contributing

Contributions welcome! This library uses reverse-engineered Facebook protocols and benefits from community improvements.

  • Educational/Personal Use: This library is for educational and personal use
  • Terms of Service: Use responsibly and comply with Facebook's Terms of Service
  • Rate Limits: Respect Facebook's rate limiting and usage policies
  • Account Safety: Use with your own accounts and at your own risk

๐Ÿ“„ License

MIT License - see LICENSE file for details.

๐ŸŽฏ Made for developers who need real Facebook Messenger integration without browser automation!

๐Ÿ”ฅ Exemplu Simplu ศ™i Rapid

Pentru รฎncepฤƒtori, vezi examples/simple-example.js:

export FACEBOOK_EMAIL="your-email@gmail.com"
export FACEBOOK_PASSWORD="your-password"
node examples/simple-example.js

โš ๏ธ ATENศšIE: Foloseศ™te MEREU messenger.login() nu client.login()!

Keywords

facebook

FAQs

Package last updated on 04 Jul 2025

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

About

Packages

Stay in touch

Get open source security insights delivered straight into your inbox.

  • Terms
  • Privacy
  • Security

Made with โšก๏ธ by Socket Inc

U.S. Patent No. 12,346,443 & 12,314,394. Other pending.