Blocki

Block Instagram from registering that you've viewed stories

이 스크립트를 설치하려면 Tampermonkey, Greasemonkey 또는 Violentmonkey와 같은 확장 프로그램이 필요합니다.

You will need to install an extension such as Tampermonkey to install this script.

이 스크립트를 설치하려면 Tampermonkey 또는 Violentmonkey와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 Tampermonkey 또는 Userscripts와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 Tampermonkey와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 유저 스크립트 관리자 확장 프로그램이 필요합니다.

(이미 유저 스크립트 관리자가 설치되어 있습니다. 설치를 진행합니다!)

이 스타일을 설치하려면 Stylus와 같은 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 Stylus와 같은 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 Stylus와 같은 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 유저 스타일 관리자 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 유저 스타일 관리자 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 유저 스타일 관리자 확장 프로그램이 필요합니다.

(이미 유저 스타일 관리자가 설치되어 있습니다. 설치를 진행합니다!)

// ==UserScript==
// @name        Blocki
// @namespace    https://github.com/jOaawd/
// @version      1.0
// @description  Block Instagram from registering that you've viewed stories
// @author       https://github.com/jOaawd/
// @match        *://www.instagram.com/*
// @grant        none
// @license      CC BY-NC 4.0 https://creativecommons.org/licenses/by-nc/4.0/
// ==/UserScript==

(function () {
  'use strict';

  const blockPattern = /PolarisAPIReelSeenMutation|PolarisStoriesV3SeenMutation/i;

  // XMLHttpRequest
  const originalXHROpen = XMLHttpRequest.prototype.open;
  const originalXHRSend = XMLHttpRequest.prototype.send;

  XMLHttpRequest.prototype.send = function (body) {
    if (typeof body === 'string' && blockPattern.test(body)) {
      console.log('[Blocki] Blocked XHR story seen mutation:', body);
      return; // Block the request
    }
    return originalXHRSend.apply(this, arguments);
  };

  // Fetch
  const originalFetch = window.fetch;
  window.fetch = function () {
    const args = arguments;
    let bodyToCheck = '';

    try {
      const request = args[0];
      const options = args[1] || {};
      bodyToCheck = options.body || '';

      if (typeof bodyToCheck === 'string' && blockPattern.test(bodyToCheck)) {
        console.log('[Blocki] Blocked fetch story seen mutation:', bodyToCheck);
        return new Promise(() => {}); // Return a never resolving Promise to silently cancel
      }
    } catch (err) {
      console.warn('[Blocki] Error checking fetch body', err);
    }

    return originalFetch.apply(this, args);
  };

})();