CODUM
CODUM.TR LABS
v5.0 PRO • Non-Followers Instagram / Meta

Instagram Non-Followers Finder & Auto Unfollower

Detect who doesn't follow you back on Instagram in seconds. Protect friends and verified accounts, and unfollow target accounts safely directly in your browser.

Setup Steps & Code

Key Capabilities

Analyzes followers vs following to pinpoint non-followers instantly

Dual mode: Unfollow non-followers only or wipe all following

Automatic verified (blue badge) account protection filter

Custom Whitelist system to keep friends and VIP accounts untouched

Session safety limit and randomized human delays to prevent action blocks

F12 Live Console Script PRO v4.5

Instagram Following Cleaner Engine

1. Listeyi Aç

Open Following modal on your Instagram profile.

2. F12 Konsol

Press F12 and switch to the Console tab.

3. Kodu Yapıştır

Paste the code in Console and press Enter.

4. Başlat

Click Start on the sleek HUD panel.

codum-instagram-unfollow.js %100 Şifresiz & Yerel
/**
 * ==============================================================
 *  ⚡ CODUM.TR • INSTAGRAM GELİŞMİŞ UNFOLLOW & TAKİP YÖNETİCİSİ v5.0 ⚡
 *  • Seni Geri Takip Etmeyenleri (Non-Followers) Otomatik Çıkarma
 *  • Toplu Takip Sıfırlama & Takipçi Çıkarma Motoru
 *  Resmi Web: https://codum.tr
 * ==============================================================
 */

