在 SSO 认证页自动点击 Continue 按钮
// ==UserScript==
// @name Auto Click SSO Continue
// @namespace local-auto-sso-continue
// @version 1.0
// @description 在 SSO 认证页自动点击 Continue 按钮
// @match https://github.com/*
// @match https://*.okta.com/*
// @match https://*.pingidentity.com/*
// @match https://*/sso/*
// @match https://*/saml/*
// @run-at document-idle
// @grant none
// @license MIT
// ==/UserScript==
(function () {
'use strict';
// 关键词:按钮文字匹配,避免依赖具体 class(SSO 模板可能变化)
const BUTTON_TEXT = 'continue';
function findContinueButton() {
const candidates = document.querySelectorAll('button, a, input[type="submit"]');
for (const el of candidates) {
const text = (el.innerText || el.value || '').trim().toLowerCase();
if (text === BUTTON_TEXT) {
return el;
}
}
return null;
}
function tryClick() {
const btn = findContinueButton();
if (btn && !btn.disabled) {
btn.click();
return true;
}
return false;
}
// 页面加载后立即尝试一次
if (tryClick()) return;
// 用 MutationObserver 监听 SSO 页面动态渲染(很多 SSO 页面是 SPA,按钮可能延迟出现)
const observer = new MutationObserver(() => {
if (tryClick()) {
observer.disconnect();
}
});
observer.observe(document.body, { childList: true, subtree: true });
// 兜底:10秒后停止监听,避免无限占用资源
setTimeout(() => observer.disconnect(), 10000);
})();