UNPKG

ws3-fca

Version:

A node.js package for automating Facebook Messenger bot, and is one of the most advanced next-generation Facebook Chat API (FCA) by @NethWs3Dev & @ExocoreCommunity

81 lines (72 loc) 2.62 kB
"use strict"; const { randomUserAgent } = require("./user-agents"); /** * Generates a comprehensive and realistic set of headers for requests to Facebook. * @param {string} url - The target URL. * @param {object} options - Global options from context. * @param {object} ctx - The application context (containing fb_dtsg, lsd, etc.). * @param {object} customHeader - Any extra headers to merge. * @returns {object} A complete headers object. */ function getHeaders(url, options, ctx, customHeader) { const { userAgent, secChUa, secChUaFullVersionList, secChUaPlatform, secChUaPlatformVersion } = randomUserAgent(); const host = new URL(url).hostname; const referer = `https://${host}/`; const headers = { 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7', 'Accept-Language': 'en-US,en;q=0.9', 'Cache-Control': 'max-age=0', 'Connection': 'keep-alive', 'Dpr': '1', 'Host': host, 'Origin': `https://${host}`, 'Referer': referer, 'Sec-Ch-Prefers-Color-Scheme': 'light', 'Sec-Ch-Ua': secChUa, 'Sec-Ch-Ua-Full-Version-List': secChUaFullVersionList, 'Sec-Ch-Ua-Mobile': '?0', 'Sec-Ch-Ua-Model': '""', 'Sec-Ch-Ua-Platform': secChUaPlatform, 'Sec-Ch-Ua-Platform-Version': secChUaPlatformVersion, 'Sec-Fetch-Dest': 'document', 'Sec-Fetch-Mode': 'navigate', 'Sec-Fetch-Site': 'same-origin', 'Sec-Fetch-User': '?1', 'Upgrade-Insecure-Requests': '1', 'User-Agent': userAgent, 'Viewport-Width': '1920' }; if (ctx) { if (ctx.fb_dtsg) { headers['X-Fb-Lsd'] = ctx.lsd; } if (ctx.region) { headers['X-MSGR-Region'] = ctx.region; } if (ctx.master) { const { __spin_r, __spin_b, __spin_t } = ctx.master; if (__spin_r) headers['X-Fb-Spin-R'] = String(__spin_r); if (__spin_b) headers['X-Fb-Spin-B'] = String(__spin_b); if (__spin_t) headers['X-Fb-Spin-T'] = String(__spin_t); } } // Merge any custom headers, allowing them to override defaults if (customHeader) { Object.assign(headers, customHeader); if (customHeader.noRef) { delete headers.Referer; } } return headers; } const meta = (prop) => new RegExp(`<meta property="${prop}" content="([^"]*)"`); module.exports = { getHeaders, meta, };