Greasy Fork is available in English.

The Login-free GreasyFork

This is a script that allows you to access some plugins in GreasyFork that need to be logged in to view without a login status.

// ==UserScript==
// @name                    The Login-free GreasyFork
// @name:zh-CN              大人世界的GreasyFork
// @name:zh-TW              大人世界的GreasyFork
// @namespace               https://www.imxiaoanag.com/2024/03/27/%E4%B8%80%E4%B8%AAGreasy-Fork%E6%96%B0%E6%8F%92%E4%BB%B6/
// @version                 1.0.2
// @icon                    data:image/png;base64,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
// @description             This is a script that allows you to access some plugins in GreasyFork that need to be logged in to view without a login status.
// @description:zh-CN       这是一个能让你在未登录GreasyFork的情况下也可以访问一些需要登陆后才能查看的插件的脚本。
// @description:zh-TW       這是一個能讓你在未登入GreasyFork的情況下也可以存取一些需要登陸後才能查看的插件的腳本。
// @author                  imxiaoanag
// @match                   http*://greasyfork.org/*
// @match                   http*://www.greasyfork.org/*
// @match                   http*://sleazyfork.org/*
// @match                   http*://www.sleazyfork.org/*
// @grant                   GM_xmlhttpRequest
// @grant                   GM_setValue
// @grant                   GM_getValue
// @grant                   GM_registerMenuCommand
// @grant                   GM_notification
// @grant                   GM.xmlHttpRequest
// @grant                   GM.setValue
// @grant                   GM.getValue
// @grant                   GM.registerMenuCommand
// @grant                   GM.notification
// @connect                 greasyfork.org
// @connect                 sleazyfork.org
// @license                 MIT
// ==/UserScript==

(function() {
    'use strict';
    var _GM_xmlhttpRequest,_GM_registerMenuCommand,_GM_notification;
    if(typeof GM_xmlhttpRequest!='undefined'){
        _GM_xmlhttpRequest=GM_xmlhttpRequest;
    }else if(typeof GM!='undefined' && typeof GM.xmlHttpRequest!='undefined'){
        _GM_xmlhttpRequest=GM.xmlHttpRequest;
    }
    if(typeof GM_registerMenuCommand!='undefined'){
        _GM_registerMenuCommand=GM_registerMenuCommand;
    }else if(typeof GM!='undefined' && typeof GM.registerMenuCommand!='undefined'){
        _GM_registerMenuCommand=GM.registerMenuCommand;
    }
    if(typeof GM_notification!='undefined'){
        _GM_notification=GM_notification;
    }else if(typeof GM!='undefined' && typeof GM.notification!='undefined'){
        _GM_notification=GM.notification;
    }

    if(typeof _GM_xmlhttpRequest=='undefined')_GM_xmlhttpRequest=(f)=>{};
    if(typeof _GM_registerMenuCommand=='undefined')_GM_registerMenuCommand=(s,f)=>{};
    if(typeof _GM_notification=='undefined')_GM_notification=(s)=>{};
    var storage={
        supportGM: typeof GM_getValue=='function' && typeof GM_getValue('a','b')!='undefined',
        supportGMPromise: typeof GM!='undefined' && typeof GM.getValue=='function' && typeof GM.getValue('a','b')!='undefined',
        mxAppStorage:(function(){
            try{
                return window.external.mxGetRuntime().storage;
            }catch(e){
            };
        })(),
        operaUJSStorage:(function(){
            try{
                return window.opera.scriptStorage;
            }catch(e){
            };
        })(),
        setItem:function(key,value){
            if(this.operaUJSStorage){
                this.operaUJSStorage.setItem(key,value);
            }else if(this.mxAppStorage){
                this.mxAppStorage.setConfig(key,value);
            }else if(this.supportGM){
                GM_setValue(key,value);
            }else if(this.supportGMPromise){
                GM.setValue(key,value);
            }else if(window.localStorage){
                window.localStorage.setItem(key,value);
            };
        },
        getItem:function(key,cb){
            var value;
            if(this.operaUJSStorage){
                value=this.operaUJSStorage.getItem(key);
            }else if(this.mxAppStorage){
                value=this.mxAppStorage.getConfig(key);
            }else if(this.supportGM){
                value=GM_getValue(key);
            }else if(this.supportGMPromise){
                value=GM.getValue(key).then(v=>{cb(v)});
                return;
            }else if(window.localStorage){
                value=window.localStorage.getItem(key);
            };
            cb(value);
        },
    };
    if(document.querySelector('span.sign-in-link')){
        var otherSite=/greasyfork\.org/.test(location.hostname)?"sleazyfork":"greasyfork";
        if(/scripts\/\d+/.test(location.href)){
            if(!document.querySelector("#script-info") && (otherSite == "greasyfork" || document.querySelector("div.width-constraint>section>p>a").href.indexOf("sign_in")!=-1)){
                location.href=location.href.replace(/\/\/([^\.]+\.)?(greasyfork|sleazyfork)\.org/,"//$1"+otherSite+"\.org");
            }
        }else if(/\/(scripts|users)(\/|.*(\?|&)q=|.*[\?&]set=)/.test(location.href)){
            _GM_xmlhttpRequest({
                method: 'GET',
                url: location.href.replace(/\/\/([^\.]+\.)?(greasyfork|sleazyfork)\.org/,"//$1"+otherSite+"\.org"),
                onload: function(result) {
                    var doc = null;
                    try {
                        doc = document.implementation.createHTMLDocument('');
                        doc.documentElement.innerHTML = result.responseText;
                    }
                    catch (e) {
                        console.log('parse error');
                    }
                    if (!doc) {
                        return;
                    }
                    var l = doc.querySelector('ol.script-list');
                    if (l) {
                        var ml = document.querySelector('ol.script-list');
                        if(!ml){
                            ml=document.createElement("ol");
                            ml.setAttribute("class","script-list");
                            var list=document.querySelector('.sidebarred-main-content');
                            var ps=list.querySelectorAll("p");
                            for(let i=0;i<ps.length;i++){
                                let p=ps[i];
                                list.removeChild(p);
                            }
                            list.appendChild(ml);
                        }
                        var scs=l.querySelectorAll("li");
                        if(scs){
                            for(let i=0;i<scs.length;i++){
                                let sc=scs[i];
                                if(!ml.querySelector("li[data-script-id='"+sc.dataset.scriptId+"']")){
                                    //addScore(sc);
                                    ml.appendChild(sc);
                                }
                            }
                        }
                    }
                },
                onerror: function(e) {
                    console.log(e);
                }
            });
        }
    }
})();