Greasy Fork 支持简体中文。

free_ss

更换全界面,使用[国家][加密方式]双条件的方式进行复制,下一版本增加全选功能,先回家吃饭了:-)

目前為 2018-03-08 提交的版本,檢視 最新版本

// ==UserScript==
// @name         free_ss
// @version      0.0.5
// @description  更换全界面,使用[国家][加密方式]双条件的方式进行复制,下一版本增加全选功能,先回家吃饭了:-)
// @author       XSC
// @match        http*://free-ss.site/
// @match        http*://free-ss.gq/

// @require      https://cdn.jsdelivr.net/npm/[email protected]/base64.min.js
// @grant        GM_setClipboard
// @run-at       document-end
// @namespace https://greasyfork.org/users/163852
// ==/UserScript==
// @0.0.5   2018-3-8   更换全界面,使用[国家][加密方式]双条件的方式进行复制,下一版本增加全选功能,先回家吃饭了:-)
// @0.0.4   2018-3-6   增加一条明文,用于判断脚本是否失效
// @0.0.3   2018-2-28  修复失效
// @0.0.2   2018-2-24  修改表格判断方式
// @0.0.1   2018-2-7   初始版本
(function() {

    var ss_urls = new Array(0);
    var ss_num=0;
    var ss_txt='';
    var ss_check='';
    var ss_content='';
    var s3=document.createElement("table");
    var data_table=new Array(0);
    var countrylist=new Array(0);
    var encryptlist=new Array(0);
	var ss_selecttxt='';
	
    // Your code here...
	function print(str) {
		console.log(str);
	}

    function genCheckBox(id, name, value, showText, parentIndex, isCheck) {
        var check1 = '';
        if (!isCheck) {
            check1 = "<input type='checkbox' parentIndex=" + parentIndex + " name=".concat(name).concat(" value=").concat(value).concat(" alt=").concat(showText).concat(" /><span>").concat(showText).concat("</span>");
            return check1;
        } else {
            check1 = "<input type='checkbox' parentIndex=" + parentIndex + " name=".concat(name).concat(" checked='checked' value=").concat(value).concat(" alt=").concat(showText).concat(" /><span>").concat(showText).concat("</span>");
            return check1;
        }
    }

    function check_box() {
        var i;
		
        //建立国家列表
        ss_content += "<form name='countryform'>";
        for(i = 0; i < countrylist.length; i++)
        {
            ss_content += genCheckBox(i, "ct_"+i, i, countrylist[i], 0, true);
            ss_content += "&nbsp;&nbsp;&nbsp;&nbsp;";
        }
        ss_content += "</form>";

        ss_content += "<br></br>";

        ss_content += "<form name='encryptform'>";
        //建立加密列表
        for(i = 0; i < encryptlist.length; i++)
        {
            if(encryptlist[i].indexOf('gcm') > -1 || encryptlist[i].indexOf('ctr') > -1)
			{
				ss_content += genCheckBox(i, "ec_"+i, i, encryptlist[i], 0, false);
			}else{
				ss_content += genCheckBox(i, "ec_"+i, i, encryptlist[i], 0, true);
			}
            ss_content += "&nbsp;&nbsp;&nbsp;&nbsp;";
        }
        ss_content += "</form>";

        ss_content += "<br></br>";

        print(ss_content);
    }
    function gettab(){
        var tab = document.getElementsByTagName("table");
        print('表格数:' + tab.length);

        var tabindex ,tabmax = 0, tabmaxnum = 0, test = 0;
        for(tabindex = 0; tabindex < tab.length; tabindex++)
        {
            print('表格' + tabindex + '长' + tab[tabindex].rows.length);
            if(tab[tabindex].rows.length > tabmaxnum)
            {
                if(test == 0)
                {
                    test = 1;
                }else{
                    tabmax = tabindex;
                    tabmaxnum = tab[tabindex].rows.length;
                }
            }
        }
        print('表格' + tabmax + '最长');
        s3 = tab[tabmax]; //获取第一个表格
        ss_num = s3.rows.length;
        print('表格行数:' + ss_num);

        data_table = new Array(0);
        countrylist = new Array(0);
        encryptlist = new Array(0);
        for(var i = 0; i < s3.rows.length - 1; i++){
            data_table[i] = new Array(0);
            var j;
            for(j = 0; j < s3.rows[i + 1].cells.length - 1; j++){
                data_table[i].push(s3.rows[i + 1].cells[j].innerHTML.toString());
            }
            //var url = 'ss://'+(data_table[i][4]+':'+data_table[i][3]+'@'+data_table[i][1]+':'+data_table[i][2])+'#'+data_table[i][6]+'('+data_table[i][0]+')';
            //print(url);

            //获取国家列表
            if(countrylist.length == 0)
            {
                countrylist.push(data_table[i][6]);
            }else{
                for(j = 0; j < countrylist.length; j++)
                {
                    if(countrylist[j] == data_table[i][6])
                        break;
                }
                if(j == countrylist.length)
                {
                    countrylist.push(data_table[i][6]);
                    print('c'+countrylist.length);
                }
            }
            //加密方式
            if(encryptlist.length == 0)
            {
                encryptlist.push(data_table[i][4]);
            }else{
                for(j = 0; j < encryptlist.length; j++)
                {
                    if(encryptlist[j] == data_table[i][4])
                        break;
                }
                if(j == encryptlist.length)
                {
                    encryptlist.push(data_table[i][4]);
                    print('e'+encryptlist.length);
                }
            }
        }
        ss_check = '请与第一条信息做对比,是否正确<br></br>'+data_table[0][1]+'&nbsp;&nbsp;'+data_table[0][2]+'&nbsp;&nbsp;'+data_table[0][3]+'&nbsp;&nbsp;'+data_table[0][4];

        print("服务器数量:"+data_table.length);
    }
	
	function makecopydata() {
		var i, j;
		ss_selecttxt = '';
		var data = new Array(0);
		var unsel_country = new Array(0);
		var unsel_country_num = 0;
		var unsel_encrypt = new Array(0);
		var unsel_encrypt_num = 0;
		var max = 0;
		
		
		//筛选国家
		print("没有选择的国家有");
		for(i = 0; i < countrylist.length; i++)
		{
			if($("input[name='ct_"+i+"']").is(':checked') == false)
			{
				unsel_country.push($("input[name='ct_"+i+"']").attr('alt'));
				unsel_country_num++;
				print(unsel_country[unsel_country.length - 1]);
			}
		}
		//筛选加密
		print("没有选择的加密有");
		for(i = 0; i < encryptlist.length; i++)
		{
			if($("input[name='ec_"+i+"']").is(':checked') == false)
			{
				unsel_encrypt.push($("input[name='ec_"+i+"']").attr('alt'));
				unsel_encrypt_num++;
				print(unsel_encrypt[unsel_encrypt.length - 1]);
			}
		}
		
		if(unsel_country_num > unsel_encrypt_num)
		{
			max = unsel_country_num;
		}else{
			max = unsel_encrypt_num;
		}
		print("开始筛选服务器");
		ss_selecttxt = '';
		for(i = 0; i < data_table.length; i++)
		{
			var need = 1;
			print(data_table[i][1] + "-" + data_table[i][6] + "-" + data_table[i][4]);
			for(j = 0; j < max && need; j++)
			{
				if(j < unsel_country_num)
				{
					print("[国家]"+unsel_country[j]);
					//if(data_table[i][6] == unsel_country[j])
					if(data_table[i][6].indexOf(unsel_country[j]) > -1)
					{
						need = 0;
						print("丢弃[国家]"+data_table[i][1]);
						continue;
					}
				}
				if(j < unsel_encrypt_num)
				{
					print("[加密]"+unsel_encrypt[j]);
					//if(data_table[i][4] == unsel_encrypt[j])
					if(data_table[i][4].indexOf(unsel_encrypt[j]) > -1)
					{
						need = 0;
						print("丢弃[加密]"+data_table[i][1]);
						continue;
					}
				}
			}
			if(need)
			{
				var url1 = data_table[i][4]+':'+data_table[i][3]+'@'+data_table[i][1]+':'+data_table[i][2];
				var url2 = 'ss://'+Base64.encodeURI(url1)+'#'+data_table[i][6]+'('+data_table[i][0]+')';
				ss_selecttxt += url2 + '\r\n';
			}
		}
	}

    function mainlayer() {
        layer.open({
            title:'服务器('+ss_num+'条) ',
            area:['800px','250px'],
            btn:['复制'],
            yes:function(){
				makecopydata();
                var txt = ss_selecttxt;
                GM_setClipboard(txt);
                layer.tips('已复制','.layui-layer-btn0',{
                    tips: [1, '#0FA6D8']
                });
            },
            content: ss_content
        });
    }


    FREESS_NET = {
        askcheck: function () {
            print("弹出窗口");
            layer.confirm(
                ss_check, {
                    btn: ['正确','错误'] //按钮
                },
                function(){
                    check_box();
                    mainlayer();
                },
                function(){
                    layer.msg('插件已失效', {
                        time: 20000, //20s后自动关闭
                        btn: ['明白了']
                    });
                });
        },

        run:function(){
            //this.geturls();
            gettab();
            this.askcheck();
        }
    };

    $(document).ready(function() {
        // 等待3s,数据加载后执行
        setTimeout(function(){
            FREESS_NET.run();
        },3000);
    });


})();