Web Bot Auth — chữ ký cho request của bot và agent
Tóm tắt
Web Bot Auth giúp một bot chứng minh nó là ai. Bot ký từng request bằng HTTP Message Signatures (RFC 9421) và cho biết, trong header Signature-Agent, khóa công khai của nó nằm ở đâu. Bên vận hành bot công bố các khóa đó tại /.well-known/http-message-signatures-directory. Đây là bản nháp của nhóm làm việc webbotauth của IETF (draft-ietf-webbotauth-httpsig-protocol-00, 1/9/2026), do tác giả từ Cloudflare và Google soạn thảo; agent của ChatGPT đã ký theo cách này (xem /blog/web-bot-auth).
Giải thích đơn giản
Chuỗi user-agent giống bảng tên: ai cũng tự viết được. Web Bot Auth giống thẻ căn cước: bot đưa ra chữ ký, website đối chiếu với danh sách công khai mà chỉ chủ thật của bot mới đăng được trên tên miền của mình.
Hai bên, hai việc:
- Bên vận hành bot (công ty AI, crawler, dịch vụ giám sát) ký mọi request và công bố khóa công khai.
- Website xác minh. Website, hoặc CDN của nó, đọc chữ ký, tải danh mục khóa của bot một lần, lưu cache, rồi quyết định cho phép gì. Website không gửi bot nào thì không cần công bố gì.
Một request có chữ ký (draft-ietf-webbotauth-httpsig-protocol-00, 1/9/2026):
GET /page HTTP/1.1
Host: example.com
Signature-Agent: sig="https://bot.example"
Signature-Input: sig=("@authority" "signature-agent";key="sig");created=1700000000;expires=1700011111;keyid="<JWK thumbprint>";tag="web-bot-auth"
Signature: sig=:<chữ ký>:
Danh mục khóa, trên origin của bot:
GET /.well-known/http-message-signatures-directory
Content-Type: application/http-message-signatures-directory+json
{"keys": [{"kty": "OKP", "crv": "Ed25519",
"x": "<khóa công khai>", "kid": "<JWK SHA-256 thumbprint>"}]}
Các quy tắc quan trọng: tag PHẢI là web-bot-auth; chữ ký bao gồm @authority (hoặc @target-uri) và thành phần Signature-Agent; bắt buộc có created, expires và keyid, trong đó keyid là JWK SHA-256 thumbprint dạng base64url (RFC 7638); danh mục PHẢI dùng HTTPS, trả 200 (không chuyển hướng) và dùng đúng media type ở trên; kid trong danh mục PHẢI bằng thumbprint.
Không phải Web Bot Auth: /.well-known/web-bot-auth.json. Không bản nháp nào định nghĩa tệp này, và không bên xác minh nào đọc nó.
⚡Tại sao quan trọng
Chuỗi user-agent và danh sách IP dễ bị giả mạo hoặc lỗi thời. Chữ ký giúp website phân biệt agent ChatGPT thật với một scraper chép tên của nó, và cho agent thật đi qua lớp chặn bot vốn sẽ chặn bản giả. Ngày 25/10/2026, CiteStat kiểm tra 7 origin: chatgpt.com và ví dụ nghiên cứu của Cloudflare công bố danh mục hợp lệ (ví dụ của Cloudflare ghi nbf bằng mili giây, trong khi ngày của JWK tính bằng giây); github.com, vercel.com, www.cloudflare.com, developers.cloudflare.com và citestat.com không có danh mục — đúng với website không gửi bot có chữ ký.
🔍CiteStat kiểm tra thế nào
CiteStat tải /.well-known/http-message-signatures-directory trên origin được quét. Đạt khi đó là JWK Set trả về với application/http-message-signatures-directory+json và có ít nhất một khóa dùng được (OKP, EC hoặc RSA đủ thành phần công khai, kid bằng thumbprint, trong khoảng nbf/exp, không lộ khóa bí mật d). JSON không phải JWK Set, hoặc không có khóa dùng được, là lỗi trung bình; sai media type là lỗi thấp. Không có danh mục nghĩa là website không gửi bot có chữ ký: mục này được báo là không áp dụng. Bản quét không kiểm tra máy chủ của bạn có xác minh chữ ký hay không.
Điểm CiteStat
Chỉ là check chính trên thẻ Agent Readiness khi origin có công bố danh mục; nếu không, mục này không tính vào điểm (điểm = số check chính đạt / số check chính áp dụng × 10). Không thay đổi điểm SEO tổng.
Độ khó sửa
Biên tập viên: Không liên quan | Lập trình viên: Trung bình | AI Agent: Dễ