如何使用Uptime-kuma绕过SSO页面获取正确站点监控状态?
Uptime Kuma监控SSO认证站点的配置方案
默认的HTTP(s)监控探针不会执行页面交互逻辑,碰到需要手动跳转、点授权、输凭证的SSO场景时,只会拿到SSO登录页的响应,根本访问不到实际业务站点,自然返回的状态不准。根据你的SSO管控权限,选下面对应方案就行:
方案1:预填认证Cookie(零额外依赖,适合SSO会话有效期长的场景)
- 本地浏览器正常走完SSO流程,登录到要监控的目标站点
- 按F12打开开发者工具,切到「应用/Application」面板,复制目标站点下所有和认证相关的Cookie(一般命名带session、token、sso字样)
- 编辑Uptime Kuma里的对应监控项,类型选「HTTP(s)」,展开高级设置,找到「请求头」配置,新增
Cookie头,值填你复制的Cookie串,格式为key1=value1; key2=value2 - 打开「跟随重定向」开关,最大重定向次数设为5及以上,在「有效状态码」配置里加上业务站点正常返回的状态值(比如200、304),不要只认默认的200
- 额外加一条关键字匹配规则,填只有登录后业务站点才会显示的专属文案,避免把SSO登录页误判成正常
- 注意:如果SSO会话定期过期,需要手动更新Cookie;嫌麻烦可以写个定时脚本自动调用SSO登录接口拿新Cookie,再通过Uptime Kuma的API更新监控配置,不用手动维护。
方案2:浏览器仿真监控(适配所有交互式SSO,无需担心会话过期)
这个方案用无头Chrome真实加载页面,能模拟人工点击、输入的操作过SSO,适配所有类型的交互式认证场景。
- 部署要求:如果是Docker部署Uptime Kuma,直接用带
-browser标签的官方镜像;裸机部署的话提前在服务器上装个Chromium/Chrome就行 - 新建/编辑监控项,类型选「HTTP(s) - 浏览器仿真」,填入目标站点地址
- 找到「自定义脚本」配置区,写SSO自动交互逻辑,参考示例:
// 等待SSO登录页加载完成,账号输入框出现 await page.waitForSelector('#username', { timeout: 10000 }); // 填入专门给监控用的SSO账号(建议单独建最小权限的只读账号,别用个人账号) await page.type('#username', 'sso_monitor_xxx'); await page.type('#password', '对应账号密码'); // 点击登录按钮 await page.click('#login-submit'); // 等待跳转到业务站点,检测专属元素出现,代表登录成功 await page.waitForSelector('#dashboard-container', { timeout: 15000 });
- 如果SSO开了MFA二次验证,可以在脚本里加TOTP自动生成验证码的逻辑,全程不用人工干预
- 注意:浏览器仿真的资源占用比普通HTTP监控高不少,低配置服务器不要开太多同类型监控。
方案3:SSO侧配置白名单(最稳定,零长期维护成本)
如果SSO系统是你们内部可管控的,优先用这个方案:
- 找SSO管理员配置规则,把Uptime Kuma的出口IP加到白名单,针对监控的目标站点路径设置免认证策略,Uptime Kuma发请求时直接跳过SSO校验
- 这种方式用最基础的HTTP(s)监控就能拿到准确状态,不存在Cookie过期、脚本失效的问题,生产环境最推荐。
避坑:别尝试给普通HTTP监控配Basic Auth传SSO账号密码,90%以上的企业SSO都不支持这种认证方式,配了也只会一直拿到登录页响应。
内容的提问来源于stack exchange,提问作者Laster
相关产品推荐
相关产品推荐

