更新于 07-05 01:26

This commit is contained in:
root
2021-07-05 01:26:51 -04:00
parent 97fd926727
commit 64ebd3c6d0

View File

@@ -1,279 +1,330 @@
<!DOCTYPE html> <!DOCTYPE html>
<html lang="zh-Hans-CN"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <html lang="zh-Hans-CN">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> <head>
<meta name="renderer" content="webkit"> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="viewport" content="width=device-width"> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<title>JSTOOL添加账号</title> <meta name="renderer" content="webkit">
<meta name="keywords" content="JSTOOL添加账号"> <meta name="viewport" content="width=device-width">
<meta name="description" content="JSTOOL添加账号"> <meta name="keywords" content="JSTOOL添加账号">
<link href="./css/layui.css" rel="stylesheet" type="text/css"> <meta name="description" content="JSTOOL添加账号">
<link href="./css/font-awesome.min.css" rel="stylesheet" type="text/css"> <meta name="viewport" content="width=device-width, initial-scale=1.0 ,user-scalable=no">
<link href="./css/index_style.css" rel="stylesheet" type="text/css"> <title>JSTOOL控制面板</title>
<link href="./css/animate.min.css" rel="stylesheet" type="text/css"> <script type="text/javascript" src="./js/jquery.min.js"></script>
<div class="section" id="section1"> <script type="text/javascript" src="./js/sweetalert2.js"></script>
<div class="fp-tablecell"> <link rel="stylesheet" type="text/css" href="./css/main.css">
<div class="page1"> <link href="./css/layui.css" rel="stylesheet" type="text/css">
<div class="nav wow zoomIn animated" data-wow-duration="2s" style="visibility: visible; animation-duration: 2s; animation-name: zoomIn;"> <link href="./css/font-awesome.min.css" rel="stylesheet" type="text/css">
<h1>JSTOOL</h1> <link href="./css/index_style.css" rel="stylesheet" type="text/css">
<h2>外部账号添加</h2> <link href="./css/animate.min.css" rel="stylesheet" type="text/css">
<!--<input id="msg" type="text" placeholder="请输入备注信息,方便管理员识别账号"/>--> <link rel="icon" type="image/x-icon" href="https://gitee.com/favicon.ico" />
<button class="layui-btn layui-btn-normal" style="margin-top: 20px" id="qrcode">扫码登录</button>
<!--<button class="layui-btn layui-btn-normal" style="margin-top: 20px" id="jdcode">口令登录</button>-->
<!--<button class="layui-btn layui-btn-normal" style="margin-top: 20px" id="jumpapp">京东登录</button>-->
<a class="layui-btn layui-btn-normal" style="margin-top: 20px" href="https://jq.qq.com/?_wv=1027&k=">JSTOOL交流裙</a>
</div>
<script src="./js/qrcode.min.js"></script>
<style type="text/css">
body,
html {
margin: 0;
padding: 0;
}
.title {
padding-top: 150px;
text-align: center;
font-size: 24px;
font-weight: 600;
color: red;
box-sizing: border-box;
}
#msg {
display: block;
width: 90%;
height: 30px;
border-width: 2px;
border-radius: 5px;
margin: 0 auto;
}
.container {
display: flex;
flex-direction: column;
justify-content: space-around;
height: calc(100vh - 430px);
}
.btn {
margin: 0 auto;
border: 1px #3079ed solid;
border-radius: 5px;
font-size: 32pt;
background: #4c8ffb;
color: white;
}
.qr {
display: none;
justify-content: center;
align-items: center;
text-align: center;
position: center;
inset: 0px;
height: 100%;
background-color: rgba(0, 0, 0, 0.45);
z-index: 1001;
}
.qrcontainer {
position: relative;
width: 256px;
padding: 16px;
border-radius: 8px;
border: 1px solid rgb(109, 138, 136);
background-color: rgb(255, 255, 255);
box-shadow: rgb(0 0 0 / 20%) 0px 0px 7px 3px;
box-sizing: content-box;
}
#tip {
display: none;
justify-content: center;
align-items: center;
position: absolute;
top: 16px;
left: 16px;
width: 256px;
height: 256px;
color: rgb(255, 255, 255);
background-color: rgba(0, 0, 0, 0.5);
}
.des {
word-break: break-word;
padding-top: 16px;
}
</style>
</head>
<body> <div class="section" id="section1">
<div id="qr" class="qr"> <div class="fp-tablecell">
<div class="qrcontainer"> <div class="page1">
<div id="qrbox"></div> <div class="nav wow zoomIn animated" data-wow-duration="2s"
<div id="tip"><h3>二维码已失效</h3></div> style="visibility: visible; animation-duration: 2s; animation-name: zoomIn;">
<div id="des" class="des"> <div class="login-form">
请使用京东APP扫码<br />或截图用京东APP扫码<br />完成后请回到此页面复制cookie<br />请无视升级提示 <h1>JSTOOL控制面板</h1>
<form action="auth" method="POST">
<input type="text" name="username" class="username" placeholder="用户名" required>
<input type="password" name="password" class="password" placeholder="密码" required>
<input type="submit" id="login" value="登录">
</form>
</div>
<!--<input id="msg" type="text" placeholder="请输入备注信息,方便管理员识别账号"/>-->
<button class="layui-btn layui-btn-normal" style="margin-top: 20px" id="qrcode">扫码添加账号</button>
<!--<button class="layui-btn layui-btn-normal" style="margin-top: 20px" id="jdcode">口令登录</button>-->
<!--<button class="layui-btn layui-btn-normal" style="margin-top: 20px" id="jumpapp">京东登录</button>-->
<a class="layui-btn layui-btn-normal" style="margin-top: 20px"
href="https://jq.qq.com/?_wv=1027&k=">JSTOOL交流裙</a>
</div> </div>
<script src="./js/qrcode.min.js"></script>
<style type="text/css">
body,
html {
margin: 0;
padding: 0;
}
.title {
padding-top: 150px;
text-align: center;
font-size: 24px;
font-weight: 600;
color: red;
box-sizing: border-box;
}
#msg {
display: block;
width: 90%;
height: 30px;
border-width: 2px;
border-radius: 5px;
margin: 0 auto;
}
.container {
display: flex;
flex-direction: column;
justify-content: space-around;
height: calc(100vh - 430px);
}
.btn {
margin: 0 auto;
border: 1px #3079ed solid;
border-radius: 5px;
font-size: 32pt;
background: #4c8ffb;
color: white;
}
.qr {
display: none;
justify-content: center;
align-items: center;
text-align: center;
position: center;
inset: 0px;
height: 100%;
background-color: rgba(0, 0, 0, 0.45);
z-index: 1001;
}
.qrcontainer {
position: relative;
width: 256px;
padding: 16px;
border-radius: 8px;
border: 1px solid rgb(109, 138, 136);
background-color: rgb(255, 255, 255);
box-shadow: rgb(0 0 0 / 20%) 0px 0px 7px 3px;
box-sizing: content-box;
}
#tip {
display: none;
justify-content: center;
align-items: center;
position: absolute;
top: 16px;
left: 16px;
width: 256px;
height: 256px;
color: rgb(255, 255, 255);
background-color: rgba(0, 0, 0, 0.5);
}
.des {
word-break: break-word;
padding-top: 16px;
}
</style>
</head>
<body>
<div id="qr" class="qr">
<div class="qrcontainer">
<div id="qrbox"></div>
<div id="tip">
<h3>二维码已失效</h3>
</div>
<div id="des" class="des">
请使用京东APP扫码<br />或截图用京东APP扫码<br />完成后请回到此页面复制cookie<br />请无视升级提示
</div> </div>
</div> </div>
<div id="res" class="qr"> </div>
<div class="qrcontainer"> <div id="res" class="qr">
<div id="cookie" class="des"></div> <div class="qrcontainer">
</div> <div id="cookie" class="des"></div>
</div> </div>
</body> </div>
<script> </body>
get_code(); <script>
var jdCode = ''; $.ajaxSetup({
var loginUrl = ''; cache: false
var resDiv = document.getElementById('res'); });
document.getElementById('jdcode').addEventListener('click', function () {
if (jdCode) { $("#login").click(function () {
copyText(jdCode); $user = $(".username").val();
alert('复制成功,请在京东中打开'); $password = $(".password").val();
window.open('openapp.jdmobile://'); if (!$user || !$password) return;
$.post('./auth', {
username: $user,
password: $password
}, function (data) {
if (data.err == 0) {
window.location.href = "./usrconfig";
} else { } else {
alert('还没加载好,请稍后重试'); Swal.fire({
text: data.msg,
icon: 'error'
})
} }
}); });
document.getElementById('jumpapp').addEventListener('click', function () { return false;
if (loginUrl) { });
window.location.href = `openapp.jdmobile://virtual/ad?params=${encodeURI(
JSON.stringify({ get_code();
category: 'jump', var jdCode = '';
des: 'ThirdPartyLogin', var loginUrl = '';
action: 'to', var resDiv = document.getElementById('res');
onekeylogin: 'return', document.getElementById('jdcode').addEventListener('click', function () {
url: loginUrl, if (jdCode) {
authlogin_returnurl: 'weixin://', copyText(jdCode);
browserlogin_fromurl: window.location.host, alert('复制成功,请在京东中打开');
}) window.open('openapp.jdmobile://');
)}`; } else {
} else { alert('还没加载好,请稍后重试');
alert('还没加载好,请稍后重试'); }
} });
document.getElementById('jumpapp').addEventListener('click', function () {
if (loginUrl) {
window.location.href = `openapp.jdmobile://virtual/ad?params=${encodeURI(
JSON.stringify({
category: 'jump',
des: 'ThirdPartyLogin',
action: 'to',
onekeylogin: 'return',
url: loginUrl,
authlogin_returnurl: 'weixin://',
browserlogin_fromurl: window.location.host,
})
)}`;
} else {
alert('还没加载好,请稍后重试');
}
});
document.getElementById('qrcode').addEventListener('click', function () {
if (loginUrl) {
document.getElementById('qr').style.display = 'flex';
} else {
alert('还没加载好,请稍后重试');
}
});
document.getElementById('qr').addEventListener('click', function (event) {
if (event.target.id === 'qr') {
document.getElementById('qr').style.display = 'none';
}
});
function get_code() {
let timeStamp = new Date().getTime();
ajax({
url: './qrcode?t=' + timeStamp,
method: 'get',
success: function (data) {
if (data.err == 0) {
checkLogin(data.user);
//console.log('jdCode:' + data.jdCode);
jdCode = data.jdCode;
loginUrl = data.qrcode;
qrbox = document.getElementById('qrbox');
qrcode = new QRCode(qrbox, {
text: loginUrl,
correctLevel: QRCode.CorrectLevel.L,
});
}
},
}); });
document.getElementById('qrcode').addEventListener('click', function () { }
if (loginUrl) { function checkLogin(user) {
document.getElementById('qr').style.display = 'flex'; time = setInterval(() => {
} else {
alert('还没加载好,请稍后重试');
}
});
document.getElementById('qr').addEventListener('click', function (event) {
if (event.target.id === 'qr') {
document.getElementById('qr').style.display = 'none';
}
});
function get_code() {
let timeStamp = new Date().getTime(); let timeStamp = new Date().getTime();
ajax({ ajax({
url: './qrcode?t=' + timeStamp, url: './cookie2?t=' + timeStamp,
method: 'get', method: 'post',
data: { user, msg: document.getElementById('msg').value || '无备注' },
success: function (data) { success: function (data) {
if (data.err == 0) { if (data.err == 0) {
checkLogin(data.user); console.log('cookie:' + data.cookie);
//console.log('jdCode:' + data.jdCode); document.getElementById('qr').style.display = 'none';
jdCode = data.jdCode; document.getElementById('res').style.display = 'flex';
loginUrl = data.qrcode; document.getElementById('cookie').innerHTML =
qrbox = document.getElementById('qrbox'); '<span>' +
qrcode = new QRCode(qrbox, { document.getElementById('msg').value +
text: loginUrl, '</span>' +
correctLevel: QRCode.CorrectLevel.L, '🎈添加成功🎈';
}); /* '<p>' +
//data.cookie +
//'</p><button id="copyToClip">复制</button>';
document.getElementById('copyToClip').onclick = function () {
copyText(data.cookie);
alert('复制成功');
};
*/
clearInterval(time);
jdCode = '';
loginUrl = '';
} else if (data.err == 21) {
document.getElementById('tip').style.display = 'flex';
alert('二维码过期');
clearInterval(time);
jdCode = '';
loginUrl = '';
} }
}, },
}); });
}, 3000);
}
function copyText(text) {
// 数字没有 .length 不能执行selectText 需要转化成字符串
var textString = text.toString();
var input = document.querySelector('#copy-input');
if (!input) {
input = document.createElement('input');
input.id = 'copy-input';
input.readOnly = 'readOnly'; // 防止ios聚焦触发键盘事件
input.style.position = 'absolute';
input.style.left = '-1000px';
input.style.zIndex = '-1000';
document.body.appendChild(input);
} }
function checkLogin(user) { input.value = textString;
time = setInterval(() => { // ios必须先选中文字且不支持 input.select();
let timeStamp = new Date().getTime(); selectText(input, 0, textString.length);
ajax({ console.log(document.execCommand('copy'), 'execCommand');
url: './cookie2?t=' + timeStamp, if (document.execCommand('copy')) {
method: 'post', document.execCommand('copy');
data: { user, msg: document.getElementById('msg').value || '无备注' }, //alert('已复制到粘贴板');
success: function (data) {
if (data.err == 0) {
console.log('cookie:' + data.cookie);
document.getElementById('qr').style.display = 'none';
document.getElementById('res').style.display = 'flex';
document.getElementById('cookie').innerHTML =
'<span>' +
document.getElementById('msg').value +
'</span>' +
'🎈添加成功🎈';
/* '<p>' +
//data.cookie +
//'</p><button id="copyToClip">复制</button>';
document.getElementById('copyToClip').onclick = function () {
copyText(data.cookie);
alert('复制成功');
};
*/
clearInterval(time);
jdCode = '';
loginUrl = '';
} else if (data.err == 21) {
document.getElementById('tip').style.display = 'flex';
alert('二维码过期');
clearInterval(time);
jdCode = '';
loginUrl = '';
}
},
});
}, 3000);
} }
function copyText(text) { input.blur();
// 数字没有 .length 不能执行selectText 需要转化成字符串 // input自带的select()方法在苹果端无法进行选择,所以需要自己去写一个类似的方法
var textString = text.toString(); // 选择文本。createTextRange(setSelectionRange)是input方法
var input = document.querySelector('#copy-input'); function selectText(textbox, startIndex, stopIndex) {
if (!input) { if (textbox.createTextRange) {
input = document.createElement('input'); //ie
input.id = 'copy-input'; const range = textbox.createTextRange();
input.readOnly = 'readOnly'; // 防止ios聚焦触发键盘事件 range.collapse(true);
input.style.position = 'absolute'; range.moveStart('character', startIndex); //起始光标
input.style.left = '-1000px'; range.moveEnd('character', stopIndex - startIndex); //结束光标
input.style.zIndex = '-1000'; range.select(); //不兼容苹果
document.body.appendChild(input); } else {
} //firefox/chrome
input.value = textString; textbox.setSelectionRange(startIndex, stopIndex);
// ios必须先选中文字且不支持 input.select(); textbox.focus();
selectText(input, 0, textString.length);
console.log(document.execCommand('copy'), 'execCommand');
if (document.execCommand('copy')) {
document.execCommand('copy');
//alert('已复制到粘贴板');
}
input.blur();
// input自带的select()方法在苹果端无法进行选择,所以需要自己去写一个类似的方法
// 选择文本。createTextRange(setSelectionRange)是input方法
function selectText(textbox, startIndex, stopIndex) {
if (textbox.createTextRange) {
//ie
const range = textbox.createTextRange();
range.collapse(true);
range.moveStart('character', startIndex); //起始光标
range.moveEnd('character', stopIndex - startIndex); //结束光标
range.select(); //不兼容苹果
} else {
//firefox/chrome
textbox.setSelectionRange(startIndex, stopIndex);
textbox.focus();
}
} }
} }
function ajax(options) { }
var url = options.url; function ajax(options) {
var method = options.method; var url = options.url;
var data = options.data; var method = options.method;
var success = options.success; var data = options.data;
var ajax = new XMLHttpRequest(); var success = options.success;
ajax.open(method, url); var ajax = new XMLHttpRequest();
if (method == 'post') { ajax.open(method, url);
ajax.setRequestHeader('Content-type', 'application/json'); if (method == 'post') {
} ajax.setRequestHeader('Content-type', 'application/json');
ajax.send(JSON.stringify(data));
ajax.onreadystatechange = function () {
if (ajax.readyState == 4 && ajax.status == 200) {
success(JSON.parse(ajax.responseText));
}
};
} }
</script> ajax.send(JSON.stringify(data));
ajax.onreadystatechange = function () {
if (ajax.readyState == 4 && ajax.status == 200) {
success(JSON.parse(ajax.responseText));
}
};
}
</script>
</html> </html>