ddnsto
ddnsto copied to clipboard
油猴脚本+server酱微信推送,实现快速验证DDNSTO
效果预览
server酱官网
https://sct.ftqq.com/
油猴脚本
// ==UserScript==
// @name DDNSTO自动登录
// @namespace http://tampermonkey.net/
// @version 0.1
// @description try to take over the world!
// @author yangc
// @match https://www.kooldns.cn/app/#/login
// @match https://www.ddnsto.com/app/#/login
// @icon https://www.ddnsto.com/app/favicon.ico
// @grant unsafeWindow
// @grant GM_xmlhttpRequest
// @require https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js
// @require https://cozmo.github.io/jsQR/jsQR.js
// ==/UserScript==
(function() {
'use strict';
var name="杨成的DDNSTO验证请求"
// 返回 web 主机的域名,如:http://127.0.0.1:8080/testdemo/test.html?id=1&name=test
var url = window.location.href;
var setTimeOut
//登录页面才执行
if(url.indexOf('https://www.kooldns.cn/app/#/login')>=0||url.indexOf('https://www.ddnsto.com/app/#/login')>=0){
/*$("#app").bind("click", function (event) {
var clickedNode = event.target;
base64ToqR(clickedNode.src)
})
$("body").append('<h1 class="header" style="text-align: center; width: 100%; position: absolute; top: 10px; color: red;">点击二维码即可自动登录</h1>')
*/
$("body").append('<canvas id="qrcanvas" style="display:none"></canvas>')
setTimeOut=setTimeout(changeState,2000 );
}else{
//console.log("不属于自动化页面!!!")
}
//定时器
function changeState(){
//alert( $("#app").html())
var _img=$("#qrcode>img")[0]
base64ToqR(_img.src)
if(_img.src==''){
setTimeOut=setTimeout(changeState,2000 );
}
//console.log(_img.src)
}
//识别二维码
function base64ToqR(data) {
var c = document.getElementById("qrcanvas");
var ctx = c.getContext("2d");
var img = new Image();
img.src = data;
img.onload = function() {
$("#qrcanvas").attr("width",img.width)
$("#qrcanvas").attr("height",img.height)
ctx.drawImage(img, 0, 0, img.width, img.height);
var imageData = ctx.getImageData(0, 0, img.width, img.height);
const code = jsQR(imageData.data, imageData.width, imageData.height, {
inversionAttempts: "dontInvert",
});
if(code){
sendQrUrl(code.data)
}else{
alert("识别二维码错误,请联系管理员!!!")
}
};
}
//发起sever酱推送
function sendQrUrl(code){
console.log(code)
code=encodeURIComponent(code)
//通过post请求将登录请求转发到server酱
GM_xmlhttpRequest({
method: "POST",
url: "https://sctapi.ftqq.com/<SENDKEY>.send",
data: "title="+name+"&desp="+code,
headers: {
"Content-Type": "application/x-www-form-urlencoded",
"charset":"utf-8"
},
onload: function(response) {
console.log(response.responseText)
var rtn=JSON.parse(response.responseText);
var errorinfo= rtn.data.error;
console.log(errorinfo)
if("SUCCESS"===errorinfo){
alert("DDNSTO验证请求发送成功,稍等片刻即将跳转!!!")
}else{
alert("DDNSTO验证失败,刷新页面重试")
}
}
});
}
})();
写个说明文档吧,复制过去改了 SENDKEY 没反应呀
写个说明文档吧,复制过去改了 SENDKEY 没反应呀
我原本没人用就没再把改良版上传,复制下面这个吧
// ==UserScript==
// @name DDNSTO自动登录
// @namespace http://tampermonkey.net/
// @version 0.1
// @description try to take over the world!
// @author yangc
// @match https://www.kooldns.cn/app/*
// @match https://www.ddnsto.com/app/*
// @icon https://www.ddnsto.com/app/favicon.ico
// @grant unsafeWindow
// @grant GM_xmlhttpRequest
// @require https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js
// @require https://cozmo.github.io/jsQR/jsQR.js
// ==/UserScript==
(function() {
'use strict';
var name="yangshare的DDNSTO验证请求"
// 返回 web 主机的域名,如:http://127.0.0.1:8080/testdemo/test.html?id=1&name=test
var url = window.location.href;
//轮询器
var setInterVal
//轮询次数(兼容跳转成功后URL还是https://www.ddnsto.com/app/#/devices轮询器无法关闭的情况)
var number=5
//如果是登录页面或者是登录前面一个页面才执行自动识别二维码
if(url.indexOf('https://www.kooldns.cn/app/#/login')>=0||url.indexOf('https://www.ddnsto.com/app/#/login')>=0||url.indexOf('https://www.ddnsto.com/app/#/devices')>=0){
//绘制二维码容器
$("body").append('<canvas id="qrcanvas" style="display:none"></canvas>')
setInterVal=setInterval(changeState,2000);
}
else{
console.log("不属于自动化页面!!!"+url)
}
//定时器
function changeState(){
number=number-1
if(number<=0){
// 取消该定时设置
clearInterval(setInterVal);
}
//console.log( $("#app").html())
var _img=$("#qrcode>img")[0]
base64ToqR(_img.src)
//console.log(_img.src)
}
//识别二维码
function base64ToqR(data) {
// 取消该定时设置
clearInterval(setInterVal);
var c = document.getElementById("qrcanvas");
var ctx = c.getContext("2d");
var img = new Image();
img.src = data;
img.onload = function() {
$("#qrcanvas").attr("width",img.width)
$("#qrcanvas").attr("height",img.height)
ctx.drawImage(img, 0, 0, img.width, img.height);
var imageData = ctx.getImageData(0, 0, img.width, img.height);
const code = jsQR(imageData.data, imageData.width, imageData.height, {
inversionAttempts: "dontInvert",
});
if(code){
sendQrUrl(code.data)
}else{
alert("识别二维码错误,请联系管理员!!!")
}
};
}
//发起sever酱推送
function sendQrUrl(code){
console.log(code)
code=encodeURIComponent(code)
//通过post请求将登录请求转发到server酱
GM_xmlhttpRequest({
method: "POST",
url: "https://sctapi.ftqq.com/<SENDKEY>.send",
data: "title="+name+"&desp="+code,
headers: {
"Content-Type": "application/x-www-form-urlencoded",
"charset":"utf-8"
},
onload: function(response) {
console.log(response.responseText)
var rtn=JSON.parse(response.responseText);
var errorinfo= rtn.data.error;
console.log(errorinfo)
if("SUCCESS"===errorinfo){
alert("DDNSTO验证请求发送成功,稍等片刻即将跳转!!!")
}else{
alert("DDNSTO验证失败,刷新页面重试")
}
}
});
}
})();
牛
怎么用的,用不来