// ==UserScript==
// @name loadbt自动邀请 maiz
// @namespace http://tampermonkey.net/
// @version 0.1
// @description 已失效,loadbt 接入Google验证码
// @author zsandianv
// @match https://www.baidu.com
// @match http://www.baidu.com
// @grant GM_xmlhttpRequest
// @connect www.loadbt.com
// @connect inbox.maiz.ca
// @require https://cdn.bootcss.com/jquery/3.1.1/jquery.min.js
// @require https://cdn.jsdelivr.net/npm/[email protected]/dist/Minified/notiflix-2.1.2.min.js
// ==/UserScript==
( function () {
'use strict';
let domparser = new DOMParser();
let username;
let loadbt_password = 'zjav2020z'; //输入 loadbt 密码
let loadbt_share_url = 'https://www.loadbt.com/c/973335152'; //输入 loadbt 邀请链接
let loadbt_url = 'https://www.loadbt.com/';
let loadbt_url_zh = 'https://www.loadbt.com/zh';
let loadbt_register_url;
let loadbt_register_api = 'https://www.loadbt.com/register';
let loadbt_files_url = 'https://www.loadbt.com/files';
let loadbt_logout_api = 'https://www.loadbt.com/logout';
let loadbt_verify_api = 'https://www.loadbt.com/email/verify'
let loadbt_activate_url;
let maiz_inbox_url;
let mail;
async function loadbt_register (url) {
console.log( 1 )
let doc;
let responsedata;
let token;
let params = [];
let referrer;
let loadbt_headers = {
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8',
'Accept-Encoding': 'gzip, deflate, br',
'Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8',
'Connection': 'keep-alive',
'Upgrade-Insecure-Requests': '1',
'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36'
}
console.log( url )//访问 loadbt 邀请链接
await myGetData( 'GET', url, '', loadbt_headers )
.then( response => {
responsedata = response;
console.log( responsedata )
} );
Notiflix.Notify.Info('正在注册 loadbt 账号');
let refcode = url.split( '/' )[ 4 ];
referrer = 'https://www.loadbt.com/?refcode=' + refcode + '&utm_campaign=Referral_Invite&utm_medium=Referral_Program&utm_source=CopyPaste';
let loadbt_2_headers = {
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8',
'Accept-Encoding': 'gzip, deflate, br',
'Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8',
'Connection': 'keep-alive',
'Upgrade-Insecure-Requests': '1',
'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36',
'Referer': referrer,
'RefererPolicy': 'no-referrer-when-downgrade',
}
let loadbt_post_headers = {
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8',
'Accept-Encoding': 'gzip, deflate, br',
'Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8',
'Connection': 'keep-alive',
'Content-Type': 'application/x-www-form-urlencoded',
'Upgrade-Insecure-Requests': '1',
'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36',
'Referer': loadbt_register_url,
'RefererPolicy': 'no-referrer-when-downgrade',
}
do{
console.log( loadbt_register_url )//访问 loadbt 注册链接
await myGetData( 'GET', loadbt_register_url, '', loadbt_2_headers )
.then( response => {
responsedata = response;
console.log( responsedata )
} );
if ( responsedata.status === 200 ) {
doc = domparser.parseFromString( responsedata.responseText, "text/html" );
console.log( doc )
token = doc.getElementsByName( "_token" )[ 0 ].value;
if ( responsedata.finalUrl === loadbt_verify_api || responsedata.finalUrl === loadbt_files_url ){
let postdata = '_token=' + token;
console.log( loadbt_logout_api ) //发送 loadbt_logout 信息
await myGetData( 'POST', loadbt_logout_api, postdata, loadbt_post_headers )
.then( response => {
responsedata = response;
console.log( responsedata )
} );
}
}else {
Notiflix.Loading.Arrows('错误 : loadbt 服务器错误,请稍后重试');
Notiflix.Notify.Failure('错误 : loadbt 服务器错误,请稍后重试')
window.alert('错误 : loadbt 服务器错误,请稍后重试');
return;
}
}while( responsedata.finalUrl !== loadbt_register_url );
let logindata = {
'_token': token,
'email': mail,
'password': loadbt_password,
'password_confirmation': loadbt_password,
'terms': 'on',
}
for ( let k in logindata ) params.push( `${encodeURIComponent(k)}=${encodeURIComponent(logindata[k])}` );
let postdata = params.join( '&' );
console.log( loadbt_register_api )//发送 loadbt_register 信息
await myGetData( 'POST', loadbt_register_api, postdata, loadbt_post_headers )
.then( response => {
responsedata = response;
console.log( responsedata )
} );
if ( responsedata.status === 200 ) {
if (responsedata.finalUrl === loadbt_verify_api){
Notiflix.Notify.Success('注册 loadbt 账号成功')
await loadbt_activate_link(maiz_inbox_url)
}else if (responsedata.finalUrl === loadbt_register_url){
Notiflix.Loading.Arrows('错误 : 请更换 ip 地址');
Notiflix.Notify.Failure('错误 : 请更换 ip 地址')
window.alert('错误 : 请更换 ip 地址');
return;
}
}
}
async function loadbt_activate_link (url) {
console.log( 2 )
let doc;
let responsedata;
let message_body;
let message;
let message_length;
let maiz_get_headers = {
'Accept-Encoding': 'gzip, deflate, br',
'Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8',
'Connection': 'keep-alive',
'Referer': url,
'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36'
}
console.log( url ) //访问 maiz
await myGetData( 'GET', url, '', maiz_get_headers )
.then( response => {
responsedata = response;
console.log( responsedata )
} );
do{
console.log( 'https://inbox.maiz.ca/mail/fetch' )//获取 loadbt 激活链接
await myGetData( 'GET', 'https://inbox.maiz.ca/mail/fetch', '', maiz_get_headers )
.then( response => {
responsedata = response;
console.log( responsedata )
} );
Notiflix.Notify.Info('正在获取 loadbt 激活链接');
message_length = 0;
if (typeof responsedata !== 'null' && responsedata.status === 200 ){
message = JSON.parse( responsedata.responseText );
message_length = message['length'];
}
if (message_length === 0){
console.log( 'https://inbox.maiz.ca/mail/fetch?new=true' )//获取 loadbt 激活链接
await myGetData( 'GET', 'https://inbox.maiz.ca/mail/fetch?new=true', '', maiz_get_headers )
.then( response => {
responsedata = response;
console.log( responsedata )
} );
Notiflix.Notify.Info('正在获取 loadbt 激活链接');
}
if (typeof responsedata !== 'null' && responsedata.status === 200 ){
message = JSON.parse( responsedata.responseText );
message_length = message['length'];
}
}while (message_length === 0);
if (message_length !== 0){
$.each(message, function (index, element) {
if (typeof element.html !== 'undefined'){
message_body = element.html
}
});
}
doc = domparser.parseFromString( message_body, "text/html" );
console.log( doc )
loadbt_activate_url = doc.links[1].href
if ( typeof loadbt_activate_url === 'string' ) {
Notiflix.Notify.Success('获取 loadbt 激活链接成功')
await loadbt_activate()
}
}
async function loadbt_activate () {
console.log( 3 )
let responsedata = [];
let doc;
let token;
let loadbt_headers = {
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8',
'Accept-Encoding': 'gzip, deflate, br',
'Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8',
'Connection': 'keep-alive',
'Upgrade-Insecure-Requests': '1',
'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36'
}
console.log( loadbt_activate_url ) //激活 loadbt
await myGetData( 'GET', loadbt_activate_url, '', loadbt_headers )
.then( response => {
responsedata = response;
console.log( responsedata )
} );
Notiflix.Notify.Info('正在激活 loadbt 账号');
if ( responsedata.status === 200 ) {
console.log( loadbt_files_url ) //获取 loadbt_logout_token
await myGetData( 'GET', loadbt_files_url, '', loadbt_headers )
.then( response => {
responsedata = response;
console.log( responsedata )
} );
doc = domparser.parseFromString( responsedata.responseText, "text/html" );
token = doc.getElementsByName( '_token' )[ 0 ].value;
let loadbt_logout_headers = {
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8',
'Accept-Encoding': 'gzip, deflate, br',
'Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8',
'Connection': 'keep-alive',
'Content-Type': 'application/x-www-form-urlencoded',
'Upgrade-Insecure-Requests': '1',
'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36',
'Referer': loadbt_files_url,
'RefererPolicy': 'no-referrer-when-downgrade',
}
let postdata = '_token=' + token;
console.log( loadbt_logout_api ) //退出当前 loadbt 为下次注册住准备
await myGetData( 'POST', loadbt_logout_api, postdata, loadbt_logout_headers )
.then( response => {
responsedata = response;
console.log( responsedata )
} );
if ( responsedata.status === 200 ) {
Notiflix.Notify.Success('激活 loadbt 账号成功')
}
}
}
async function loadbt () {
tips ()
if ( loadbt_password === '' || loadbt_share_url === ''){
console.error( '错误 : 请输入必要参数')
Notiflix.Loading.Arrows('错误 : 请输入必要参数');
Notiflix.Notify.Failure('错误 : 请输入必要参数')
return;
}else {
let timestamp = Date.parse( new Date() );
username = ("0000" + (Math.random()*Math.pow(36,4) << 0).toString(36)).slice(-4) + timestamp;
mail = username + '@maiz.ca';
maiz_inbox_url = 'https://inbox.maiz.ca/mailbox/'+mail;
loadbt_register_url = 'https://www.loadbt.com/register?placeholder_email=' + username + '%40maiz.ca';
await loadbt_register (loadbt_share_url);
}
}
//let url = 'https://inbox.maiz.ca/mailbox/[email protected]';
//loadbt_activate_link(url)
loadbt ()
function wait ( timeoutms ) {
return new Promise( ( resolve, reject ) => {
function check (){
console.warn('waitting')
if((timeoutms -= 1000) < 0 )
resolve ()
else
setTimeout(check, 1000)
}
setTimeout(check, 1000)
} );
}
function wait_for_element ( timeoutms ) {
return new Promise( ( resolve, reject ) => {
function check (){
var e = document.querySelector( '.signup__form-header > span' );
var x = document.querySelector( 'div.authentication.login.slide-element' );
console.warn('waitting')
if ( e !== null ) {
resolve (true)
}
else if ( x !== null ) {
resolve (false)
}
else if (( timeoutms -= 1000 ) < 0) {
reject (console.warn('timed out!'))
}
else {
setTimeout( check, 1000)
}
}
setTimeout( check, 1000)
} );
}
function tips (){
let head = document.getElementsByTagName("head")[0];
let link = document.createElement("link");
link.rel = "stylesheet";
link.type = "text/css";
link.href = "https://cdn.jsdelivr.net/npm/[email protected]/dist/Minified/notiflix-2.1.2.min.css";
head.appendChild(link);
let script = document.createElement("script");
script.type = "text/javascript";
script.src = "https://cdn.jsdelivr.net/npm/[email protected]/dist/Minified/notiflix-2.1.2.min.js";
head.appendChild(script);
Notiflix.Notify.Init({fontSize:"16px",timeout:60000,showOnlyTheLastOne:true});
Notiflix.Report.Init();
Notiflix.Confirm.Init();
Notiflix.Loading.Init({svgColor:"#f60000",});
}
function ajax ( Method, Url, Data, Headers ){
let p = new Promise(function(resolve, reject){
GM_xmlhttpRequest( {
url: Url,
method: Method,
data: Data,
headers: Headers,
ontimeout: function ( ) {
console.log( 'ontimeout')
reject()
},
onerror: function ( ) {
console.log( 'onerror')
reject()
},
onload: function ( response ) {
console.log( 'onload' )
setTimeout( function () {
resolve( response );
}, 2000 );
}
} );
})
return p
}
function myGetData(Method, Url, Data, Headers ) {
return new Promise(function(resolve, reject) {
function attempt () {
ajax(Method, Url, Data, Headers).then( response => {
resolve(response);
} ).catch(function(erro) {
attempt()
})
}
attempt()
})
}
// Your code here...
} )();