Skip to content

monkey-sking/FabHelperScript

Repository files navigation

Fab Helper Script

中文 | English

Fab Helper 是一个为 Fab.com 平台打造的专业级自动化辅助与体验优化用户脚本。项目已完成全面的模块化重构(v3.5.x),具备极速的资源拦截过滤、智能的 429 限速自动恢复、高精度的瀑布流滚动记忆以及多标签页并行处理等强大功能。


核心特性

  • 三重锁定大资源禁用 在最早期(document-start 阶段)通过 CSP 注入CSS 强制隐藏 以及 MutationObserver 同步源改写 三重机制,全面拦截网页上图片、视频、自定义字体及 iframe(包含 WebGL 3D 查看器)的加载,大幅降低网络开销与浏览器渲染负担,彻底释放连接通道。
  • 🔍 智能网络请求拦截与优化 全局拦截 /i/users/me/listings-states 接口,自动对比本地数据库中已入库的商品 ID。仅向服务器请求未知的商品状态,对已拥有商品进行零开销的本地 Mock 并于响应中无缝合并,显著减少 API 请求频次,极大降低触发 HTTP 429 限速的几率。
  • 🔄 429 限速智能检测与自动恢复 脚本会实时监测 API 响应状态及页面加载限速。当被限速时,自动转为等待模式,执行随机延迟退避策略,并通过定时刷新和健康探测(Probe)在限速解除后自动恢复任务流程,全程无需人工干预。
  • ⚙️ 多标签页后台并行加库 采用“主页面调度 - 多子标签页执行”架构,最大支持多标签页并发。通过后台轻量级详情页拉取,免受网页前端动画阻塞,实现全自动静默添加至 Library。
  • 📍 高精度滚动位置记忆与高亮反馈 采用基于 Cursor 游标定位的页面修补技术,精确记录瀑布流浏览历史,刷新或重开页面后能自动还原滚动位置。当位置成功恢复时,提供高对比度的深色模式友好型(半透明浅绿背景与亮绿文字)视觉高亮提示。
  • 🖥️ 玻璃美学悬浮控制台 采用现代玻璃拟态(Glassmorphism)和深色模式视觉设计。内置多维度实时状态监控(任务数、线程数、状态指示)、实时日志台、配置开关面板(禁用大资源、隐藏已拥有、滚动自动添加、隐藏付费等)及一键重置等功能。
  • 📅 可读构建版本 构建脚本自动将时间戳转化为开发者本地时区的 v[semver]-[YYYYMMDD]-[HHmm] 可读格式,极为方便日常调试与版本回溯。

目录结构

本脚本基于模块化设计,核心代码位于 src/ 目录下:

src/
├── config.js               # 全局静态配置、UI 选择器、数据库键名
├── state.js                # 全局运行时状态管理器 (AppStatus, Execution flags)
├── index.js                # 脚本主入口,实现 document-start 级别的资源拦截与 API 重写
├── i18n/                   # 国际化语言包
│   ├── zh.js               # 中文翻译文本
│   └── en.js               # 英文翻译文本
└── modules/
    ├── api.js              # 网络请求中心(XHR/Fetch 辅助、GM Fetch、数据提取)
    ├── data-cache.js       # 内存数据缓存系统(包括 Listing、价格与拥有状态,含 TTL 清理)
    ├── database.js         # 本地持久化数据管理(Todo 队列、已入库 Done 列表、配置项)
    ├── instance-manager.js # 多实例/跨标签页互斥与并发锁管理器
    ├── page-diagnostics.js # 详情页面 DOM 诊断与状态分析工具
    ├── page-patcher.js     # 页面修补器(处理 URL 游标注入、输入消抖、滚动还原)
    ├── rate-limit-manager.js# 429 限速处理与自动恢复探测机制
    ├── task-runner.js      # 自动化加库流程控制中心(主标签页监控与工作标签页执行)
    ├── ui.js               # 控制台 UI 构建与交互逻辑
    └── utils.js            # 工具函数(日志记录、Cookie 处理、游标解码等)

安装与开发

环境准备

  • 安装 Node.js (建议使用 LTS 版本)。
  • 安装 Tampermonkey 或 Violentmonkey 浏览器插件。

本地构建

  1. 克隆代码库,并在根目录下安装依赖:
    npm install
  2. 运行打包构建(生成 dist/fab_helper.user.js):
    npm run build
  3. 开发模式(监听文件改动自动构建):
    npm run dev

部署使用

  • 构建完成后,将生成的 dist/fab_helper.user.js 的全部内容复制,在浏览器脚本管理器中新建脚本并粘贴保存。
  • 访问 https://www.fab.com,控制台即会在页面右下角自动加载。

核心设置项说明

在控制台的“设置 (Settings)”选项卡中,您可以自由调整以下功能:

配置名称 对应英文 功能说明
记住瀑布流浏览位置 Remember scroll position 开启后将自动记录您在搜索列表的滚动深度,刷新页面时自动恢复,无需重新翻页。
滚动时自动添加任务 Auto add task on scroll 开启后,在滚动瀑布流列表时,自动将视野内符合过滤条件的商品加入待办加库队列。
隐藏已入库商品 Hide items in library 开启后,自动在列表页中隐藏已经保存在库中的商品,实现列表清爽预览。
全面禁用图片/媒体等大资源 Disable images and media 开启后,全面禁止搜索列表和详情工作页加载媒体、图片、自定义字体及 iframe,大幅提升速度并省流。
隐藏所有付费商品 Hide all paid items 过滤并隐藏非免费的所有付费项目。
隐藏打折付费商品 Hide discounted paid items 隐藏所有原价付费但在打折的商品(保留纯免费商品)。

关联文档

如需进一步了解开发细节或操作指南,请参阅 docs 目录:

About

No description, website, or topics provided.

Resources

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors