Greasy Fork is available in English.

注册邀请码抢码工具

自动遍历论坛注册邀请码得出正确结果

Dovrai installare un'estensione come Tampermonkey, Greasemonkey o Violentmonkey per installare questo script.

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

Dovrai installare un'estensione come Tampermonkey o Violentmonkey per installare questo script.

Dovrai installare un'estensione come Tampermonkey o Userscripts per installare questo script.

Dovrai installare un'estensione come ad esempio Tampermonkey per installare questo script.

Dovrai installare un gestore di script utente per installare questo script.

(Ho già un gestore di script utente, lasciamelo installare!)

Dovrai installare un'estensione come ad esempio Stylus per installare questo stile.

Dovrai installare un'estensione come ad esempio Stylus per installare questo stile.

Dovrai installare un'estensione come ad esempio Stylus per installare questo stile.

Dovrai installare un'estensione per la gestione degli stili utente per installare questo stile.

Dovrai installare un'estensione per la gestione degli stili utente per installare questo stile.

Dovrai installare un'estensione per la gestione degli stili utente per installare questo stile.

(Ho già un gestore di stile utente, lasciamelo installare!)

// ==UserScript==
// @name         注册邀请码抢码工具
// @name:en      Tool for register with invite code
// @name:zh-TW   注冊邀請碼搶碼工具
// @namespace    hoothin
// @version      0.6
// @description  自动遍历论坛注册邀请码得出正确结果
// @description:en  Just a tool for register with invite code
// @description:zh-TW  自動遍歷論壇注冊邀請碼得出正確結果
// @author       hoothin
// @include      *
// @exclude      http*://*.baidu.*
// @exclude      http*://*.bing.*
// @exclude      http*://*.google.*
// @grant        GM_registerMenuCommand
// @grant        GM_setValue
// @grant        GM_getValue
// @grant        GM_deleteValue
// @grant        unsafeWindow
// @license      MIT License
// @compatible        chrome
// @compatible        firefox
// ==/UserScript==

(function() {
    'use strict';
    var is1024=document.title.indexOf('\u8349\u69b4') != -1;
    var firefox=navigator.userAgent.toLowerCase().indexOf('firefox')!=-1;
    var invitecode=document.querySelector((is1024?"#invcode":"#invitecode")),
        chkInvitecode=document.querySelector((is1024?"#check_info_invcode":"#chk_invitecode")),
        codeChar=["0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"],checkFun,checkinvite,preTxt="",codeArr;
    String.prototype.pmatch = function(reg){
        if(!(reg instanceof RegExp))return 0;
        var a=[];
        if(!reg.global){
            a = this.match(reg);
            return a? [a.slice(1,a.length)] : 0;
        }
        var b=reg.exec(this);
        while(b){
            b.shift();
            a.push(b[0]);
            b=reg.exec(this);
        }
        return a.length>0?a:0;
    };
    function checkCode(){
        if(checkFun)clearInterval(checkFun);
        var checkNext=function(){
            if(codeArr.length===0){
                clearInterval(checkFun);
                if(checkinvite)clearInterval(checkinvite);
                alert("没有找到正确的邀请码!");
                return;
            }
            invitecode.value=codeArr.shift();
            if(is1024){
                unsafeWindow.invcodecheck();
            }else{
                unsafeWindow.checkinvite();
            }
        };
        var checkBtn=invitecode.parentNode.querySelector(".btn");
        checkFun = setInterval(function() {
            if(preTxt!=chkInvitecode.innerHTML){
                preTxt=chkInvitecode.innerHTML;
                if(chkInvitecode.innerHTML){
                    if(is1024){
                        if(chkInvitecode.innerHTML.indexOf("green")!=-1){
                            if(checkinvite)clearInterval(checkinvite);
                            clearInterval(checkFun);
                            alert("已匹配到正确的邀请码!");
                        }else if(chkInvitecode.innerHTML.indexOf("red")!=-1){
                            if(checkinvite)clearInterval(checkinvite);
                            checkinvite=setInterval(function() {checkBtn.click();},2000);
                            checkNext();
                        }
                    }else{
                        if(chkInvitecode.innerHTML.indexOf("邀请码错误")==-1){
                            clearInterval(checkFun);
                            alert("已匹配到正确的邀请码!");
                        }else{
                            checkNext();
                        }
                    }
                }
            }
        },100);
        checkNext();
    }
    function geneCodeArr(){
        var tempCode=[];
        codeArr.forEach(function(item){
            if(item.indexOf("*")!=-1){
                for(var char of codeChar){
                    var tempItem=item.replace(/\*/,char);
                    if(tempCode.toString().indexOf(tempItem)==-1){
                        tempCode.push(tempItem);
                    }
                }
            }else if(tempCode.toString().indexOf(item)==-1){
                tempCode.push(item);
            }
        });
        codeArr=[];
        while(tempCode.length>0){
            var random=Math.floor(Math.random()*tempCode.length);
            var curCode=tempCode[random];
            codeArr.push(curCode);
            tempCode.splice(random,1);
        }
    }
    if(invitecode){
        var copiedCode=GM_getValue("copiedCode");
        if(copiedCode){
            GM_deleteValue("copiedCode");
            codeArr=copiedCode;
            checkCode();
        }
        GM_registerMenuCommand("开始筛选邀请码", function(){
            var codeStr=prompt("输入邀请码:","");
            if(!codeStr)return;
            codeArr=codeStr.pmatch((is1024?/\b([0-9a-z\*]{16})\b/gi:/(?:^|c=|[^=\.\/])\b([0-9a-z]{6})(?:\s|$)/gi));
            if(codeArr===0)return;
            geneCodeArr();
            checkCode();
        });
    }else{
        if(is1024){
            codeArr=(firefox?document.body.textContent:document.body.innerText).pmatch(/(?:^|[::\s])\b([0-9a-z\*]{16})\b/gi);
            if(codeArr!==0){
                if(window.confirm("检测到邀请码,是否立即前往注册?")){
                    geneCodeArr();
                    GM_setValue("copiedCode",codeArr);
                    location.href="/register.php";
                }
            }
        }
    }
})();