Linux.do OAuth Script
// ==UserScript==
// @name Linux.do OAuth
// @namespace https://linux.do/
// @description Linux.do OAuth Script
// @author RyanCross6673
// @version 1.3
// @run-at document-end
// @match https://connect.linux.do/oauth2/authorize*
// @icon https://www.google.com/s2/favicons?sz=64&domain=linux.do
// @license MIT
// ==/UserScript==
(function () {
"use strict";
const allowKeywords = ["允许", "authorize", "approve", "同意", "授权", "确认", "登录", "login", "登入"];
const denyKeywords = ["cancel", "取消", "拒绝", "deny", "reject", "不同意", "decline"];
function isAllowButton(el) {
const text = (el.textContent || el.value || "").toLowerCase().trim();
return allowKeywords.some((k) => text.includes(k)) &&
!denyKeywords.some((k) => text.includes(k));
}
function clickAllow() {
const elements = document.querySelectorAll(
'button, input[type="submit"], input[type="button"], a.btn, [class*="btn"], [class*="button"]'
);
for (const el of elements) {
if (isAllowButton(el)) {
el.click();
return true;
}
}
return false;
}
if (!clickAllow()) {
const observer = new MutationObserver(() => {
if (clickAllow()) observer.disconnect();
});
observer.observe(document.body, { childList: true, subtree: true });
setTimeout(() => observer.disconnect(), 10000);
}
})();