Inside SeeWhoUnfollowedYou: The Zero-Cloud Intelligence Agent
How a vanilla JavaScript Chrome extension uses local session cookies and undocumented GraphQL endpoints to render sketchy analytics SaaS obsolete.
- SeeWhoUnfollowedYou eliminates the need for cloud-based credential harvesting by running entirely within the user's local browser context.
- The extension hijacks existing session cookies to query Instagram's internal GraphQL endpoints without requiring an official API key.
- A deliberate 'Slow Burn' progress mechanism masks unpredictable network latency during pagination to prevent the UI from appearing frozen.
- Local storage is used to calculate diffs between scans, instantly categorizing users as strangers or recent unfollowers.
The Credential Harvesting Trap
The ecosystem of social media analytics tools is notoriously predatory. Most 'who unfollowed me' applications require users to hand over their account passwords to a third-party server. This exposes users to significant security risks and frequent account bans.
SeeWhoUnfollowedYou takes the opposite approach. It operates entirely as a local intelligence agent, never letting your data leave your machine.
| Feature | Traditional SaaS Trackers | SeeWhoUnfollowedYou |
|---|---|---|
| Architecture | Cloud Database | Local Storage |
| Authentication | OAuth or Passwords | Local Session Cookies |
| API Usage | Official Paid API | Internal GraphQL |
| Cost | Monthly Subscription | Free Open Source |
<p align="center"> A privacy-first Chrome extension that helps you track unfollowers, detect "snakes", and analyze your account growth with a sleek, dark-mode UI. </p>
The Benevolent Parasite Architecture
Instead of asking for a login, the extension acts as a benevolent parasite. It uses the utils.js file to grab the ds_user_id cookie directly from the user's active browser session.
With this cookie, the background worker sends requests to Instagram's internal, undocumented GraphQL endpoints using hardcoded query hashes. This bypasses the need for official API keys entirely.
The Psychology of the Progress Bar
Web scraping is inherently unpredictable. Rate limits and pagination make a linear progress bar nearly impossible to calculate accurately.
To solve this, the background.js orchestrator employs a 4-Phase Monotonic Progress System. When data fetching slows down, the UI enters a 'Slow Burn' phase. The progress bar continues to creep forward at a microscopic pace, preventing the user from assuming the application has frozen.
Calculating the Diff
The actual value of the extension lies in its local state machine. The application stores previous scan results in chrome.storage.local.
When a new scan completes, the popup instantly compares the new follower list against the stored history. It filters the user base into distinct categories (strangers who never followed back, and users who recently unfollowed the account) without ever hitting an external database.