✦ CODUM.TR
✦ CODUM.TR
✦ CODUM.TR
✦ CODUM.TR
✦ CODUM.TR
✦ CODUM.TR
✦ CODUM.TR
✦ CODUM.TR
✦ CODUM.TR
✦ CODUM.TR
✦ CODUM.TR
✦ CODUM.TR
✦ CODUM.TR
✦ CODUM.TR
✦ CODUM.TR
✦ CODUM.TR
✦ CODUM.TR
✦ CODUM.TR
✦ CODUM.TR
✦ CODUM.TR
✦ CODUM.TR
✦ CODUM.TR
✦ CODUM.TR
✦ CODUM.TR
✦ CODUM.TR
✦ CODUM.TR
✦ CODUM.TR
✦ CODUM.TR
✦ CODUM.TR
✦ CODUM.TR
✦ CODUM.TR
✦ CODUM.TR


Instagram VIP PANEL v3.0.0

⚠️ ÖNEMLİ BİLGİ: Bu sayfadaki kodlar yalnızca kopyalama amaçlıdır; sitede otomatik çalıştırılmaz. Kodu kullanmak için Tampermonkey kurup yeni script olarak eklemeniz gerekir. Otomasyonun sürekli, agresif veya dengesiz kullanımı platform limitlerine takılmanıza neden olabilir; hesabınız geçici olarak kilitlenebilir, kısıtlanabilir, askıya alınabilir veya kalıcı olarak kapatılabilir. Tüm işlemleri kendi sorumluluğunuzda, düşük hızda ve dikkatli şekilde kullanın.

1. Tampermonkey Kurulumu

Tarayıcınıza Tampermonkey uzantısını yükleyin. Ardından uzantı ayarlarından Geliştirici Modunu açın ve gerekiyorsa Dosya URL'lerine erişim iznini etkinleştirin.

2. Scripti Ekleme

Instagram için aşağıdaki kodu 📋 KOPYALA ile alın, Tampermonkey'de yeni script açıp yapıştırın ve kaydedin.

3. Nasıl Kullanılır?

Instagram sitesine giriş yapın, sayfayı yenileyin ve panel butonlarını kullanın.

Instagram hesabında script panelini açın, tarama başlatın ve takip etmeyenleri listeden seçip bırakın.

// ==UserScript==
// @name         CODUM.TR INSTAGRAM VIP PANEL
// @namespace    https://codum.tr/
// @version      3.0.0
// @description  Instagram Seni Takip Etmeyenleri Bulma ve Otomatik Unfollow Paneli
// @author       CODUM.TR
// @match        https://www.instagram.com/*
// @match        https://instagram.com/*
// @icon         https://www.google.com/s2/favicons?sz=64&domain=instagram.com
// @grant        none
// @run-at       document-idle
// ==/UserScript==

