您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
原来的改版已经失效,另起炉灶搞个新的采集方式
当前为
// ==UserScript== // @name free-ss[2018-3-13更新] // @version 0.0.6 // @homepage http://xieshang.ren/2018/03/01/Tampermonkey_free_ss_plus/ // @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 // @home-url https://www.xieshang.ren // @namespace https://gf.qytechs.cn/users/163852 // ==/UserScript== // @0.0.6 2018-3-13 老师又更新了代码,表格也开始躲猫猫了,那么亲们,别偷懒了,自己选吧(┬_┬) // @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=''; var ss_setconfigtxt=''; var goodtab = new Array(0); var tabchoicetxt = ''; // Your code here... function print(str) { console.log(str); } function loadconfig() { } function saveconfig() { GM_setValue("EC_aes_cfb", document.querySelector("#ecset_cfb").checked); } 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 genradioBox(id, parentIndex, value, showText, name, isCheck) { var check1 = ''; if (!isCheck) { check1 = "<input type='radio' parentIndex=" + parentIndex + " name=".concat(name).concat(" value=").concat(value).concat(" alt=").concat(showText).concat(" id=").concat(id).concat(" /><span>").concat(showText).concat("</span>"); return check1; } else { check1 = "<input type='radio' parentIndex=" + parentIndex + " name=".concat(name).concat(" checked='checked' value=").concat(value).concat(" alt=").concat(showText).concat(" /><span>").concat(showText).concat("</span>"); return check1; } } function layer_setconfig(){ var i = 0; ss_setconfigtxt = ""; ss_setconfigtxt += "请勾选上自动勾起的协议类型<br></br>"; ss_setconfigtxt += "<form name='countryform'>"; ss_setconfigtxt += "<fieldset><legend>加密</legend>"; ss_setconfigtxt += genCheckBox(i, "ecset_cfb", i, "cfb", i, true); ss_setconfigtxt += " "; i++; ss_setconfigtxt += genCheckBox(i, "ecset_ctr", i, "ctr", i, true); ss_setconfigtxt += " "; i++; ss_setconfigtxt += genCheckBox(i, "ecset_gcm", i, "gcm", i, true); ss_setconfigtxt += " "; i++; ss_setconfigtxt += genCheckBox(i, "ecset_rc4_md5", i, "rc4-md5", i, true); ss_setconfigtxt += " "; i++; ss_setconfigtxt += genCheckBox(i, "ecset_salsa20", i, "salsa20", i, true); ss_setconfigtxt += " "; i++; ss_setconfigtxt += genCheckBox(i, "ecset_chacha20", i, "chacha20", i, true); ss_setconfigtxt += " "; i++; ss_setconfigtxt += "</fieldset>"; } //配置按钮事件 function show_setconfig(){ layer_setconfig(); layer.open({ closeBtn: 0, title:'配置参数', area:['250px','250px'], btn:['保存','取消'], btn1:function(){ saveconfig(); }, btn2:function(){ mainlayer(); }, content: "需要自动选择的协议:" }); } function check_box() { var i; ss_content += "<fieldset><legend>国家</legend>"; //建立国家列表 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 += " "; } ss_content += "</fieldset>"; ss_content += "<fieldset><legend>加密</legend>"; //建立加密列表 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 += " "; } ss_content += "</fieldset>"; print(ss_content); } function gettab(tabmax){ var j; var tab = document.getElementsByTagName("table"); print('选择表格:' + tabmax); var tabindex ,tabmaxnum = 0, test = 0; 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); } } } 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 choicetab() { var j; var tab = document.getElementsByTagName("table"); var tabindex ,tabmax = 0, tabmaxnum = 0, goodtablen = 0; tabchoicetxt = "<fieldset><legend>请选择正确的一条</legend><form name='tabchoiceform'>"; for(tabindex = 0; tabindex < tab.length; tabindex++) { print('表格' + tabindex + '长' + tab[tabindex].rows.length); if(tab[tabindex].rows.length > 10) { goodtab[goodtablen] = new Array(0); goodtab[goodtablen].push(tabindex); goodtab[goodtablen].push(tab[tabindex].rows[1].cells[1].innerHTML.toString()+' '+tab[tabindex].rows[1].cells[2].innerHTML.toString()+' '+tab[tabindex].rows[1].cells[3].innerHTML.toString()+' '+tab[tabindex].rows[1].cells[4].innerHTML.toString()); print(goodtab[goodtablen][0]); print(goodtab[goodtablen][1]); tabchoicetxt += genradioBox(goodtab[goodtablen][0], "tab_"+goodtab[goodtablen][0], goodtab[goodtablen][0], goodtab[goodtablen][1], "tab_group", false) + "<br/>"; goodtab.push(); goodtablen++; } } tabchoicetxt += "</fieldset>"; print(tabchoicetxt); } function mainlayer() { layer.open({ type: 0, fixed: false, //不固定 title:'服务器('+ss_num+'条) ', area:['800px','300px'], btn:['复制'], yes:function(){ makecopydata(); var txt = ss_selecttxt; GM_setClipboard(txt); layer.msg('已复制到剪切板'); }, // btn:['配置','复制'], // yes:function(){ // show_setconfig(); // }, // btn2:function(){ // makecopydata(); // var txt = ss_selecttxt; // GM_setClipboard(txt); // layer.msg('已复制到剪切板'); // }, content: ss_content }); } function getselecttab(){ var choiceindex; var i; print("表格数:"+goodtab.length); for(i = 0; i < goodtab.length - 1; i++) { print("判断表格:" + "input[parentIndex='tab_"+goodtab[i][0]+"']"); if($("input[parentIndex='tab_"+goodtab[i][0]+"']").is(':checked') == true) { choiceindex = goodtab[i][0]; } } print("选择表格:" + choiceindex); gettab(choiceindex); check_box(); mainlayer(); } FREESS_NET = { askcheck: function () { layer.open({ type: 0, title:'请选择与页面相同的那条', area:['500px','200px'], btn:['确认','取消'], fixed: false, //不固定 yes:function(){ getselecttab(); }, btn2:function(){ makecopydata(); var txt = ss_selecttxt; GM_setClipboard(txt); layer.msg('已复制到剪切板'); }, content: tabchoicetxt }); }, run:function(){ //this.geturls(); choicetab(); this.askcheck(); }, }; $(document).ready(function() { // 等待3s,数据加载后执行 setTimeout(function(){ FREESS_NET.run(); },2000); }); })();
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址