GitHub - Echoxiawan/SessionKeeper: 网站保活工具 · GitHub
Skip to content

About

网站保活工具

Resources

Stars

7 stars

Watchers

1 watching

Forks

Latest commit

 

History

2 Commits

Folders and files

Repository files navigation

SessionKeeper

简体中文 | English

SessionKeeper 是一个仅支持 Chrome 的 Manifest V3 扩展。它通过真实的后台页面访问行为,定期访问浏览器中已经打开的网站,帮助延续现有登录会话。

扩展不依赖网站 API,不分析业务接口,不注入页面脚本,也不读取网页内容。所有配置、运行状态和日志都只保存在本机 Chrome 中。

界面预览

点击缩略图可查看完整截图。

控制台 设置 日志
控制台缩略图 设置页缩略图 日志页缩略图
启停、立即执行与运行状态 频率、并发和域名规则 最近 100 条执行记录

功能特性

  • 自动扫描浏览器中已打开的 HTTP/HTTPS 网站
  • 从页面 URL 提取 origin,并按域名去重
  • 使用不激活的后台 Tab 访问网站,不切换当前页面
  • 页面加载完成后继续等待一段时间,让网站脚本完成会话刷新
  • 支持定时执行和手动立即执行
  • 支持立即停止全部任务并取消后续定时
  • 支持配置 1–10 个并行后台 Tab,默认并发数为 3
  • 支持黑名单和白名单模式
  • 页面加载超过 30 秒自动失败,不阻断后续任务
  • 本地保存最近 100 条运行日志
  • 适配 Manifest V3 Service Worker 休眠和恢复
  • 启停、设置和日志全部集中在插件弹窗内
  • 设置自动保存,无需寻找或点击保存按钮

运行方式

定时启动

打开“自动保活”后,SessionKeeper 只会创建定时计划,不会立即访问网站。经过一个完整的执行间隔后,才会开始第一轮任务。

例如执行间隔为 10 分钟,在 12:00 启用后,第一轮将在约 12:10 开始,后续继续按 10 分钟执行。

立即执行

点击“立即保活”会马上开始一轮任务,并从点击时刻重新计算下一次定时执行时间。

例如执行间隔为 10 分钟,在 12:04 点击“立即保活”,本轮会立即执行,下一轮将在约 12:14 开始。

停止全部

任务运行时,“立即保活”按钮会变成“停止全部”。点击后会立即:

  1. 清空尚未执行的任务队列。
  2. 关闭 SessionKeeper 当前创建的全部后台 Tab。
  3. 取消后续定时任务。
  4. 将自动保活切换为停用状态。

SessionKeeper 只会关闭自己创建的任务 Tab,不会关闭用户原本打开的页面。

单个网站的保活流程

  1. 扫描当前打开的正常网页 Tab。

  2. 忽略空 URL、非法 URL 和非 HTTP/HTTPS 页面。

  3. 提取页面的 origin。例如,输入地址:

    https://gitlab.example.com/project/demo
    

    转换为:

    https://gitlab.example.com
    
  4. 按域名去重,并应用黑名单、白名单规则。

  5. 根据并发配置创建不激活的后台 Tab。

  6. 等待页面加载完成。

  7. 继续等待配置的页面等待时间,默认 10 秒。

  8. 关闭任务 Tab,并记录执行结果。

页面加载超过 30 秒、导航失败、URL 非法或 Tab 创建失败时,该任务会记录为失败,队列中的其他任务继续执行。

配置项

配置 默认值 范围或规则 说明
自动保活 启用 开启 / 停用 启用后等待一个完整间隔再执行
执行间隔 10 分钟 1–1440 分钟 每轮任务的定时频率
页面加载后等待 10 秒 0–300 秒 给网站脚本预留会话刷新时间
并行后台页面 3 个 1–10 个 同时运行的任务 Tab 上限
黑名单 空 每行一个域名 匹配域名及其所有子域名
白名单模式 关闭 开启 / 关闭 开启后只访问白名单中的域名
白名单 空 每行一个域名 仅在白名单模式开启时生效

黑名单优先于白名单。规则 example.com 会同时匹配 example.com、www.example.com 和 jira.example.com。

自动保存

  • 数字配置和白名单模式开关变更后立即保存。
  • 黑名单、白名单停止输入约 400 毫秒后自动保存。
  • 设置页顶部会显示“等待自动保存”“正在自动保存”“已自动保存”或错误原因。
  • 输入超出允许范围时不会覆盖已有配置。
  • 连续修改会按顺序保存,避免较早的请求覆盖最新值。

安装与使用

1. 下载并解压

下载本项目源码并解压到一个固定目录。请不要在加载扩展后移动或删除该目录,否则 Chrome 将无法继续加载插件。

确认所选择的目录中可以直接看到 manifest.json,目录结构应类似:

SessionKeeper/
├── manifest.json
├── background/
├── popup/
└── utils/

2. 加载到 Chrome

  1. 在 Chrome 地址栏输入 chrome://extensions 并回车。
  2. 打开页面右上角的“开发者模式”。
  3. 点击左上角的“加载已解压的扩展程序”(Load unpacked)。
  4. 选择上一步中的 SessionKeeper 根目录,也就是包含 manifest.json 的目录。
  5. 页面出现 SessionKeeper 扩展卡片即表示安装成功。