(function () {
  // Önceki çalışan motoru ve arayüzü temizle
  if (window.__CODUM_UNFOLLOW) window.__CODUM_UNFOLLOW.stop();
  const prevUi = document.getElementById("codum-unfollow-suite");
  if (prevUi) prevUi.remove();
  const prevStyles = document.getElementById("codum-unfollow-styles");
  if (prevStyles) prevStyles.remove();

  console.clear();
  console.log(
    `%c
   ██████╗ ██████╗ ██████╗ ██╗   ██╗███╗   ███╗████████╗██████╗ 
  ██╔════╝██╔═══██╗██╔══██╗██║   ██║████╗ ████║╚══██╔══╝██╔══██╗
  ██║     ██║   ██║██║  ██║██║   ██║██╔████╔██║   ██║   ██████╔╝
  ██║     ██║   ██║██║  ██║██║   ██║██║╚██╔╝██║   ██║   ██╔══██╗
  ╚██████╗╚██████╔╝██████╔╝╚██████╔╝██║ ╚═╝ ██║   ██║   ██║  ██║
   ╚═════╝ ╚═════╝ ╚═════╝  ╚═════╝ ╚═╝     ╚═╝   ╚═╝   ╚═╝  ╚═╝
     ⚡ INSTAGRAM GELİŞMİŞ UNFOLLOW SUITE v5.0 | CODUM.TR ⚡
    `,
    "background: linear-gradient(135deg, #6366f1, #d946ef); color: #fff; font-size: 11px; font-weight: bold; padding: 10px; border-radius: 8px;"
  );

  function playTone(type = "start") {
    try {
      const ctx = new (window.AudioContext || window.webkitAudioContext)();
      const osc = ctx.createOscillator();
      const gain = ctx.createGain();
      osc.connect(gain);
      gain.connect(ctx.destination);
      if (type === "start") {
        osc.frequency.setValueAtTime(520, ctx.currentTime);
        osc.frequency.exponentialRampToValueAtTime(1040, ctx.currentTime + 0.15);
      } else if (type === "success") {
        osc.frequency.setValueAtTime(440, ctx.currentTime);
        osc.frequency.setValueAtTime(880, ctx.currentTime + 0.1);
      } else {
        osc.frequency.setValueAtTime(650, ctx.currentTime);
        osc.frequency.exponentialRampToValueAtTime(300, ctx.currentTime + 0.2);
      }
      gain.gain.setValueAtTime(0.08, ctx.currentTime);
      gain.gain.linearRampToValueAtTime(0.01, ctx.currentTime + 0.2);
      osc.start();
      osc.stop(ctx.currentTime + 0.22);
    } catch (e) {}
  }

  // Cookie ve Kimlik Yardımcıları
  function getCookie(name) {
    const match = document.cookie.match(new RegExp("(^|;\\s*)(" + name + ")=([^;]*)"));
    return match ? decodeURIComponent(match[3]) : null;
  }

  const ds_user_id = getCookie("ds_user_id");
  const csrftoken = getCookie("csrftoken");

  const styles = document.createElement("style");
  styles.id = "codum-unfollow-styles";
  styles.innerHTML = `
    @import url('https://fonts.googleapis.com/css2?family=Plus+Jakarta+Sans:wght@400;600;700;800&family=JetBrains+Mono:wght@500;700&display=swap');
    
    #codum-unfollow-suite * {
      box-sizing: border-box;
      font-family: 'Plus Jakarta Sans', -apple-system, sans-serif;
    }

    #codum-unfollow-suite {
      position: fixed;
      top: 25px;
      right: 25px;
      width: 350px;
      background: rgba(11, 13, 20, 0.94);
      backdrop-filter: blur(28px);
      -webkit-backdrop-filter: blur(28px);
      border: 1px solid rgba(255, 255, 255, 0.08);
      border-radius: 20px;
      box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.85), 0 0 35px rgba(99, 102, 241, 0.25);
      z-index: 9999999999;
      color: #f1f5f9;
      overflow: hidden;
      transition: width 0.3s cubic-bezier(0.4, 0, 0.2, 1);
    }

    #codum-unfollow-suite::before {
      content: '';
      position: absolute;
      top: 0; left: 0; right: 0; height: 3px;
      background: linear-gradient(90deg, #6366f1, #d946ef, #06b6d4);
    }

    .c-header {
      padding: 14px 16px;
      display: flex;
      justify-content: space-between;
      align-items: center;
      cursor: grab;
      border-bottom: 1px solid rgba(255, 255, 255, 0.06);
    }

    .c-badge {
      font-size: 9px;
      font-weight: 800;
      letter-spacing: 0.6px;
      padding: 3px 8px;
      border-radius: 99px;
      background: rgba(99, 102, 241, 0.15);
      border: 1px solid rgba(99, 102, 241, 0.4);
      color: #a5b4fc;
    }

    .c-stat-grid {
      display: grid;
      grid-template-columns: 1fr 1fr 1fr;
      gap: 8px;
      padding: 12px 16px 8px;
    }

    .c-card {
      background: rgba(255, 255, 255, 0.03);
      border: 1px solid rgba(255, 255, 255, 0.06);
      border-radius: 12px;
      padding: 8px 10px;
      text-align: center;
    }

    .c-card-title {
      font-size: 9px;
      font-weight: 700;
      color: #94a3b8;
      text-transform: uppercase;
      margin-bottom: 3px;
    }

    .c-card-val {
      font-size: 18px;
      font-weight: 800;
      font-family: 'JetBrains Mono', monospace;
    }

    .c-select {
      width: 100%;
      background: rgba(0, 0, 0, 0.5);
      border: 1px solid rgba(255, 255, 255, 0.12);
      border-radius: 8px;
      color: #fff;
      padding: 7px 10px;
      font-size: 11.5px;
      font-weight: 600;
      outline: none;
      cursor: pointer;
    }

    .c-switch {
      position: relative;
      display: inline-block;
      width: 36px;
      height: 20px;
    }
    .c-switch input { opacity: 0; width: 0; height: 0; }
    .c-slider {
      position: absolute; cursor: pointer; top: 0; left: 0; right: 0; bottom: 0;
      background-color: #262738;
      transition: .3s;
      border-radius: 34px;
      border: 1px solid rgba(255, 255, 255, 0.08);
    }
    .c-slider:before {
      position: absolute; content: ""; height: 14px; width: 14px; left: 2px; bottom: 2px;
      background-color: #fff;
      transition: .3s;
      border-radius: 50%;
    }
    input:checked + .c-slider {
      background: linear-gradient(135deg, #6366f1, #d946ef);
    }
    input:checked + .c-slider:before {
      transform: translateX(16px);
    }

    .c-terminal {
      background: #08090f;
      border: 1px solid rgba(255, 255, 255, 0.06);
      border-radius: 12px;
      padding: 8px 12px;
      height: 75px;
      overflow-y: auto;
      font-family: 'JetBrains Mono', monospace;
      font-size: 10px;
      color: #cbd5e1;
      display: flex;
      flex-direction: column;
      gap: 3px;
      margin: 0 16px 12px;
    }
    .c-terminal::-webkit-scrollbar { width: 3px; }
    .c-terminal::-webkit-scrollbar-thumb { background: #262a42; border-radius: 4px; }

    .c-btn {
      flex: 1;
      padding: 10px;
      border-radius: 12px;
      border: none;
      font-weight: 700;
      font-size: 12px;
      cursor: pointer;
      display: flex;
      align-items: center;
      justify-content: center;
      gap: 6px;
      transition: all 0.2s ease;
    }

    .c-btn-start {
      background: linear-gradient(135deg, #6366f1, #8b5cf6);
      color: #fff;
      box-shadow: 0 4px 15px rgba(99, 102, 241, 0.35);
    }
    .c-btn-start:hover {
      box-shadow: 0 6px 20px rgba(99, 102, 241, 0.55);
      transform: translateY(-1px);
    }

    .c-btn-stop {
      background: rgba(239, 68, 68, 0.15);
      border: 1px solid rgba(239, 68, 68, 0.3) !important;
      color: #f87171;
    }

    #codum-unfollow-suite.minimized {
      width: 210px;
      border-radius: 99px;
      padding: 6px 12px;
    }
    #codum-unfollow-suite.minimized .c-body,
    #codum-unfollow-suite.minimized .c-terminal {
      display: none !important;
    }
    #codum-unfollow-suite.minimized .c-header {
      padding: 0;
      border: none;
    }
  `;
  document.head.appendChild(styles);

  // Panel Arayüzü
  const ui = document.createElement("div");
  ui.id = "codum-unfollow-suite";
  ui.innerHTML = `
    <!-- Header -->
    <div class="c-header" id="codum-drag-handle">
      <div style="display:flex; align-items:center; gap:9px;">
        <div style="width:26px; height:26px; border-radius:8px; background:linear-gradient(135deg, #6366f1, #d946ef); display:flex; align-items:center; justify-content:center; box-shadow:0 0 10px rgba(217,70,239,0.3);">
          <span style="font-size:12px;">⚡</span>
        </div>
        <div>
          <div style="font-weight:800; font-size:13px; letter-spacing:-0.2px;">
            codum<span style="color:#d946ef;">.tr</span>
          </div>
          <div style="font-size:9px; color:#64748b; font-weight:600;">UNFOLLOW PRO v5.0</div>
        </div>
      </div>
      <div style="display:flex; align-items:center; gap:6px;">
        <span class="c-badge">PRO</span>
        <button id="c-btn-min" style="background:none; border:none; color:#64748b; cursor:pointer; font-size:14px; padding:2px;">—</button>
        <button id="c-btn-close" style="background:none; border:none; color:#64748b; cursor:pointer; font-size:15px; padding:2px;">✕</button>
      </div>
    </div>

    <!-- Body -->
    <div class="c-body">
      <!-- Sayaçlar -->
      <div class="c-stat-grid">
        <div class="c-card">
          <div class="c-card-title">Hedef</div>
          <div class="c-card-val" id="c-stat-target" style="color:#38bdf8;">0</div>
        </div>
        <div class="c-card">
          <div class="c-card-title">Çıkarılan</div>
          <div class="c-card-val" id="c-stat-cleaned" style="color:#34d399;">0</div>
        </div>
        <div class="c-card">
          <div class="c-card-title">Korunan</div>
          <div class="c-card-val" id="c-stat-skipped" style="color:#f59e0b;">0</div>
        </div>
      </div>

      <!-- Ayarlar -->
      <div style="padding: 0 16px 12px; display:flex; flex-direction:column; gap:8px;">
        <div>
          <span style="font-size:11px; color:#94a3b8; font-weight:600; display:block; margin-bottom:4px;">İşlem Modu</span>
          <select id="c-mode" class="c-select">
            <option value="non_followers">🎯 Seni Takip Etmeyenleri Çıkar (Unfollow)</option>
            <option value="all_following">🧹 Tüm Takip Edilenleri Sıfırla</option>
          </select>
        </div>

        <div style="display:flex; justify-content:space-between; align-items:center;">
          <span style="font-size:11px; color:#94a3b8; font-weight:500;">Gecikme Aralığı (Saniye)</span>
          <div style="display:flex; align-items:center; gap:4px;">
            <input type="number" step="0.5" id="c-min-sec" value="2.0" style="width:42px; background:rgba(0,0,0,0.4); border:1px solid rgba(255,255,255,0.1); border-radius:6px; color:#fff; text-align:center; padding:3px; font-size:11px;">
            <span style="color:#475569;">-</span>
            <input type="number" step="0.5" id="c-max-sec" value="4.5" style="width:42px; background:rgba(0,0,0,0.4); border:1px solid rgba(255,255,255,0.1); border-radius:6px; color:#fff; text-align:center; padding:3px; font-size:11px;">
          </div>
        </div>

        <div style="display:flex; justify-content:space-between; align-items:center;">
          <span style="font-size:11px; color:#94a3b8; font-weight:500;">Maksimum İşlem Limiti</span>
          <input type="number" id="c-max-limit" value="50" style="width:55px; background:rgba(0,0,0,0.4); border:1px solid rgba(255,255,255,0.1); border-radius:6px; color:#34d399; text-align:center; padding:3px; font-size:11px; font-weight:700;">
        </div>

        <div style="display:flex; justify-content:space-between; align-items:center;">
          <span style="font-size:11px; color:#94a3b8; font-weight:500;">Mavi Tikli Hesapları Koru</span>
          <label class="c-switch">
            <input type="checkbox" id="c-chk-verified" checked>
            <span class="c-slider"></span>
          </label>
        </div>

        <div>
          <span style="font-size:11px; color:#94a3b8; font-weight:500; display:block; margin-bottom:3px;">Koruma Listesi (Whitelist)</span>
          <input type="text" id="c-whitelist" placeholder="kullanici1, kullanici2" style="width:100%; background:rgba(0,0,0,0.4); border:1px solid rgba(255,255,255,0.1); border-radius:8px; color:#fff; padding:6px 10px; font-size:11px;">
        </div>
      </div>

      <!-- Mini Terminal Log -->
      <div class="c-terminal" id="c-terminal">
        <div><span style="color:#6366f1;">●</span> Sistem hazır. Modu seçip başlatabilirsiniz.</div>
      </div>

      <!-- Aksiyon Butonları -->
      <div style="display:flex; gap:8px; padding: 0 16px 14px;">
        <button id="c-btn-start" class="c-btn c-btn-start">
          <span>🚀</span> Unfollow Başlat
        </button>
        <button id="c-btn-stop" class="c-btn c-btn-stop" disabled style="opacity:0.5; cursor:not-allowed;">
          Durdur
        </button>
      </div>

      <!-- Footer -->
      <div style="padding:10px 16px; border-top:1px solid rgba(255,255,255,0.04); display:flex; justify-content:space-between; align-items:center; font-size:10px; color:#64748b;">
        <span>Instagram Güvenli Unfollow</span>
        <a href="https://codum.tr" target="_blank" style="color:#a5b4fc; text-decoration:none; font-weight:700;">codum.tr</a>
      </div>
    </div>
  `;
  document.body.appendChild(ui);

  // Draggable
  let isDragging = false, startX, startY, initX, initY;
  const dragHandle = document.getElementById("codum-drag-handle");
  dragHandle.onmousedown = (e) => {
    if (e.target.tagName === "BUTTON") return;
    isDragging = true;
    startX = e.clientX;
    startY = e.clientY;
    const rect = ui.getBoundingClientRect();
    initX = rect.left;
    initY = rect.top;
    ui.style.right = "auto";
  };
  window.onmousemove = (e) => {
    if (!isDragging) return;
    ui.style.left = `${initX + (e.clientX - startX)}px`;
    ui.style.top = `${initY + (e.clientY - startY)}px`;
  };
  window.onmouseup = () => (isDragging = false);

  // Terminal Log
  const terminal = document.getElementById("c-terminal");
  function logEvent(msg, color = "#cbd5e1") {
    const row = document.createElement("div");
    row.innerHTML = `<span style="color:${color};">›</span> ${msg}`;
    terminal.appendChild(row);
    terminal.scrollTop = terminal.scrollHeight;
  }

  // Küçültme
  const btnMin = document.getElementById("c-btn-min");
  btnMin.onclick = () => {
    ui.classList.toggle("minimized");
    btnMin.innerText = ui.classList.contains("minimized") ? "□" : "—";
  };

  const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
  const randomDelay = (min, max) => Math.floor((Math.random() * (max - min) + min) * 1000);

  // Instagram API ile Liste Çekme Motoru
  async function fetchUserList(type, onProgress) {
    let users = [];
    let nextMaxId = null;

    if (!ds_user_id || !csrftoken) {
      throw new Error("Oturum bilgisi alınamadı. Instagram'a giriş yapıldığından emin olun.");
    }

    do {
      let url = `https://www.instagram.com/api/v1/friendships/${ds_user_id}/${type}/?count=100`;
      if (nextMaxId) url += `&max_id=${nextMaxId}`;

      const res = await fetch(url, {
        headers: {
          "X-CSRFToken": csrftoken,
          "X-IG-App-ID": "936619743392459",
          "X-Requested-With": "XMLHttpRequest"
        }
      });

      if (!res.ok) {
        if (res.status === 429) throw new Error("İstek sınırı (429)! Lütfen 5 dakika bekleyin.");
        throw new Error(`API hatası: ${res.status}`);
      }

      const data = await res.json();
      const batch = data.users || [];
      users.push(...batch);
      nextMaxId = data.next_max_id || null;

      if (onProgress) onProgress(users.length);
      await sleep(500);
    } while (nextMaxId && window.__CODUM_UNFOLLOW?.active);

    return users;
  }

  // Tekil Kullanıcıyı Takipten Çıkarma (API)
  async function unfollowUserApi(userId) {
    const res = await fetch(`https://www.instagram.com/api/v1/friendships/destroy/${userId}/`, {
      method: "POST",
      headers: {
        "X-CSRFToken": csrftoken,
        "X-IG-App-ID": "936619743392459",
        "Content-Type": "application/x-www-form-urlencoded",
        "X-Requested-With": "XMLHttpRequest"
      }
    });
    return res.ok;
  }

  // Motor
  const unfollowEngine = {
    active: false,
    cleanedCount: 0,
    skippedCount: 0,

    stop() {
      this.active = false;
      playTone("stop");
      const btnStart = document.getElementById("c-btn-start");
      const btnStop = document.getElementById("c-btn-stop");
      btnStart.disabled = false;
      btnStart.style.opacity = "1";
      btnStart.style.cursor = "pointer";
      btnStop.disabled = true;
      btnStop.style.opacity = "0.5";
      btnStop.style.cursor = "not-allowed";
      logEvent(`İşlem durduruldu. Toplam unfollow: ${this.cleanedCount}`, "#f87171");
    },

    async start() {
      this.active = true;
      playTone("start");
      const btnStart = document.getElementById("c-btn-start");
      const btnStop = document.getElementById("c-btn-stop");
      btnStart.disabled = true;
      btnStart.style.opacity = "0.5";
      btnStart.style.cursor = "not-allowed";
      btnStop.disabled = false;
      btnStop.style.opacity = "1";
      btnStop.style.cursor = "pointer";

      const mode = document.getElementById("c-mode").value;
      const skipVerif = document.getElementById("c-chk-verified").checked;
      const wlText = document.getElementById("c-whitelist").value.toLowerCase();
      const whitelist = wlText.split(",").map((s) => s.trim().replace("@", "")).filter(Boolean);
      const minS = parseFloat(document.getElementById("c-min-sec").value) || 2.0;
      const maxS = parseFloat(document.getElementById("c-max-sec").value) || 4.5;
      const maxLimit = parseInt(document.getElementById("c-max-limit").value, 10) || 50;

      const statTarget = document.getElementById("c-stat-target");
      const statCl = document.getElementById("c-stat-cleaned");
      const statSk = document.getElementById("c-stat-skipped");

      try {
        let targets = [];

        if (mode === "non_followers") {
          logEvent("🔍 Takipçileriniz taranıyor...", "#38bdf8");
          const followers = await fetchUserList("followers", (count) => {
            logEvent(`Takipçiler: ${count} hesap okundu`, "#94a3b8");
          });
          if (!this.active) return;

          logEvent("🔍 Takip ettikleriniz taranıyor...", "#38bdf8");
          const following = await fetchUserList("following", (count) => {
            logEvent(`Takip edilenler: ${count} hesap okundu`, "#94a3b8");
          });
          if (!this.active) return;

          const followerIds = new Set(followers.map((u) => u.pk || u.id));
          targets = following.filter((u) => !followerIds.has(u.pk || u.id));
          logEvent(`🎯 Seni takip ETMEYEN ${targets.length} hesap tespit edildi!`, "#34d399");
        } else {
          logEvent("🔍 Takip edilenler listesi alınıyor...", "#38bdf8");
          targets = await fetchUserList("following", (count) => {
            logEvent(`Takip edilenler: ${count} hesap okundu`, "#94a3b8");
          });
        }

        statTarget.innerText = targets.length;

        for (const user of targets) {
          if (!this.active) break;
          if (this.cleanedCount >= maxLimit) {
            logEvent(`🛑 Belirlenen limit (${maxLimit}) doldu. Hesap güvenliği için durduruldu.`, "#f59e0b");
            playTone("success");
            break;
          }

          const username = (user.username || "").toLowerCase();

          // Whitelist Kontrolü
          if (whitelist.includes(username)) {
            this.skippedCount++;
            statSk.innerText = this.skippedCount;
            logEvent(`@${username} korundu (Listede)`, "#f59e0b");
            continue;
          }

          // Mavi Tik Kontrolü
          if (skipVerif && user.is_verified) {
            this.skippedCount++;
            statSk.innerText = this.skippedCount;
            logEvent(`@${username} korundu (Mavi Tik)`, "#f59e0b");
            continue;
          }

          // Unfollow Gönder
          const ok = await unfollowUserApi(user.pk || user.id);
          if (ok) {
            this.cleanedCount++;
            statCl.innerText = this.cleanedCount;
            const delay = randomDelay(minS, maxS);
            logEvent(`@${username} takipten çıkıldı (${(delay / 1000).toFixed(1)}s bekleme)`, "#34d399");
            await sleep(delay);
          } else {
            logEvent(`@${username} işleminde hata oluştu (Rate Limit?)`, "#f87171");
            await sleep(5000);
          }
        }

        if (this.cleanedCount > 0 && this.cleanedCount < maxLimit) {
          logEvent("🎉 İşlem tamamlandı! Hedeflenen hesaplar temizlendi.", "#34d399");
          playTone("success");
        }
      } catch (err) {
        logEvent(`Hata: ${err.message}`, "#f87171");
      }

      this.stop();
    }
  };

  window.__CODUM_UNFOLLOW = unfollowEngine;

  document.getElementById("c-btn-start").onclick = () => unfollowEngine.start();
  document.getElementById("c-btn-stop").onclick = () => unfollowEngine.stop();
  document.getElementById("c-btn-close").onclick = () => {
    unfollowEngine.stop();
    ui.remove();
    styles.remove();
  };
})();

How It Works (3 Easy Steps)

Passwordless, 100% browser-native safe automation.

%100 Yerel DOM
1

Step 1

Log into Instagram on your desktop browser (Chrome, Edge, Brave, Opera).

2

Step 2

Press F12 on your keyboard to open the Developer Console.

3

Step 3

Paste the CODUM Unfollow script and press Enter.

4

Step 4

Configure your whitelist and settings, then click 'Start Unfollow'.

Instagram Non-Followers Finder & Auto Unfollower — Working Interface
Instagram Non-Followers Finder & Auto Unfollower Live Interface Preview

Frequently Asked Questions

Do I need to enter my password?

Never! Everything runs 100% locally in your browser console. No login details are sent anywhere.

How does it detect non-followers?

The script queries your profile's followers and following lists and computes the exact set difference.

Will my account get action blocked?

The tool uses built-in rate-limiting, session caps (e.g. 50 unfollows per run), and natural randomized pauses.

Explore Other Social Media Tools

✓ Code copied! Paste it into the F12 Console.