当用户请求 Dvina 执行需要使用真实浏览器的任务时,Dvina 的浏览器会为该用户访问网站,一次只服务一人。本页面向网站所有者,介绍这个浏览器的工作方式、如何识别它的请求,以及如何允许或屏蔽它。
它是什么
Dvina 是一款个人助手。当已登录 Dvina 的用户请求执行需要使用网站的任务,例如比较优惠方案或按其要求填写表单时,Dvina 可以在该用户的 Dvina 电脑上,使用自己的浏览器完成任务。这是一个带有窗口的桌面版 Chromium,而不是无头浏览器。用户可以实时查看操作,并随时接管。
- 它只为一位用户执行任务。 每个浏览器都属于一位已登录的 Dvina 用户,并按该用户的请求执行任务。
- 它不是爬虫。 它没有会自行访问的网站列表,而是根据任务需要逐步打开页面:加载页面、阅读内容,然后进行操作,就像人一样。
- 内容绝不用于训练模型。 Dvina 的浏览器在你的网站上读取的内容,仅用于处理它所服务用户的请求,绝不用于训练 AI 模型。
- 需要用户自己做的决定,仍由用户做出。 它不会输入密码或银行卡信息。当页面需要用户登录或付款时,Dvina 会停止操作,请用户接管。涉及个人信息、发送、付款和删除的操作,都要等待用户同意。
- 它不会完成真人验证。 遇到用于确认浏览者是真人的验证,例如 Cloudflare 的验证、Turnstile、reCAPTCHA 或 hCaptcha 时,它不会点击、破解或重新加载验证。如果验证会自动通过,Dvina 就会等待。如果验证持续存在,任务就会停止,由用户接管浏览器,完成验证后再交回给 Dvina。
识别它的请求
Dvina 的浏览器会使用 Ed25519 密钥,通过 Web Bot Auth 的 HTTP 消息签名(RFC 9421),为它发出的每个 http 和 https 请求签名。每个请求都包含三个标头:
Signature-Agent: "https://api.dvina.ai"
Signature-Input: sig1=("@authority" "signature-agent");created=<unix time>;expires=<created + 60>;keyid="<key id>";alg="ed25519";nonce="<random>";tag="web-bot-auth"
Signature: sig1=:<Ed25519 signature>:
Signature-Agent标识 Dvina,即发布其密钥的源站。Signature-Input涵盖请求的@authority(你的主机)和Signature-Agent标头。tag的值为web-bot-auth。- 每个签名从
created到expires的有效期为 60 秒。 keyid是密钥的 JWK 指纹(RFC 7638)。
该浏览器发送 Chromium 自身的用户代理字符串,与 Linux 上的其他 Chromium 浏览器相同,例如:
Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/155.0.0.0 Safari/537.36
它的 Chrome 版本会随 Chromium 的更新而变化,用户代理字符串中不包含任何 Dvina 信息。请通过签名识别 Dvina,而不是通过用户代理字符串。
说明
使用桌面 App 时,用户也可以让 Dvina 使用自己电脑上的浏览器。该浏览器不会为请求签名,看起来与用户自己浏览网页没有区别。
验证签名
Dvina 在其密钥目录中发布公钥:
https://api.dvina.ai/.well-known/http-message-signatures-directory
该目录的响应包含 Content-Type: application/http-message-signatures-directory+json,以及包含 Dvina 的 Ed25519 公钥的 JSON Web Key Set。响应使用同一密钥签名,并带有 tag="http-message-signatures-directory"。
如果你的网站使用 Cloudflare,Cloudflare 会为你验证已签名的代理。要自行验证请求,请按以下步骤操作:
- Check that
Signature-Agentis"https://api.dvina.ai"and thatSignature-Inputhastag="web-bot-auth". - Check that the time now is between
createdandexpires. - Get the key directory and pick the key whose JWK thumbprint matches
keyid. - Build the signature base from
@authority,signature-agentand the signature parameters, as RFC 9421 describes, and verify theSignaturewith that Ed25519 key.
任何人都可以发送这些标头。只有使用 Dvina 密钥目录中的密钥验证签名通过后,才能将请求视为来自 Dvina。
允许或屏蔽它
Dvina 的浏览器会实时为单个用户执行操作,这类流量属于 Cloudflare 的 Agent 预设所涵盖的范围。如果你的网站使用 Cloudflare:
- AI 机器人策略: 在 安全设置 中,选择 配置 AI 机器人策略。对于 Agent,选择 允许(不阻止)、在含广告的页面上阻止 或 阻止(所有页面)。
- WAF 自定义规则: 来自已验证机器人和已签名代理的请求,其
cf.client.bot(使用 Bot Management 时为cf.bot_management.verified_bot)会设为 true。在自定义规则中使用该字段,即可跳过、质询或阻止这些请求。 - 已验证机器人目录: 在 Cloudflare Radar 中查看 Cloudflare 已验证的代理。
Anywhere else, verify the signature as described above, then allow or block requests whose verified Signature-Agent is "https://api.dvina.ai".
联系我们
对 Dvina 的浏览器在你网站上的活动有疑问,或遇到了行为与本页描述不符的请求?请发送邮件至 support@dvina.ai,提供你的网站地址,以及请求的时间和 keyid(如果有)。