PureRender

Zero-latency performance: Blocks trackers and forces instant rendering by bypassing loaders.

2026-02-11 기준 버전입니다. 최신 버전을 확인하세요.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

// ==UserScript==
// @name         PureRender
// @namespace    https://github.com/wandersons13/PureRender
// @version      0.1
// @description  Zero-latency performance: Blocks trackers and forces instant rendering by bypassing loaders.
// @author       wandersons13
// @match        *://*/*
// @run-at       document-start
// @grant        GM_addStyle
// @grant        GM_getValue
// @grant        GM_setValue
// @grant        GM_registerMenuCommand
// @license      GNU
// ==/UserScript==

(function() {
    'use strict';

    const currentHost = window.location.hostname;
    const excluded = GM_getValue('excluded_sites', []);

    if (excluded.some(site => currentHost.includes(site))) return;

    const blockedKeywords = [
        'google-analytics', 
        'googletagmanager', 
        'facebook.net', 
        'adservice', 
        'telemetry', 
        'analytics.js',
        'doubleclick'
    ];

    const shouldBlock = (url) => {
        if (!url || typeof url !== 'string') return false;
        for (let i = 0; i < blockedKeywords.length; i++) {
            if (url.indexOf(blockedKeywords[i]) !== -1) return true;
        }
        return false;
    };

    const nativeFetch = window.fetch;
    window.fetch = function(input, init) {
        const url = typeof input === 'string' ? input : (input?.url || '');
        if (shouldBlock(url)) return Promise.reject(new Error('Blocked by PureRender'));
        return nativeFetch.apply(this, arguments);
    };

    const nativeOpen = XMLHttpRequest.prototype.open;
    XMLHttpRequest.prototype.open = function(method, url) {
        if (shouldBlock(url)) {
            this.send = () => {}; 
            return;
        }
        return nativeOpen.apply(this, arguments);
    };

    GM_addStyle(`
        html, body {
            display: block !important;
            visibility: visible !important;
            opacity: 1 !important;
        }

        #preloader, .preloader, #loader, .loader, #loading, .loading, 
        [class*="spinner"], [id*="spinner"], .loading-overlay {
            display: none !important;
            opacity: 0 !important;
            visibility: hidden !important;
            pointer-events: none !important;
        }
    `);

    window.addEventListener('load', () => {
        try {
            const bodyStyle = getComputedStyle(document.body);
            if (bodyStyle.overflow === 'hidden') {
                document.body.style.setProperty('overflow', 'auto', 'important');
                document.documentElement.style.setProperty('overflow', 'auto', 'important');
            }
        } catch (e) {}
    }, { once: true });

    GM_registerMenuCommand("🚫 Exclude this site", () => {
        if (!excluded.includes(currentHost)) {
            excluded.push(currentHost);
            GM_setValue('excluded_sites', excluded);
            location.reload();
        }
    });

    GM_registerMenuCommand("🔄 Reset Exclusion List", () => {
        GM_setValue('excluded_sites', []);
        location.reload();
    });
})();