// ==UserScript==
// @name free-ss.site 生成全部链接
// @version 0.4.2
// @description 将所有分享生成连接,方便复制使用
// @author dolacmeo
// @match http*://free-ss.site/
// @match http*://free-ss.gq/
// @require https://cdn.jsdelivr.net/npm/js-base64@2.4.3/base64.min.js
// @grant GM_setClipboard
// @grant GM_xmlhttpRequest
// @connect ssr.1234566.xyz
// @run-at document-idle
// @namespace http://tampermonkey.net/
// @downloadURL none
// ==/UserScript==
// @0.4.2 2018-4-8 bugfix(密码与加密方法位置调换导致生成地址错误),
// 新增订阅地址(每次使用脚本都会更新),这个功能会使每次打开页面都消耗10kb浏览,如果有疑义请在反馈页面说明
// @0.4.1 2018-4-7 bugfix,脚本优化,新增移除低速按钮,一键清爽(6分以下)
// @0.4.0 2018-4-5 脚本优化(初始化、判断方法、剪贴板、标签结构)
// @0.3.8 2018-3-22 主站代码更新,旧版已不可用。代码中加入了被墙账号与假表格做混淆。
// @0.3.7 2018-3-3 主站代码更新,旧版已不可用。代码中加入了被墙账号与假表格做混淆。
// @0.3.6 2018-2-27 增加镜像站 free-ss.gq
// @0.3.5 2018-2-24 主站代码更新,旧版已不可用。代码中加入了干扰隐藏表格。新年第一次摸鱼~
// @0.3.4 2018-2-13 整理脚本代码,年前最后一次摸鱼。祝大家新春快乐~
// @0.3.3 2018-2-6 主站代码更新,旧版已不可用
// @0.3.2 2018-2-2 点击二维码按钮生成SS、SSR两种链接与二维码,方便使用
// @0.3.1 2018-2-2 可进行多选,再生成链接,不选择生成所有
// @0.3 2018-2-2 随站更新,现从表格直接读取数据生成链接
// @0.2.1 2018-1-31 修复bug,备注名称加入当前日期
// @0.2 2018-1-31 不直接显示连接,变为两个复制按钮,点击即可复制所有链接,新增SSR链接(带备注与分组信息)
// @0.1 2018-1-26 成功打开页面后直接展示所有ss链接
var today_date = new Date();
var date_str = today_date.toISOString().slice(0,10)+'_';
var ss_id, ss_links_str = "", ssr_links_str = "";
$("table").each(function (){
if ($("#"+this.id+"_wrapper").css("height") === undefined) {
ss_id = "#"+this.id;
console.info("real #"+this.id);
}
});
// 载入HTML
$(ss_id).before("
");
$(ss_id).after('');
// 工具对象
var gen = {
// 生成ss链接
ss: function (data) {
return 'ss://'+Base64.encodeURI(data[3]+':'+data[4]+'@'+data[1]+':'+data[2])+'#'+data[6]+'('+date_str+data[5]+')';
},
// 生成ssr链接
ssr: function (data) {
return 'ssr://'+Base64.encodeURI(data[1]+':'+data[2]+':origin:'+data[3]+':plain:'+Base64.encodeURI(data[4])+
'/?remarks='+Base64.encodeURI(data[6]+'['+data[0]+']'+'('+date_str+data[5]+')')+'&group=ZnJlZS1zcy5zaXRl');
},
// 将数据处理成链接
datas: function () {
var ssdatas;
if (ss_table.rows('.selected').data().length > 0) {
ssdatas = ss_table.rows('.selected').data();
} else {
ssdatas = ss_table.data();
}
ss_links_str = "";
ssr_links_str = "";
$.each(ssdatas, function(i, data){
ss_links_str = ss_links_str + gen.ss(data) + '\n';
ssr_links_str = ssr_links_str + gen.ssr(data) + '\n';
});
return ssdatas;
},
qr: function (data) {
var ss = gen.ss(data), ssr =gen.ssr(data);
var qrcode = $('#diy-qrcode');
qrcode.children('canvas').remove();
qrcode.children('hr').remove();
qrcode.children('p').remove();
qrcode.append('SS
');
qrcode.qrcode({background:'#FFFFFF',ecLevel:'M',text:ss});
qrcode.append('
');
qrcode.append('SSR
');
qrcode.qrcode({background:'#FFFFFF',ecLevel:'M',text:ssr});
qrcode.append('
');
layer.closeAll();
layer.open({
type:1,
title:data[1]+':'+data[2]+' ('+data[6]+')',
closeBtn:0,
shade:0.1,
area:'24em',
shadeClose:true,
content:qrcode,
});
}
};
$(document).ready(function() {
// 表格加载完成后执行
$(ss_id).on('init.dt', function (){
ss_table = $(ss_id).DataTable( {
retrieve: true
} );
$("#tools").html("复制之后可使用剪贴板批量导入 "+
"(点击可选,当前已选择 0 条),共"+
ss_table.data().length+"条
"+
""+
""+
"");
$('#btn_ss').on('click',function(){
alert("SS 链接复制成功("+gen.datas().length+"条)");
GM_setClipboard(ss_links_str);
});
$('#btn_ssr').on('click',function(){
alert("SSR链接复制成功("+gen.datas().length+"条)");
GM_setClipboard(ssr_links_str);
});
$('#btn_clear').on('click',function(){
ss_table.$('tr.selected').removeClass('selected');
$(ss_id).find('tr').each(function(){
var ping = $(this).find('td').eq(0).text().split('/');
if (ping.length == 3) {
for (var x in ping) {
if (Number(ping[x])<=5){
$(this).toggleClass('selected');
break;
}
}
}
});
var r_c = ss_table.rows('.selected').data().length;
ss_table.rows('.selected').remove().draw();
$("#link_num").html("复制之后可使用剪贴板批量导入 "+
"(点击可选,当前已选择 0 条),共"+
ss_table.data().length+"条");
$('#btn_clear').replaceWith('已移除'+r_c+'条
');
ss_table.order( [ 0, 'asc' ] ).draw();
});
ss_table.$('tr').click( function () {
$(this).toggleClass('selected');
$("#sel").html(ss_table.rows('.selected').data().length);
} );
// 等待1s
setTimeout(function(){
$(ss_id+' tbody').off('click','i');
$(ss_id+' tbody').on('click','i',function(){
gen.qr(ss_table.row($(this).closest('tr')).data());
});
},1000);
gen.datas();
GM_xmlhttpRequest({
method:'POST',
url: 'http://ssr.1234566.xyz',
headers: {"Content-Type": "application/x-www-form-urlencoded"},
data: 'ssr='+Base64.encodeURI(ssr_links_str),
onload: function(response) {
$("#tools").after('每次使用复制脚本访问本页面,将会自动更新公共订阅地址:'+
'http://ssr.1234566.xyz'+
' '+
'(如何订阅?)
');
}
});
});
});