如题 可以将SS手机版的配置文件转换到电脑版来用
也可以将SS电脑版的配置文件转换到手机版来用
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=0.5, maximum-scale=2.0, user-scalable=yes" />
<script language="JavaScript" type="text/javascript" src="cryptico.browser.js"></script>
<title>SS配置文件转换</title>
</head>
<body>
<script type="text/javascript">
function b256to64(t) {
var base64Chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
var a, c, n;
var r = '', l = 0, s = 0;
var tl = t.length;
for (n = 0; n < tl; n++)
{
c = t.charCodeAt(n);
if (s == 0)
{
r += base64Chars.charAt((c >> 2) & 63);
a = (c & 3) << 4;
}
else if (s == 1)
{
r += base64Chars.charAt((a | (c >> 4) & 15));
a = (c & 15) << 2;
}
else if (s == 2)
{
r += base64Chars.charAt(a | ((c >> 6) & 3));
l += 1;
r += base64Chars.charAt(c & 63);
}
l += 1;
s += 1;
if (s == 3) s = 0;
}
if (s > 0)
{
r += base64Chars.charAt(a);
l += 1;
r += '=';
l += 1;
}
if (s == 1)
{
r += '=';
}
return r;
}
function b64to256(t)
{
var base64Chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
var c, n;
var r = '', s = 0, a = 0;
var tl = t.length;
for (n = 0; n < tl; n++)
{
c = base64Chars.indexOf(t.charAt(n));
if (c >= 0)
{
if (s) r += String.fromCharCode(a | (c >> (6 - s)) & 255);
s = (s + 2) & 7;
a = (c << s) & 255;
}
}
return r;
}
function SSProfile(configs, localPort, shareOverLan)
{
if (configs != null && configs.length > 0)
{
this.configs = configs;
this.localPort = localPort;
this.shareOverLan = shareOverLan;
}
else throw new Error("Invalid SSProfile");
}
function SSConfigs(server, server_port, password, method, remarks, auth)
{
if (server != null && server_port != null && method != null && password != null
&& server.length > 0 && server_port.length > 0 && method.length > 0 && password.length > 0)
{
this.server = server;
this.server_port = server_port;
this.password = password;
this.method = method;
this.remarks = remarks;
this.auth = auth;
}
else throw new Error("Invalid SSConfigs");
}
function JSONParse(SSConfigsString) {
var json = JSON.parse(SSConfigsString);
var configs=json.configs;
var arrayProfile = "";
for(var i=0;i<configs.length;i++){
var temp=configs[i].method+":"+configs[i].password
+"@"+configs[i].server+":"+configs[i].server_port;
//alert(temp);
arrayProfile += "ss://"+b256to64(temp)+"\n";
}
return arrayProfile;
}
function parseJSON(SSConfigsString) {
var strArr = SSConfigsString.split("\n");
var configs = new Array();
for(var i=0;i<strArr.length;i++){
var tempStr = strArr[i];
//alert(tempStr);
var tempStr2 = null;
if(tempStr!=null && tempStr!="" && tempStr.startWith("ss://")){
//alert(tempStr);
tempStr = tempStr.substr(5,tempStr.length);
//alert(tempStr);
tempStr = b64to256(tempStr);
//alert(tempStr);
var tempArr = tempStr.split("@");
if(tempArr!=null && tempArr.length>1){
tempStr = tempArr[0];
tempStr2 = tempArr[1];
}
var server, server_port, password, method;
tempArr = tempStr.split(":");
if(tempArr!=null && tempArr.length>1){
method = tempArr[0];
password = tempArr[1];
}
tempArr = tempStr2.split(":");
if(tempArr!=null && tempArr.length>1){
server = tempArr[0];
server_port = tempArr[1];
}
//alert("手机转电脑:"+server+"--"+(i+1));
var mConfigs = new SSConfigs(
server, server_port, password, method, "手机转电脑:"+server+"--"+(i+1), false);
//alert(mConfigs.server);
configs.push(mConfigs);
//alert(configs[i].server_port);
}
}
var mSSProfile = new SSProfile(configs, 1080, false)
//alert(mSSProfile.configs[0].server_port);
return JSON.stringify(mSSProfile);
}
String.prototype.startWith=function(str){
if(str==null||str==""||this.length==0||str.length>this.length)
return false;
if(this.substr(0,str.length)==str)
return true;
else
return false;
return true;
}
function m2c(){
//alert("1");
var theSSProfile=document.getElementById("mProfile").value;
//alert("2");
var mSSProfile = parseJSON(theSSProfile);
//alert("3");
document.getElementById("textOut").value = mSSProfile;
}
function c2m(){
//alert("1");
var theSSProfile=document.getElementById("mProfile").value;
//alert("2");
var mSSProfile = JSONParse(theSSProfile);
//alert("3");
document.getElementById("textOut").value = mSSProfile;
}
function textShow(fileElementId, textElementId){
var file=document.getElementById(fileElementId).files[0];
if(file){
var reader=new FileReader();
reader.οnlοad=function(e){
var conb=document.getElementById(textElementId);
conb.innerHTML=e.target.result;
}
}
reader.readAsText(file);
}
</script>
<p>点击下方按钮选择你的配置文件:<br/><input type="file" style='font-size:20px' name="theSSProfile" id='theSSProfile' οnchange='textShow("theSSProfile","mProfile")'/></p>
<textarea name="mProfile" rows="5" cols="30" id="mProfile"></textarea>
<p><button style='font-size:20px' οnclick="m2c()">手机转电脑</button>
<button style='font-size:20px' οnclick="c2m()">电脑转手机</button></>
<p>下框将会输出转换后的内容:<br/>
<textarea name="textOut" rows="5" cols="30" id="textOut"></textarea></>
<p id="msg"></p>
<p>电脑转手机的步骤如下:<br/>
1:选择你的配置文件 也就是:gui-config.json<br/>
2:点击 电脑转手机 按钮<br/>
3:将转换后的内容复制下来然后粘贴到文本文档中<br/>
4:将文本文档通过蓝牙或者数据线发送到手机上<br/>
5:手机上打开文本文档并将其中的内容全部复制下来<br/>
6:手机上打开SS 添加配置文件的时候选择"从剪贴板导入"<br/><br/>
手机转电脑的步骤如下:<br/>
1:手机上打开SS 点击右上角的那个按钮 将配置文件导出到剪贴板<br/>
2:手机上用浏览器打开本程序<br/>
3:将剪贴板中的内容粘贴到上面第一个方框中<br/>
4:点击 手机转电脑 按钮<br/>
5:将转换后的内容复制下来然后粘贴到文本文档中<br/>
6:将文本文档通过蓝牙或者数据线发送到电脑上<br/>
7:将文本文档重命名为:gui-config.json<br/>
8:将gui-config.json剪切并粘贴到电脑上SS的那个文件夹里</p>
</body>
</html>