3. 固定插件图标

  1. 点击 Chrome 工具栏右侧的“扩展程序”拼图图标。
  2. 在列表中找到 SessionKeeper。
  3. 点击旁边的固定图标,将 SessionKeeper 显示在工具栏上。
  4. 点击 SessionKeeper 图标即可打开控制面板。

4. 首次设置

  1. 打开插件后切换到“设置”页。
  2. 设置执行间隔、页面加载后等待时间和并行后台页面数量。
  3. 根据需要填写黑名单,或开启白名单模式并填写允许保活的域名。
  4. 所有配置都会自动保存。看到“已自动保存”后即可关闭弹窗,无需点击保存按钮。

域名规则每行填写一个,例如:

gitlab.example.com
jira.example.com

5. 启动保活

回到“控制台”页,打开“自动保活”开关。插件会建立定时计划,并在经过一个完整的执行间隔后开始第一轮任务。

如果希望现在就执行一次,点击“立即保活”。本轮会马上开始,下一轮将从本次点击时间起按配置的间隔执行。

执行过程中可以关闭插件弹窗,后台任务不会因此中断。

6. 停止保活

任务执行时,底部按钮会显示“停止全部”。点击后会立即关闭插件创建的任务 Tab、清空等待队列、取消后续定时并停用自动保活。

如果当前没有任务正在执行,直接关闭“自动保活”开关也会取消后续定时任务。

7. 查看运行结果

打开插件并切换到“日志”页,可以查看最近 100 条运行记录,包括网站域名、执行时间、结果、耗时和失败原因。

更新本地版本

替换或修改项目文件后,打开 chrome://extensions,在 SessionKeeper 扩展卡片上点击“重新加载”。重新加载不会主动删除已经保存在 Chrome 中的设置和日志。

权限说明

权限 用途
tabs 扫描当前网页、创建和关闭插件自己的后台任务 Tab
alarms 创建定时计划,并在 Service Worker 休眠后继续调度
storage 在本机保存配置、运行状态和最近 100 条日志
webNavigation 识别 DNS、连接拒绝、证书等主页面导航错误
http://*/*、https://*/* 允许后台 Tab 访问用户已打开的 HTTP/HTTPS 网站

隐私与安全

SessionKeeper 不会:

  • 上传或向第三方发送用户数据
  • 读取网页正文或修改网页 DOM
  • 注入 Content Script
  • 读取密码、Cookie、表单或页面中的敏感信息
  • 分析网站 API、业务接口或鉴权逻辑
  • 将日志同步到网络

扩展只创建真实的 Chrome 页面访问行为。配置和日志存储在 chrome.storage.local 中。

日志

弹窗“日志”页展示最近 100 条记录,包括执行时间、网站域名、成功或失败结果、任务耗时和失败原因。

停止全部时,正在运行的任务会以“用户停止本轮任务”记录为失败,便于区分正常成功和主动中断。

项目结构

SessionKeeper/
├── manifest.json
├── background/
│   └── service-worker.js
├── popup/
│   ├── popup.html
│   ├── popup.js
│   └── popup.css
├── utils/
│   └── storage.js
├── assets/
│   ├── sessionkeeper-control.png
│   ├── sessionkeeper-settings.png
│   ├── sessionkeeper-logs.png
│   └── thumbnails/
├── README.md
└── README_EN.md

项目仅使用 JavaScript、HTML、CSS 和 Chrome 官方 Extension API,没有第三方运行时依赖。

限制

  • SessionKeeper 只能帮助触发网站自身已有的会话刷新机制,无法保证所有网站永久保持登录。
  • 服务端主动吊销会话、修改密码、强制重新登录或会话达到绝对有效期时,仍需用户重新登录。
  • 依赖用户手势、前台焦点、验证码或特殊浏览器策略的网站,可能无法通过后台访问刷新会话。
  • Chrome 可能根据系统节能策略延迟后台定时任务,因此执行时间可能存在少量偏差。
  • 建议仅对白名单中的工作网站启用保活,并设置合理的执行间隔。

故障排查

启用后没有立即打开后台页面

这是预期行为。启用只建立定时计划,第一轮会在一个完整执行间隔后开始。如需马上执行,请点击“立即保活”。

点击停止后是否还会定时执行

不会。“停止全部”会取消主定时任务并停用自动保活。再次打开自动保活前,不会启动新一轮任务。

某个域名没有出现在监控列表

请依次检查:

  1. 对应网站是否仍有 HTTP/HTTPS 页面处于打开状态。
  2. 域名是否被黑名单匹配。
  3. 白名单模式是否开启,以及域名是否在白名单中。
  4. 设置页顶部是否显示“已自动保存”。

日志显示页面加载超时

页面在 30 秒内没有完成主页面加载。可能原因包括网络不可用、代理问题、证书错误、网站服务异常或页面持续重定向。失败不会阻断其他任务。

About

网站保活工具

Resources

Stars

7 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages