Back to Library
Facebook
js • 1/27/2026
6
const axios = require('axios');
const qs = require('qs');
const cheerio = require('cheerio');
const fdown = {
getToken: async () => {
try {
const response = await axios.get('https://fdown.net', {
headers: {
'User-Agent': 'Mozilla/5.0 (Android 10; Mobile; rv:131.0) Gecko/131.0 Firefox/131.0',
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/png,image/svg+xml,*/*;q=0.8',
'Accept-Language': 'id-ID',
'Upgrade-Insecure-Requests': '1',
}
});
const html = response.data;
const $ = cheerio.load(html);
const token_v = $('input[name="token_v"]').val();
const token_c = $('input[name="token_c"]').val();
const token_h = $('input[name="token_h"]').val();
return { token_v, token_c, token_h };
} catch (error) {
throw new Error(`Error fetching tokens: ${error.message}`);
}
},
request: async (url) => {
const { token_v, token_c, token_h } = await fdown.getToken();
const data = qs.stringify({
'URLz': url,
'token_v': token_v,
'token_c': token_c,
'token_h': token_h
});
const config = {
method: 'POST',
url: 'https://fdown.net/download.php',
headers: {
'User-Agent': 'Mozilla/5.0 (Android 10; Mobile; rv:131.0) Gecko/131.0 Firefox/131.0',
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/png,image/svg+xml,*/*;q=0.8',
'Content-Type': 'application/x-www-form-urlencoded',
'accept-language': 'id-ID',
'referer': 'https://fdown.net/',
},
data: data
};
const api = await axios.request(config);
return api.data;
},
download: async (url) => {
try {
const data = await fdown.request(url);
const $ = cheerio.load(data);
// Cek jika error (biasanya private video atau link salah)
if ($('.alert-danger').length > 0) {
throw new Error("Video is private or URL is invalid");
}
const title = $('.lib-row.lib-header').text().trim() || "Facebook Video";
const description = $('.lib-row.lib-desc').text().trim() || "No Description";
const sdLink = $('#sdlink').attr('href');
const hdLink = $('#hdlink').attr('href');
if (!sdLink && !hdLink) {
throw new Error("No download links found");
}
return {
title: title,
description: description,
sd: sdLink || "",
hd: hdLink || ""
};
} catch (e) {
throw e;
}
}
};
module.exports = { fdown };