當有人請 Dvina 執行需要用到真正瀏覽器的任務時,Dvina 的瀏覽器便會為該使用者瀏覽網站,每次只為一人服務。本頁供網站擁有人參考,說明瀏覽器的運作方式、如何識別其請求,以及如何允許或封鎖它。
這是甚麼
Dvina 是個人助理。當已登入 Dvina 的使用者要求執行需要用到網站的任務,例如比較優惠或填寫指定表格,Dvina 可以在該使用者的 Dvina 電腦上,透過自己的瀏覽器完成任務。這是設有視窗的桌面版 Chromium,而非無頭瀏覽器;使用者可以即時觀看,並隨時接手操作。
- 只為一人執行任務。 每個瀏覽器都屬於一位已登入的 Dvina 使用者,並按照該使用者的要求工作。
- 不是網絡爬蟲。 它沒有自行瀏覽的網站清單,只會逐步開啟任務所需的頁面:載入頁面、閱讀內容,再進行操作,就像人一樣。
- 絕不用於訓練模型。 Dvina 的瀏覽器在你的網站上讀取的內容,只會用於處理其服務對象的請求,絕不會用來訓練 AI 模型。
- 由使用者自行作出決定。 它不會輸入密碼或付款卡資料。當頁面需要使用者登入或付款時,Dvina 會停下來,請使用者接手。涉及個人資料、傳送、付款及刪除的操作,都會先等待使用者同意。
- 不會代為通過真人驗證。 遇到用來確認是否由真人瀏覽的驗證,例如 Cloudflare 的驗證、Turnstile、reCAPTCHA 或 hCaptcha,它不會點擊、解答或重新載入。如果驗證會自行完成,Dvina 便會等待。如果驗證一直未能完成,任務便會暫停,由使用者接手瀏覽器、通過驗證,再交回 Dvina。
識別其請求
Dvina 的瀏覽器會透過 Web Bot Auth,使用 Ed25519 金鑰為每個送出的 http 和 https 請求加上 HTTP 訊息簽章(RFC 9421)。每個請求都帶有三個標頭:
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,而非使用者代理字串。
備註
使用桌面應用程式時,使用者也可以讓 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 機械人政策: 在 Security Settings 中,選擇 Configure AI bot policies。在 Agent 下,選擇 Allow (do not block)、Block on pages with ads 或 Block (on all pages)。
- 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(如有)。