// ==UserScript==
// @name 默认显示账号密码登录(首次不显示二维码)
// @namespace http://tampermonkey.net/
// @version 1.01
// @description Default display account password login (QR code is not displayed for the first time).
// @author lfeng
// @supportURL https://github.com/lfeng1420/TamperMonkeyScript
// @match *://auth.alipay.com/*
// @match *://www.alipay.com/
// @match *://passport.douyu.com/*
// @match *://login.xiami.com/*
// @match *://passport.xiami.com/*
// @match *://www.xiami.com/*
// @match *://pan.baidu.com/
// @match *://passport.jd.com/*
// @match *://kyfw.12306.cn/*
// @match *://www.iqiyi.com/*
// @match *://ziyuan.baidu.com/*
// @match *://www.huya.com/*
// @match *://www.acfun.cn/*
// @match *://ssl.xui.ptlogin2.weiyun.com/*
// @match *://xui.ptlogin2.qq.com/*
// @match *://wenku.baidu.com/*
// @match *://tieba.baidu.com/*
// @match *://passport.baidu.com/*
// @match *://www.baidu.com/*
// @match *://passport.58.com/*
// @match *://passport.csdn.net/*
// @match *://www.tianya.cn/*
// @match *://exmail.qq.com/*
// @match *://login.taobao.com/*
// @match *://passport.suning.com/*
// @grant none
// ==/UserScript==
(function () {
'use strict';
function getByClassName(szClsName, index, doc) {
doc = doc || document;
index = index || 0;
var arrElements = doc.getElementsByClassName(szClsName);
if (arrElements === null || arrElements.length === 0) {
return null;
}
return arrElements[index];
}
function getById(id, doc) {
doc = doc || document;
return doc.getElementById(id);
}
function getByTagName(name, index, doc) {
doc = doc || document;
index = index || 0;
var arrElements = doc.getElementsByTagName(name);
if (arrElements === null || arrElements.length === 0) {
return null;
}
return arrElements[index];
}
function hasClass(o, name) {
if (o.classList === null || o.classList.length === 0) {
return false;
}
for (var index = 0; index < o.classList.length; ++index) {
if (o.classList[index] == name) {
return true;
}
}
return false;
}
/////////////////////////////////////////////////////
function HandleMainXiami() {
var element = getByClassName("modal-inner");
if (element === null) {
return false;
}
// login
var loginBtn = getByClassName("login");
loginBtn.click();
return true;
}
function HandleMainAlipay() {
// 移除video
var video = getById("J_video_player");
if (video !== null) {
video.parentNode.removeChild(video);
}
var poster = getById("J_poster");
if (poster !== null) {
poster.parentNode.removeChild(poster);
}
// 条件:用户点了登录按钮
var popbox = getById("J_popbox");
if (!popbox || (popbox.getAttribute("class") !== "popbox stat-login")) {
return false;
}
// 获取嵌套的iframe
var iframe = getById("J_loginIframe");
if (!iframe) {
return false;
}
// contentWindow
var frameDocument = iframe.contentDocument || iframe.contentWindow.document;
if (!frameDocument) {
return false;
}
// 切换按钮
var qrcode = getById("J-qrcode-target", frameDocument);
if (!qrcode) {
return false;
}
// 点击
qrcode.click();
return true;
}
function HandleAuthAlipay() {
var pathName = location.pathname;
if (pathName == "/login/index.htm") {
// 显示账密登录
var loginForm = getById("J-login");
if (loginForm !== null) {
loginForm.setAttribute("class", "login login-modern");
}
// 隐藏扫码登录
var qrCodeForm = getById("J-qrcode");
if (qrCodeForm !== null) {
qrCodeForm.setAttribute("class", "qrcode qrcode-modern fn-hide");
}
// 修改标签
var tabs = getById("J-loginMethod-tabs");
if (tabs !== null) {
var liArray = tabs.getElementsByTagName("li");
for (var index = 0; index < liArray.length; ++index) {
var liElement = liArray[index];
if (liElement.innerText === "扫码登录") {
liElement.setAttribute("class", "");
continue;
}
if (liElement.innerText === "账密登录") {
liElement.setAttribute("class", " active ");
continue;
}
}
}
}
else if (pathName == "/login/express.htm") {
var loginMethod = getById("J-loginFormMethod");
if (loginMethod === null) {
return false;
}
var style = window.getComputedStyle(loginMethod);
if (style === null) {
return false;
}
var qrcode = getById("J-qrcode-target");
if (qrcode === null) {
return false;
}
qrcode.click();
}
return true;
}
function HandleDouyu() {
// 获取按钮
var element = getByClassName("scanicon-toLogin js-qrcode-switch");
if (element === null) {
return false;
}
// 点击按钮
element.click();
// 获取Form
var formElement = getByClassName("login-form login-by-phoneNum");
if (formElement !== null) {
formElement.setAttribute("class", "login-form login-by-nickname");
}
// 修改标签
var tabElement = getByClassName("loginbox-login-subtype");
if (tabElement !== null) {
var spanArray = tabElement.getElementsByTagName("span");
for (var index = 0; index < spanArray.length; ++index) {
var child = spanArray[index];
if (child.innerText === "昵称登录") {
child.setAttribute("class", "l-stype js-l-stype active");
continue;
}
if (child.innerText === "手机登录") {
child.setAttribute("class", "l-stype js-l-stype");
continue;
}
}
}
return true;
}
function HandleXiami() {
var switchBtn = getById("J_LoginSwitch");
if (switchBtn === null) {
return false;
}
switchBtn.click();
return true;
}
function HandleBaiduYun() {
var switchBtn = getById("TANGRAM__PSP_4__footerULoginBtn");
if (switchBtn === null) {
return false;
}
switchBtn.click();
return true;
}
function Handlejd() {
var qrcodeBtn = getByClassName("login-tab-l");
if (qrcodeBtn === null) {
return false;
}
var link = getByTagName("a", 0, qrcodeBtn);
if (link === null) {
return false;
}
if (link.getAttribute("class") != "checked") {
return false;
}
var loginBtn = getByClassName("login-tab-r");
if (loginBtn === null) {
return false;
}
loginBtn.click();
return true;
}
function Handle12306() {
var loginCode = getByClassName("login-code");
if (loginCode === null) {
return false;
}
var style = loginCode.getAttribute("style");
if (style.length !== 0 && style.indexOf("display: block;") == -1) {
return false;
}
// 点击
var loginBtn = getByClassName("login-hd-account");
if (loginBtn !== null) {
loginBtn.click();
}
// 隐藏二维码
style = style.replace("display: block", "display: none");
loginCode.setAttribute("style", style);
return true;
}
function HandleIqiyi() {
var elements = document.getElementsByClassName("login-frame");
if (elements === null || elements.length === 0) {
return false;
}
var hasLoginFrameFlag = false;
var finalElement = null;
for (var index = 0; index < elements.length; ++index) {
var element = elements[index];
if (element.getAttribute("class") == "login-frame" && element.getAttribute("data-loginele") == "codeLogin") {
element.setAttribute("class", "login-frame dn");
hasLoginFrameFlag = true;
}
if (element.getAttribute("data-loginele") == "passLogin") {
finalElement = element;
}
}
if (hasLoginFrameFlag && finalElement !== null) {
finalElement.setAttribute("class", "login-frame");
}
return hasLoginFrameFlag;
}
function HandleHuya() {
var obj = getByClassName("UDBSdkLgn-qrImage");
if (obj === null) {
return false;
}
if (obj.getAttribute("src") === null) {
return false;
}
var normalLogin = getByClassName("UDBSdkLgn-inner account login");
if (normalLogin !== null) {
var classList = normalLogin.getAttribute("class");
if (classList.indexOf("UDBSdkLgn-none") != -1) {
classList = classList.replace("UDBSdkLgn-none", "");
normalLogin.setAttribute("class", classList);
var qrLogin = getByClassName("UDBSdkLgn-inner qrCode login");
classList = qrLogin.getAttribute("class");
qrLogin.setAttribute("class", classList + " UDBSdkLgn-none");
}
}
return true;
}
function HandleAcfun() {
var loginSwitch = getById("login-switch");
if (loginSwitch === null) {
return false;
}
loginSwitch.click();
return true;
}
function HandleQQ() {
var qlogin = getByClassName("web_qr_login");
if (qlogin === null) {
return false;
}
var style = qlogin.getAttribute("style");
if (style === null) {
return false;
}
if (style.indexOf("display: none") != -1) {
var switchBtn = getById("switcher_plogin");
if (switchBtn !== null) {
switchBtn.click();
}
}
return true;
}
function HandleBaiduZiyuan() {
var switchBtn = getByClassName("tang-pass-footerBarULogin pass-link");
if (switchBtn !== null) {
switchBtn.click();
}
return (switchBtn !== null);
}
function HandleBaiduCommon() {
var loginFrame = getById("passport-login-pop");
if (loginFrame === null) {
return false;
}
var loginStyle = loginFrame.getAttribute("style");
if (loginStyle === null || loginStyle.indexOf("display: none") != -1) {
return false;
}
var switchBtn = getByClassName("tang-pass-footerBarULogin pass-link", 0, loginFrame);
if (switchBtn !== null) {
switchBtn.click();
}
return true;
}
function Handle58() {
var qrcodeLogin = getByClassName("qrcodelogin");
if (qrcodeLogin === null) {
return false;
}
var style = qrcodeLogin.getAttribute("style");
if (style === null) {
return false;
}
if (style.indexOf("display: block") != -1) {
var switchBtn = getByClassName("qrcode");
if (switchBtn !== null) {
switchBtn.click();
}
}
}
function HandleBaiduPassport() {
var switchBtn = getByClassName("tang-pass-footerBarULogin pass-link");
if (switchBtn !== null) {
switchBtn.click();
}
return (switchBtn !== null);
}
function HandleCsdn() {
var elements = document.getElementsByClassName("text-tab border-right");
if (elements === null || elements.length < 2) {
return false;
}
var link = getByTagName("a", 0, elements[1]);
if (link !== null) {
link.click();
return true;
}
return false;
}
function HandleTianya() {
var wrapper = getById("loginWin_content_wrapper");
if (wrapper === null) {
return false;
}
if (wrapper.getAttribute("class") != "loginWin-normal-login-wrapper") {
var button = getByClassName("normal-login-tab");
if (button !== null) {
button.click();
}
}
return true;
}
function HandleExmail() {
var elements = document.getElementsByClassName("nav_item js_verify_item");
if (elements === null || elements.length === 0) {
return false;
}
for (var index = 0; index < elements.length; ++index) {
var element = elements[index];
if (element.getAttribute("data-type") == "phone") {
element.click();
}
}
return true;
}
function HandleTaobao() {
var imgElement = getByClassName("qrcode-img");
if (imgElement === null) {
return false;
}
var img = getByTagName("img", 0, imgElement);
if (img === null) {
return false;
}
var button = getById("J_Quick2Static");
if (button === null) {
return false;
}
button.click();
return true;
}
function HandleSuning() {
var img = getByClassName("qrCodesId");
if (img === null) {
return false;
}
var elements = document.getElementsByClassName("tab-item");
if (elements === null || elements.length === 0) {
return false;
}
for (var index = 0; index < elements.length; ++index) {
var element = elements[index];
if (element.innerText == "账户登录") {
element.click();
}
}
return true;
}
var handle_funcs =
{
"www.alipay.com": HandleMainAlipay,
"auth.alipay.com": HandleAuthAlipay,
"www.xiami.com": HandleMainXiami,
"passport.douyu.com": HandleDouyu,
"login.xiami.com": HandleXiami,
"passport.xiami.com": HandleXiami,
"pan.baidu.com": HandleBaiduYun,
"passport.jd.com": Handlejd,
"kyfw.12306.cn": Handle12306,
"www.iqiyi.com": HandleIqiyi,
"www.huya.com": HandleHuya,
"www.acfun.cn": HandleAcfun,
"ssl.xui.ptlogin2.weiyun.com": HandleQQ,
"xui.ptlogin2.qq.com": HandleQQ,
"ziyuan.baidu.com": HandleBaiduZiyuan,
"wenku.baidu.com": HandleBaiduCommon,
"tieba.baidu.com": HandleBaiduCommon,
"www.baidu.com": HandleBaiduCommon,
"passport.baidu.com": HandleBaiduPassport,
"passport.58.com": Handle58,
"passport.csdn.net": HandleCsdn,
"www.tianya.cn": HandleTianya,
"exmail.qq.com": HandleExmail,
"login.taobao.com": HandleTaobao,
"passport.suning.com": HandleSuning,
};
function commonFunc_Loop(func) {
var retryCount = 0;
var repeatAction = setInterval(function () {
if (func()) {
clearInterval(repeatAction);
console.log("Handle '%s' Succ.", location.host);
}
if (++retryCount > 100) {
clearInterval(repeatAction);
console.log("Handle '%s' time out!", location.host);
}
}, 50);
}
function __Main() {
if (handle_funcs[location.host] !== undefined) {
commonFunc_Loop(handle_funcs[location.host]);
}
}
__Main();
})();