-
Star
(572)
You must be signed in to star a gist -
Fork
(106)
You must be signed in to fork a gist
-
-
Save abir-taheer/0d3f1313def5eec6b78399c0fb69e4b1 to your computer and use it in GitHub Desktop.
| if (window.location.origin !== "https://www.instagram.com") { | |
| window.alert( | |
| "Hey! You need to be on the instagram site before you run the code. I'm taking you there now but you're going to have to run the code into the console again.", | |
| ); | |
| window.location.href = "https://www.instagram.com"; | |
| console.clear(); | |
| } | |
| const fetchOptions = { | |
| credentials: "include", | |
| headers: { | |
| "X-IG-App-ID": "936619743392459", | |
| }, | |
| method: "GET", | |
| }; | |
| let username; | |
| const sleep = (ms) => new Promise((r) => setTimeout(r, ms)); | |
| const random = (min, max) => Math.floor(Math.random() * (max - min)) + min; | |
| // This function handles all of the pagination logic | |
| // Calls the API recursively until there are no more pages to load | |
| const concatFriendshipsApiResponse = async ( | |
| list, | |
| user_id, | |
| count, | |
| next_max_id = "", | |
| ) => { | |
| let url = `https://www.instagram.com/api/v1/friendships/${user_id}/${list}/?count=${count}`; | |
| if (next_max_id) { | |
| url += `&max_id=${next_max_id}`; | |
| } | |
| const data = await fetch(url, fetchOptions).then((r) => r.json()); | |
| if (data.next_max_id) { | |
| const timeToSleep = random(800, 1500); | |
| console.log( | |
| `Loaded ${data.users.length} ${list}. Sleeping ${timeToSleep}ms to avoid rate limiting`, | |
| ); | |
| await sleep(timeToSleep); | |
| return data.users.concat( | |
| await concatFriendshipsApiResponse( | |
| list, | |
| user_id, | |
| count, | |
| data.next_max_id, | |
| ), | |
| ); | |
| } | |
| return data.users; | |
| }; | |
| // helper methods to make the code a bit more readable | |
| const getFollowers = (user_id, count = 50, next_max_id = "") => { | |
| return concatFriendshipsApiResponse("followers", user_id, count, next_max_id); | |
| }; | |
| const getFollowing = (user_id, count = 50, next_max_id = "") => { | |
| return concatFriendshipsApiResponse("following", user_id, count, next_max_id); | |
| }; | |
| const getUserId = async (username) => { | |
| let user = username; | |
| const lower = user.toLowerCase(); | |
| const url = `https://www.instagram.com/api/v1/web/search/topsearch/?context=blended&query=${lower}&include_reel=false`; | |
| const data = await fetch(url, fetchOptions).then((r) => r.json()); | |
| const result = data.users?.find( | |
| (result) => result.user.username.toLowerCase() === lower, | |
| ); | |
| return result?.user?.pk || null; | |
| }; | |
| const getUserFriendshipStats = async (username) => { | |
| const user_id = await getUserId(username); | |
| if (!user_id) { | |
| throw new Error(`Could not find user with username ${username}`); | |
| } | |
| const followers = await getFollowers(user_id); | |
| const following = await getFollowing(user_id); | |
| const followersUsernames = followers.map((follower) => | |
| follower.username.toLowerCase(), | |
| ); | |
| const followingUsernames = following.map((followed) => | |
| followed.username.toLowerCase(), | |
| ); | |
| const followerSet = new Set(followersUsernames); | |
| const followingSet = new Set(followingUsernames); | |
| console.log(Array(28).fill("-").join("")); | |
| console.log( | |
| `Fetched`, | |
| followerSet.size, | |
| "followers and ", | |
| followingSet.size, | |
| " following.", | |
| ); | |
| console.log( | |
| `If this doesn't seem right then some of the output might be inaccurate`, | |
| ); | |
| const PeopleIDontFollowBack = Array.from(followerSet).filter( | |
| (follower) => !followingSet.has(follower), | |
| ); | |
| const PeopleNotFollowingMeBack = Array.from(followingSet).filter( | |
| (following) => !followerSet.has(following), | |
| ); | |
| return { | |
| PeopleIDontFollowBack, | |
| PeopleNotFollowingMeBack, | |
| }; | |
| }; | |
| // Make sure you don't delete the quotes | |
| // Replace "example_username" below with your instagram username | |
| // | |
| // Change this: | |
| username = "example_username"; | |
| // | |
| // | |
| // | |
| getUserFriendshipStats(username).then(console.log); |
2/26/2025 works fine
Hi please help
Still trynna figure it out
Been using this for years and just started not to work. Any suggestions?
Been using this for years and just started not to work. Any suggestions?
what's the error? maybe you can switch browser. i tried in chrome and firefox and it works perfectly. didn't test in safari tho
https://gist.github.com/bbompk/3efbb1371b0be6f357b1579a3eda1bfb
Python wrapped version using playwright
any update if its safe to use now
works fine for me
now it doesnt work and is saying
Uncaught SyntaxError: Identifier 'username' has already been declared
now it doesnt work and is saying
Uncaught SyntaxError: Identifier 'username' has already been declared
That's syntax error, you must did something wrong.
Try to copy the code again, change username and execute it.
Or just throw the code into some AI and let it fix for you
its broken
still broken >_>
why it is not working ?
I literally use this like every week. been using this for over a year now. works every time. thank you




def works love it thanks :3