@kelvdra/scraper
Version:
A simple scraper by kelvdra.
45 lines (40 loc) • 1.76 kB
JavaScript
import axios from "axios";
import * as cheerio from "cheerio";
export async function igStalk(username) {
const url = `https://socialstats.info/report/${username}/instagram`;
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": "id-ID,id;q=0.9",
"Connection": "keep-alive",
"Referer": "https://socialstats.info/",
"Sec-Fetch-Dest": "document",
"Sec-Fetch-Mode": "navigate",
"Sec-Fetch-Site": "same-origin",
"Sec-Fetch-User": "?1",
"Upgrade-Insecure-Requests": "1",
"User-Agent": "Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Mobile Safari/537.36",
"sec-ch-ua": '"Chromium";v="131", "Not_A Brand";v="24", "Microsoft Edge Simulate";v="131", "Lemur";v="131"',
"sec-ch-ua-mobile": "?1",
"sec-ch-ua-platform": '"Android"'
};
try {
const { data } = await axios.get(url, { headers });
const $ = cheerio.load(data);
return {
username: $(".text-dark").text().trim() || null,
fullName: $("h1").text().trim() || null,
profileImage: $(".instagram-avatar").attr("src") || null,
bio: $("small.text-muted").first().text().trim() || null,
followers: $(".report-header-number").eq(0).text().trim() || null,
uploads: $(".report-header-number").eq(1).text().trim() || null,
engagement: $(".report-header-number").eq(2).text().trim() || null,
isVerified: $(".user-verified-badge").length > 0
};
} catch (error) {
console.error("Error fetching data:", error.message);
return {
error: true,
message: error.message || "Gagal mengambil data"
};
}
}