当一款 Chrome 扩展监控某个网站时,有三个问题至关重要:它读取什么、存储什么、发送什么?对于监控 TLScontact 的工具——一个你以包含敏感身份信息的账户登录的网站——这些问题绝非学术讨论。本文针对 Visa Master 的 Free 和 Premium 两个层级,完整回答这些问题。
这是技术说明。如果你只想看简短版本:Free 层从不向 torly.ai 发送任何内容。Premium 层发送一小组明确说明的元数据——下文精确描述——且明确不发送凭据、会话令牌或页面内容。
Free 层的工作原理:100% 本地架构
Visa Master Free 是一款 Chrome Manifest V3 扩展程序。其核心是service worker——一个在后台持续运行(在 Chrome 的驱逐规则范围内)并管理监控循环的后台脚本。
当你登录 TLScontact 并打开预约日历页面时,service worker 以约 20–40 秒的频率轮询页面。它通过向 TLScontact 标签页注入内容脚本来实现这一点,该脚本读取 DOM——具体是预约日历元素——并反馈是否有可用槽位。
内容脚本读取 DOM 状态。它不读取:
- 你的 TLScontact 电子邮件或密码(这些在登录表单中,你在扩展开始工作之前已完成登录)
- 存储在 TLScontact 中的你的个人详细信息
- 任何支付卡信息
- 任何护照或身份证件数据
- 预约日历以外页面的源 HTML
当内容脚本报告有可用槽位时,service worker 触发 Chrome 桌面通知,并在你已配置 Telegram 的情况下向你的个人机器人令牌发送消息。该 Telegram API 调用从你的设备直接发送至 Telegram 的服务器;不经过 torly.ai 路由。
Visa Master Free 发出的网络请求
| 目标 | 用途 | 是否必须? |
|---|---|---|
*.tlscontact.com | 加载并轮询你已打开的预约日历 | 是——这就是监控本身 |
api.telegram.org | 向你的个人机器人发送槽位提醒 | 仅当你已配置 Telegram |
torly.ai | 无 | — |
| 任何其他域名 | 无 | — |
manifest 的 host_permissions 字段由 Chrome 强制执行,你可以在 Chrome 网上应用店列表或公开扩展仓库中查看,它将扩展限制为 *.tlscontact.com 和 torly.ai。它没有访问任何其他域名的权限。manifest 中存在 torly.ai 权限是为 Premium 层的许可证验证和支付流程准备的——但在 Free 模式下,没有任何代码路径会调用它。
Chrome 存储:本地保存的内容
扩展使用 chrome.storage.local 作为其状态总线——这是纯本地存储,不与任何 Google 账户同步。它存储:
- 你的监控设置(目标中心、轮询频率偏好、通知声音偏好)
- 当前扩展状态(IDLE、NO_SLOTS、SLOT_AVAILABLE 等)
- 你的 Telegram 机器人令牌和聊天 ID(如已配置)
- 统计数据(已执行的轮询次数、上次检测到槽位的时间等)
- 一个
installId——安装时在本地生成的随机 UUID
installId 在本地生成并存储。在 Free 模式下,它从不传输到任何地方。其在存储中的存在是为 Premium 层的支付流程做准备——在那里它成为将你的设备与成功预订关联的假名标识符,同时不暴露你的身份。
Premium 层的工作原理:明确、有文档记录的选择性加入
Premium 在 Free 层基础上增加了两项功能:当 TLScontact 将你退出登录时自动重新登录,以及当槽位出现时自动预订。两者都需要你的 TLScontact 凭据。以下是这些凭据的确切处理方式。
凭据存储:基于每次安装盐值的 AES-GCM 加密
当你启用 Premium 并输入 TLScontact 凭据时,扩展在存储前对其加密。加密过程:
- 获取你的
installSalt——安装时生成并存储在chrome.storage.local中的随机字节数组。 - 使用安装盐值通过 PBKDF2 派生加密密钥。密钥从不离开你的设备。
- 使用随机生成的 IV,通过 AES-GCM 加密你的 TLScontact 电子邮件和密码。
- 将加密后的数据以
tlsCreds为键存储在chrome.storage.local中。
明文凭据仅在加密瞬间和扩展需要重新向 TLScontact 认证时的解密瞬间存在于内存中。它们从不记录到 console.*,从不包含在任何错误报告中,也从不传输至 torly.ai。
加密实现位于扩展源码的 src/shared/crypto.ts 中。可通过公开仓库进行独立验证。
Premium 向 torly.ai 发送的内容
| 数据点 | 发送原因 |
|---|---|
installId(随机 UUID) | 许可证状态和成功费追踪的假名标识符 |
| Stripe 客户电子邮件 | 支付处理——直接发送至 Stripe,不存储在 torly.ai 数据库中 |
bookingId(TLS 预订参考号) | 收据生成、Telegram 预订回显 |
slotAt(槽位时间戳) | 收据和确认 |
centre(TLScontact 中心名称) | 收据和 Telegram 通知 |
| 浏览器版本、操作系统 | 错误报告和兼容性追踪 |
| 数据点 | 状态 |
|---|---|
| TLScontact 电子邮件 | ❌ 从不发送 |
| TLScontact 密码 | ❌ 从不发送 |
| 会话 cookie 或令牌 | ❌ 从不发送 |
| 轮询频率 | ❌ 从不发送 |
| DOM 内容 | ❌ 从不发送 |
| Telegram 机器人令牌 | ❌ 从不发送 |
| 护照或身份数据 | ❌ 从不发送 |
installId 是"已发送"列中最敏感的项目。它是一个随机 UUID——除非你主动联系支持并将其与真实身份关联,否则无法识别你的身份。它以假名方式用于追踪某次安装是否持有有效许可证以及是否应收取成功费。
Webhook 渠道:独立的匿名标识符
对于希望通过自带 webhook(而非依赖 Telegram 或 Visa Master 通知系统)接收预订确认的用户,扩展使用独立的标识符:webhookInstallId。
这是与 installId 不同的 UUID。它专用于 webhook 渠道,这样启用 webhook 通知的 Free 用户就不会暴露可能与任何 Premium 付款或许可证记录关联的标识符。这两个 UUID 在扩展代码和 torly.ai 数据库模式中均严格分离。
torly.ai 后端:它知道什么,不知道什么
torly.ai 服务器为 Visa Master 处理三项功能:许可证 JWT 签发、通过 Stripe 收取成功费,以及预订确认回显。
许可证 JWT 签发: 当你激活 Premium 时,torly.ai 签发一个使用 RS256 签名的 JWT(JSON Web Token)。令牌编码你的 installId、受众 visa-master-extension(与其他 torly.ai 产品不同)、过期时间和层级。扩展在每次检查时在本地验证此令牌——不为每次验证发出网络请求,仅进行约每 24 小时一次的定期活跃度检查。
成功费收取: £19 成功费通过 Stripe 处理。torly.ai 收到你的 Stripe 客户电子邮件和预订确认元数据。你的支付卡数据从不触碰 torly.ai——它留在 Stripe 的 PCI 合规基础设施中。
预订确认回显: 当成功预订时,torly.ai 收到 bookingId、slotAt 和 centre。这用于发送 Telegram 确认(通过 Visa Master 团队的机器人,与你的个人 BYOB 机器人分开)并生成收据。这些数据在 torly.ai 数据库中与你的 installId 关联存储。
torly.ai 数据库不包含的内容
- 你的 TLScontact 登录凭据
- 你的真实姓名、国籍或护照号码
- 你的出行日期或签证申请详情
- 你的 Telegram 账户信息
- 任何 TLScontact 页面的 DOM 快照
Manifest 权限:Chrome 强制执行的内容
Chrome 的权限模型由浏览器强制执行,而不仅仅是扩展声明。Visa Master 的 manifest host_permissions 为:
"host_permissions": [
"*://*.tlscontact.com/*",
"*://torly.ai/*"
]
这意味着扩展无法向这两个域名以外的任何域名注入内容脚本、读取页面数据或发出跨域请求。你可以自行验证:安装扩展,打开 chrome://extensions/,点击 Visa Master 的"详细信息",查看列出的权限。Chrome 独立执行 manifest——无论扩展代码尝试什么,运行时都无法访问任何其他域名。
该扩展还请求以下 Chrome API 权限:storage、alarms、notifications、tabs、scripting、webNavigation。每项在监控和通知流程中都有特定用途。没有任何权限授予访问密码、支付数据或其他已安装扩展的能力。
为什么这种架构重要
本地优先模型不是营销宣传——它是一种具有可验证后果的特定技术架构。TLScontact 的服务器端扫描工具无法做出相同保证,因为根据定义,它需要由外部服务器(而非你自己的浏览器会话)访问 TLScontact。
实际意义:使用 Visa Master Free 时,TLScontact 只会看到来自你的 IP 地址、你的浏览器、你的已认证会话的请求。没有第三方服务器参与监控。你的浏览会话对你保持私密。
Free 从不读取你的 TLS 密码。Free 从不向 torly.ai 发送任何内容。Free 从不在 TLS 标签页和可选 Telegram 之外发出任何网络请求。
这一承诺是可验证的。Manifest 是公开的。扩展的开源组件可以被审计。如果你想进一步验证,可以在扩展运行时使用 Chrome 的网络检查器,确认没有向 torly.ai 发出任何请求。
从 Chrome 网上应用店安装 Visa Master Free,亲自验证网络流量。
如需了解这与竞争扩展方法的比较,请阅读法国签证槽位 Chrome 扩展:Visa Master vs VisaReady vs Booker。如需了解自动预订凭据处理的完整情况,请参阅自动预订法国签证预约:按成功收费工具的实际运作方式。
- visa-master
- privacy
- france-visa
- chrome-extension