(() => {
  "use strict";
  if (!location.hostname.includes("instagram.com")) return;

  const APP_ID = "iu-app";
  const STYLE_ID = "iu-style";
  const STORAGE_KEY = "iu_state_v3";
  const IG_HEADERS = { "x-ig-app-id": "936619743392459", "x-requested-with": "XMLHttpRequest" };

  const PANEL_WIDTH = 380;
  const state = { mode: "idle", users: [], selected: new Set() };

  function injectStyles() {
    if (document.getElementById(STYLE_ID)) return;
    const style = document.createElement("style");
    style.id = STYLE_ID;
    style.textContent = `
      #${APP_ID} { position: fixed; inset: 0; pointer-events: none; z-index: 2147483647; color: #f1f3f5; font-family: sans-serif; font-size: 14px; }
      #${APP_ID} > * { pointer-events: auto; }
      #${APP_ID} .iu-panel { position: absolute; width: ${PANEL_WIDTH}px; background: #0d1117; border: 1px solid #20e371; border-radius: 12px; box-shadow: 0 10px 30px rgba(0,0,0,0.8); overflow: hidden; right: 18px; bottom: 18px; }
      #${APP_ID} .iu-header { display: flex; justify-content: space-between; align-items: center; padding: 12px; background: #161b22; border-bottom: 1px solid #21262d; }
      #${APP_ID} .iu-brand-text strong { color: #20e371; font-size: 13px; }
      #${APP_ID} .iu-welcome { padding: 24px 18px; text-align: center; }
      #${APP_ID} .iu-btn { background: #161b22; border: 1px solid #20e371; color: #20e371; padding: 8px 16px; border-radius: 6px; cursor: pointer; font-weight: bold; margin-top: 10px; }
      #${APP_ID} .iu-btn:hover { background: #20e371; color: #0d1117; }
      #${APP_ID} .iu-progress { padding: 20px; }
      #${APP_ID} .iu-bar { height: 6px; background: rgba(255,255,255,0.1); border-radius: 3px; overflow: hidden; margin: 10px 0; }
      #${APP_ID} .iu-bar > span { display: block; height: 100%; background: #20e371; transition: width 0.3s; }
      #${APP_ID} .iu-list { max-height: 40vh; overflow-y: auto; border-top: 1px solid #21262d; border-bottom: 1px solid #21262d; }
      #${APP_ID} .iu-row { display: grid; grid-template-columns: 20px 36px 1fr; gap: 8px; padding: 8px 12px; align-items: center; border-bottom: 1px solid #161b22; }
      #${APP_ID} .iu-avatar { width: 32px; height: 32px; border-radius: 50%; object-fit: cover; }
      #${APP_ID} .iu-actionbar { display: flex; justify-content: space-between; padding: 10px 12px; background: #0d1117; }
    `;
    document.head.appendChild(style);
  }

  function mount() {
    let root = document.getElementById(APP_ID);
    if (!root) { root = document.createElement("div"); root.id = APP_ID; document.body.appendChild(root); }
    injectStyles();
    renderShell();
  }

  function renderShell() {
    const root = document.getElementById(APP_ID);
    if (!root) return;
    root.innerHTML = `
      <section class="iu-panel">
        <header class="iu-header">
          <div class="iu-brand-text"><strong>>_ CODUM.TR INSTAGRAM VIP</strong></div>
        </header>
        <div id="iu-body"></div>
      </section>
    `;
    renderBody();
  }

  function renderBody() {
    const body = document.getElementById("iu-body");
    if (!body) return;

    if (state.mode === "scanning") {
      body.innerHTML = `<div class="iu-progress"><h2>Takip Ettikleriniz Yükleniyor...</h2><div class="iu-bar"><span style="width:50%"></span></div></div>`;
    } else if (state.mode === "results") {
      const nonFollowers = state.users.filter(u => !u.follows_viewer);
      body.innerHTML = `
        <div class="iu-results">
          <div style="padding:10px; font-size:12px; color:#8b949e;">${nonFollowers.length} takip etmeyen bulundu</div>
          <div class="iu-list">${nonFollowers.map(u => `
            <div class="iu-row">
              <input type="checkbox" ${state.selected.has(u.id) ? 'checked' : ''} onclick="window.iuToggle('${u.id}')">
              <img class="iu-avatar" src="${u.profile_pic_url}" alt="">
              <div style="font-size:12px; font-weight:bold;">@${u.username}</div>
            </div>
          `).join('')}</div>
          <div class="iu-actionbar">
            <button class="iu-btn" onclick="window.iuUnfollow()">Takibi Bırak (${state.selected.size})</button>
          </div>
        </div>
      `;
    } else {
      body.innerHTML = `
        <div class="iu-welcome">
          <h2>Hazır olduğunda başlat</h2>
          <p style="font-size:12px; color:#8b949e; margin-top:6px;">Sadece takip ettikleriniz taranır ve geri takip yapmayanlar listelenir.</p>
          <button class="iu-btn" id="iu-scan-btn">Taramayı Başlat</button>
        </div>
      `;
      document.getElementById("iu-scan-btn")?.addEventListener("click", startScan);
    }
  }

  function getCookie(name) {
    const match = document.cookie.match(new RegExp("(^|; )" + name.replace(/[.*+?^$${}()|[\]\\]/g, "\\$&") + "=([^;]*)"));
    return match ? decodeURIComponent(match[2]) : null;
  }

  async function startScan() {
    const viewerId = getCookie("ds_user_id");
    if (!viewerId) { alert("Instagram çerezi okunamadı. Oturum açtığınızdan emin olun."); return; }

    state.mode = "scanning";
    state.users = [];
    renderBody();

    try {
      let cursor = "";
      while (true) {
        const variables = { id: viewerId, include_reel: true, fetch_mutual: false, first: 24 };
        if (cursor) variables.after = cursor;
        const url = `/graphql/query/?query_hash=3dec7e2c57367ef3da3d987d89f9dbc8&variables=${encodeURIComponent(JSON.stringify(variables))}`;

        const res = await fetch(url, { headers: IG_HEADERS, credentials: "include" });
        const json = await res.json();
        const edge = json?.data?.user?.edge_follow;
        if (!edge?.edges) break;

        state.users.push(...edge.edges.map(e => ({
          id: String(e.node.id),
          username: String(e.node.username),
          profile_pic_url: String(e.node.profile_pic_url),
          follows_viewer: Boolean(e.node.follows_viewer)
        })));

        cursor = edge.page_info?.end_cursor;
        if (!edge.page_info?.has_next_page || !cursor) break;
        await new Promise(r => setTimeout(r, 800));
      }

      state.mode = "results";
      renderBody();
    } catch (e) {
      alert("Hata: " + e.message);
      state.mode = "idle";
      renderBody();
    }
  }

  window.iuToggle = id => {
    if (state.selected.has(id)) state.selected.delete(id);
    else state.selected.add(id);
    renderBody();
  };

  window.iuUnfollow = async () => {
    const csrf = getCookie("csrftoken");
    if (!csrf) return alert("csrftoken okunamadı.");

    for (let id of Array.from(state.selected)) {
      await fetch(`/api/v1/friendships/destroy/${id}/`, {
        method: "POST", credentials: "include",
        headers: { ...IG_HEADERS, "content-type": "application/x-www-form-urlencoded", "x-csrftoken": csrf }
      });
      state.selected.delete(id);
      state.users = state.users.filter(u => u.id !== id);
      renderBody();
      await new Promise(r => setTimeout(r, 4000));
    }
    alert("Tamamlandı!");
  };

  mount();
})();