监控工作原理
Page Deltas 按自适应时间表运行您的监控器,使用最轻量级且可行的方法抓取每个页面,并应用 LLM 过滤器,以便您只收到有意义的提醒。
一次检查的生命周期
- 调度。 一个中央调度程序会挑选出
next_check_at到期的监控器,并将作业排入 Postgres 队列中。 - 抓取。 工作节点 (worker) 认领作业并抓取页面(使用普通 HTTP,如果不行则通过数据中心代理使用无头浏览器,再不行则使用住宅代理 — 详见下文)。
- 提取。 HTML 被精简为其主要的文本内容。样板内容(导航栏、页脚、广告)会被剥离。
- 哈希与差异对比。 系统将生成标准化的哈希值并与上一次检查进行比较。如果完全相同,运行到此结束 — 不会调用 LLM。
- LLM 过滤。 如果哈希值发生了变化,差异内容 (diff) 和您的描述将被发送给 LLM,由它来决定该变更是否具有意义。
- 提醒。 有意义的变更会被写入
monitor_changes表中,并排队等待分发到连接至该监控器的每个渠道。
自适应调度
您无需设置检查频率。调度程序会观察页面实际发生更改的频率,并相应地调整 next_check_at — 当变更频繁发生时检查得更快,当页面处于休眠状态时检查得更慢。您的订阅计划也会影响节奏:较高级别的计划获得更高的调度优先级。这使您的资源使用量与您获得的价值保持正比。
抓取器的升级策略
每次检查都从成本最低的方案开始,只有在必要时才会升级手段:
- 普通 HTTP。 无 JavaScript,无浏览器。速度快且成本低。适用于大多数服务器渲染页面和 JSON 端点。
- 通过数据中心代理的无头浏览器。 当页面是客户端渲染,或普通的 HTTP 抓取被屏蔽时使用。我们使用 Camoufox(一款能够绕过大多数指纹识别的静默修补版 Firefox)进行渲染,并通过 Oxylabs 数据中心代理进行路由。
- 通过住宅代理的无头浏览器。 当数据中心代理抓取仍然被屏蔽时使用。通过 Oxylabs 的住宅 IP 路由相同的浏览器请求。
作为控制成本的措施,我们将按组织跟踪通过住宅代理路由的数据量(字节)。
LLM 过滤器
当页面文本的哈希值发生改变时,我们不会立即发出提醒。首先,我们会将差异内容和您的监控器描述发送给 LLM,并提出一个问题:根据这段描述,这个变更具有意义吗?
它能捕捉到什么
- 竞争对手定价页面上的价格变更。
- 路线图或变更日志上发布的新产品。
- 您正在监控的招聘页面上的职位发布变动。
它会忽略什么
在生成哈希值之前,空格和样板内容(导航栏、页脚、广告)会被剥离,因此它们永远不会到达 LLM。此外,分类器被指示将以下情况视为无意义内容:
- 轮播的客户评价、广告、“3 天前添加”式的相对时间戳,以及浏览量统计。
- 没有语义变化的重新排序。
- 构建哈希值 (Build hashes) 和会话标识符。