SnapInsta Instagram Downloader

JavaScriptPublic
by zx-apiSep 1, 2026, 04:58 PMExpires: Never23 views
SnapInsta Instagram Downloader
Raw
1const axios = require('axios');
2const cheerio = require('cheerio');
3
4/**
5 * SnapInsta Instagram Downloader
6 * @param {string} url - Link Instagram (Post, Reels, Story, dll)
7 */
8async function snapinstaDownloader(url) {
9    try {
10        const igRegex = /(?:https?:\/\/)?(?:www\.)?instagram\.com\/(?:p|reel|reels|tv|stories)\/([^/?&]+)/i;
11        if (!igRegex.test(url)) {
12            throw new Error('URL tidak valid. Pastikan URL berasal dari Instagram.');
13        }
14
15        const payload = new URLSearchParams({ url: url }).toString();
16
17        const response = await axios.post('https://snapinsta.tel/process', payload, {
18            headers: {
19                'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8',
20                'User-Agent': 'Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36',
21                'Referer': 'https://snapinsta.tel/',
22                'Origin': 'https://snapinsta.tel',
23                'X-Requested-With': 'XMLHttpRequest',
24                'Accept': 'text/html, */*; q=0.01'
25            },
26            timeout: 15000
27        });
28
29        const html = response.data;
30        
31        if (!html.includes('download-media')) {
32            throw new Error('Gagal mendapatkan link download. Akun mungkin private atau link salah.');
33        }
34
35        const $ = cheerio.load(html);
36        const results = [];
37
38        $('.download-item').each((index, element) => {
39            const $el = $(element);
40            
41            let username = $el.find('.download-top .left').text().trim();
42            username = username.replace(/\s+/g, ' '); // Bersihkan whitespace
43
44            const thumbnail = $el.find('.media-box img[alt="Preview"]').attr('src') || '';
45
46            const downloadUrl = $el.find('.download-media').attr('href') || '';
47            const mediaType = $el.find('.download-media').text().trim(); // misal: "Download Video" atau "Download Photo"
48
49            if (downloadUrl) {
50                results.push({
51                    username: username,
52                    thumbnail: thumbnail,
53                    type: mediaType,
54                    url: downloadUrl
55                });
56            }
57        });
58
59        return {
60            success: true,
61            creator: "Zix?",
62            username: results.length > 0 ? results[0].username : '',
63            results: results
64        };
65
66    } catch (error) {
67        return {
68            success: false,
69            message: error.message || 'Terjadi kesalahan pada server'
70        };
71    }
72}
73
74// Contoh penggunaan 
75const targetUrl = 'https://www.instagram.com/reel/Db-VI2bzYEN/?igsi=c2pqN3EyOTlzNDEz'; // URL dari data Anda
76
77(async () => {
78    console.log(`Sedang memproses: ${targetUrl}\n`);
79    const result = await snapinstaDownloader(targetUrl);
80    
81    if (result.success) {
82        console.log(`✅ Berhasil! Username: @${result.username}`);
83        console.log(`Jumlah media ditemukan: ${result.results.length}`);
84        console.log(JSON.stringify(result, null, 2));
85    } else {
86        console.error(`❌ Gagal: ${result.message}`);
87    }
88})();
88 lines·3,130 chars·3.1 KB