大人世界的GreasyFork

这是一个能让你在未登录GreasyFork的情况下也可以访问一些需要登陆后才能查看的插件的脚本。

当前为 2025-01-24 提交的版本,查看 最新版本

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Greasemonkey 油猴子Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Userscripts ,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==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,iVBORw0KGgoAAAANSUhEUgAAAGAAAABgBAMAAAFnsVqdAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAwUExURdsbG/8AANY1NecvL7RWVtZPT+tOTttxcepyctqNjeqNjdi8vO+urtrNzf7Z2f/9/fR+IUsAAAAJcEhZcwAACxMAAAsTAQCanBgAAAdbSURBVEjHlVfPbxxFFq7mFgR2v7Ha9gzjKs0VQUa5cUC7p70zywWtorF8XaGYkYALBxNx4wBM/oBEoxUrVmJjcUdoJ1xXdrxSbqvdqUAShYRqN1FibEIX36uq/jX2KKJk2a756nu/670aYe3jdWuFzTRp/JkSkRKZwh8S2cBGJMUgsdgKSZRJEt/Qc4q6IsNHGY7oXCoSOCCpDynkpFitWKaUylgvrC9OcByiaWIPNQlSTmYeq8xIERFhK1g3y5SGbCoe8TYVVuMPy7TZVGXyTcuSLYRJ+p+Z/BGbSLFoXqnIkpFSWdqGsT8ITcmutR5i4Qlk8P9TQZrkf6aWNUnnCpbDxE/wRBu3k8Je1lL/SLpnM1a6RUGNM+eEctOV3hzetXZt2Ey0XKKAQAAZ9gCbnO2csSpsYIGXxs7BnuAC4oUoK7/Z5+DdVJogTitxQWfSHsawWUv4o5R3h2LhZB5VnkLdGHGDp3ogB2RPeqBwCiWzRm5zQInsanvsAxJMmRC1xCSYcuRqwf2PhI6xeQKigbH2ZAOZcR4c/FvZ2IpgCoLjkhU2ztMC2vHRyT7Xm99uF3HDehqF09fDBx448Yo3JGk92K4A3XbytFRtrTNaLQCuE13opTWExQbt+8R1VVsdBk5iov8zBwr8x3BnGcAkeQo3mCP1TiqHqAQ5RFk/pY5D+pD5FWcVKQSXQyQpOeag28OofVMG4C0fyMSZ/lVdfwi3RyanANjxLorMjsKnkCXonHb/tDmmyEUJ9GYOSPRUUimNAf/fqMhDKU00QlFJ64rcV6RGK0BQSmnbuINyeJQS94g8NXectPPjDzm60ISfzDFgCCOzbR92/gSMl/SevsW2Zcon6lGl3Ae+U12ixlqqisE1poKzW6sSrL9H1NYxvWwb5cPrix6CXFRVBfwQJMX7TUCvIXHDTMtOUBGA70JItURa0wpAQRhdAisVsKUGnnFFAXCF4YAn1H7sge4lpjhhDOAG7IxKD1GYoXs8ice09ng+X4ITg0q8NqgDocXQ8gGtHdWBFdffI4pB2RmU1a59I5ui0penMKzdkIXbjTsT/4o7Mpro/EilEUo97Vg0cm7Wy9O2fUz3udAPXKbRuHCAKdes7Rl3Axywjz6sHYVDPNPLDlCkl8VlvikZXWNAL00KhhKuI9i2rZWty4EoPLVVi3EVFG6US069vpOys81TiqtmPSU043gWgIRa77RqFLlBYn+Uaxrh5GATFDRTg/RP3TiBzoMuzK9RNN9aXAA+ofOtvtPCjDEYMe4SND0g/ZekpHQ3WuIc56WLhn8RA7XwpTVb91bF/mBNS0c0ioANCx6LaR2oKGquAZRadsWT95yrPCaQh9KwVORRHSgoK6iSCypdyhiQeaqPnRbTkTzfuMqlNJYZmTfsFneGI5ZRiNJtpsTajdTVGoDBB8PGMlR7AIaJvq07MGy87YC85od2vsTVNKgD5Y1qUMg5UdzaWRPYrRrApC5M1TpDHlXAelrvJfnW+8qM80M57cx1n/wjosmU4k/m21K5Hr4f1ex4a28ebxLyv/lzUr96A7/oJdyYv6YLCfm3tMpVCMIx9ccgSH6j0Ovp2YS7lSXFWf6FP5UHdcJlOjegq7nXwGc3+JdyOuj5dJ6Qb3HRFpccA1zp2JpNHXTQatok+Ijv2AGdsV50CU0bhJ6HrjUaSXOt1jIHexJ70+t4FqOsmiU/3hdY5VY5yx6FrWNcDTpM46x0FfupJ+SRfOoZpVXXFxsleFq13KOubtV1PGnjf96PyLT+2/MaTOth9Ac3Mi6g26VBB/eMXdd0TZxHcRql49axJ6Sj1p0VvqeoiDZ0BMYBnMAakNnQ4e1sggb+7xI/qNw2SY/LQFgensP2IYbCOBBUIHT4oeVjkHgdxZTunafNPL1HDQ05v5LLCen82Annf1mUi76oLjRiVci300WEDiZVuZKq6o8XEdZFj34XoyVqm9h167DcKDenGXXCRQiAF//ynp+cOjs06YBE2+V/j9yUu++RfmFVQ0Myo/gONHD+XVC6uMNjao2TgnFELXwsc5MbZnLqH7BJLv/kkhPfpvNRfHXMrf+UVZzeH5ng8o+FpxcNQfmGaKuyimRqoIJNOnQmXUH+Qwf/HmWIlA3NnbyyqrY24XRSyzTJqAGfGauOmNGi1T8rg0viZ3oGo2EVfSryaDHjtFVxKhqFKfUzrOryd5v2tEaQurqPZ1i160cs94YoQXsoCNIaYw0ntLAq3ruBx4/79sRXE70h5/aAoyiDtNDAJVNatfbTK9xQ/Ej2uJk3qWFVx06L7wP5hbcD7seHKjVEhBe2t+owdHzXjHlY5fxTatg0Gj/p0Bzj3dUPRlWjnYfxWcvUojuj87YkhG8DCwn0wtc3kII6wd6mZ6wXmiOrMXTPWpeKc9XY5S6+yKyVarTXXwJ3FxHWa4cabw08NVp7A4o/eNhDtTzoUfKg9xm99oldRHDPDaJ/YNL1UC334jeIvmy+TU4/f/AF7Ys/e2v+9PH1ecza3wCIpcrJ14zH0wAAAABJRU5ErkJggg==
// @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);
                }
            });
        }
    }
})();