Scrape for : https://freetiktokdownload.com/id
const fetch = require('node-fetch');
const FormData = require('form-data');
const scrapeFreeTikTok = async (url) => {
const userAgent = 'Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Mobile Safari/537.36';
try {
const initResponse = await fetch('https://freetiktokdownload.com/id', {
method: 'GET',
headers: {
'User-Agent': userAgent
}
});
const setCookieHeader = initResponse.headers.get('set-cookie') || '';
const matchXsrf = setCookieHeader.match(/XSRF-TOKEN=([^;]+)/);
const matchSession = setCookieHeader.match(/tiktok_video_downloader_download_tiktok_videos_without_watermark_session=([^;]+)/);
const cookies = [];
if (matchXsrf) cookies.push(matchXsrf[0]);
if (matchSession) cookies.push(matchSession[0]);
const cookieString = cookies.join('; ');
if (!cookieString) {
return {
status: 'error',
message: 'Gagal mendapatkan sesi cookie.'
};
}
const html = await initResponse.text();
const tokenMatch =
html.match(/<meta\s+name="csrf-token"\s+content="([^"]+)"/i) ||
html.match(/name="_token"\s+value="([^"]+)"/i);
if (!tokenMatch) {
return {
status: 'error',
message: 'Gagal mengambil CSRF token.'
};
}
const csrfToken = tokenMatch[1];
const form = new FormData();
form.append('_token', csrfToken);
form.append('url', url);
const fetchResponse = await fetch('https://freetiktokdownload.com/fetch', {
method: 'POST',
headers: {
'User-Agent': userAgent,
'Accept': 'application/json',
'Accept-Encoding': 'gzip, deflate, br, zstd',
'Origin': 'https://freetiktokdownload.com',
'Referer': 'https://freetiktokdownload.com/id',
'Cookie': cookieString,
...form.getHeaders()
},
body: form
});
const result = await fetchResponse.json();
return result;
} catch (error) {
return {
status: 'error',
message: error.message
};
}
};
// contoh pemanggilan
(async () => {
const res = await scrapeFreeTikTok('https://www.tiktok.com/@langitpenuhcerita/video/7638546161988635924?_r=1&u_code=e44aadm1a6m8m8®ion=ID&mid=7638546211150039816&preview_pb=0&sharer_language=en&_d=ejebffjdbf70ih&share_item_id=7638546161988635924&source=h5_t×tamp=1778646099&user_id=7148412173672350746&sec_user_id=MS4wLjABAAAAmS5elyAJpu9dWjBWNMnOAPI-yr83K397whqS6i4uPpAfp_5K6xfB22slCMojRIq-&item_author_type=2&social_share_type=0&utm_source=copy&utm_campaign=client_share&utm_medium=android&share_iid=7625575522260666119&share_link_id=92cf852e-7f1a-49a0-ac9b-2f63d6cea765&share_app_id=1180&ugbiz_name=MAIN&ug_btm=b2001&link_reflow_popup_iteration_sharer=%7B%22click_empty_to_play%22%3A1%2C%22dynamic_cover%22%3A1%2C%22follow_to_play_duration%22%3A-1.0%2C%22profile_clickable%22%3A1%7D&enable_checksum=1');
console.log(res);
return(res);
})();