Giả mạo user-agent là gì
Mọi client HTTP đều có thể gửi một User-Agent header để mô tả chính nó: tên và phiên bản trình duyệt, tên một crawler, mã định danh của thư viện. Header này là tự khai báo. Không có gì trong HTTP kiểm tra rằng nó là đúng, nên bất kỳ client nào cũng có thể gửi bất kỳ giá trị nào. Giả mạo user-agent là hành vi gửi một giá trị mô tả sai về client, ví dụ:
- một script tự động hóa trình bày mình là một trình duyệt desktop hiện tại,
- một scraper tự nhận là một crawler tìm kiếm nổi tiếng để được đối xử ưu tiên,
- một tác nhân AI dùng chuỗi trình duyệt chung chung để được xử lý như một người.
Vì sao điều này quan trọng
Nhiều hệ thống vẫn ra quyết định từ chuỗi user-agent: cho phép những crawler đã biết, phục vụ nội dung khác nhau cho bot, hoặc loại trừ tự động hóa khỏi analytics. Mỗi quyết định như vậy đều mang theo điểm yếu của header này. Nếu một chính sách nói rằng "cho phép bất kỳ thứ gì tự nhận là crawler X", thì nó sẽ cho phép mọi người sao chép chuỗi của crawler X.
Với các ứng dụng nhận lưu lượng từ tác nhân AI, điều này ngày càng quan trọng hơn. Tác nhân ngày càng chạy bên trong trình duyệt thật hoặc các framework trình duyệt headless, nên chuỗi user-agent của chúng trông giống hệt trình duyệt của con người. Những tác nhân khác thì khai báo trung thực. Chỉ dựa vào header này không thể cho biết đâu là đâu. Bài viết của chúng tôi về cách nhận biết lưu lượng website có đến từ tác nhân AI hay không xem xét các tín hiệu hoạt động tốt hơn.
Bằng chứng tốt hơn header
- Chữ ký mật mã. Với HTTP Message Signatures và nỗ lực Web Bot Auth, client chứng minh rằng nó đang nắm giữ một khóa do nhà vận hành mà nó nêu tên công bố. Một chuỗi user-agent bị sao chép không thể tạo lại chữ ký.
- Xác minh do nhà vận hành công bố. Một số nhà vận hành crawler công bố dải IP hoặc hỗ trợ kiểm tra reverse DNS, khiến việc giả mạo khó hơn so với chỉ dựa vào header. Google có tài liệu về kiểm tra reverse DNS và dải IP cho crawler của mình, Microsoft cung cấp công cụ Verify Bingbot, và OpenAI công bố các file địa chỉ IP cho từng bot của mình. Hướng dẫn của Anthropic dành cho trình duyệt do Anthropic vận hành nói rõ rằng bất kỳ ai cũng có thể gửi cùng một header User-Agent và khuyến nghị kiểm tra các địa chỉ IP mà họ công bố.
- Kiểm tra tính nhất quán. So sánh client được khai báo với chi tiết giao thức và các tín hiệu tương tác có thể cho thấy khi một tuyên bố không khớp, dù điều này tạo ra suy luận chứ không phải bằng chứng.
- Thông tin xác thực. Với API, một API key hoặc token cho bạn biết tài khoản nào đang gọi, bất kể header nói gì.
Những hiểu lầm phổ biến
- "User-agent của trình duyệt nghĩa là con người." Trình duyệt headless và các framework tác nhân thường xuyên gửi chuỗi trình duyệt.
- "User-agent của crawler nghĩa là crawler đó." Nếu không có chữ ký hoặc một bước xác minh từ nhà vận hành, đó chỉ là một lời khai báo.
- "Giả mạo luôn có ý đồ xấu." Một số công cụ hợp pháp gửi chuỗi chung chung để tránh bị phục vụ các trang hỏng. Giả mạo là lý do để giảm trọng số của header này, không phải bằng chứng về ý đồ xấu.
Proof of Actor xử lý chuỗi user-agent như thế nào
Proof of Actor ghi lại một tuyên bố user-agent là bằng chứng Declared: điều mà client đã nói, và có thể đúng hoặc không đúng. Nó không tự động nâng một tuyên bố lên Verified. Một request mà bằng chứng nhận dạng duy nhất là chuỗi user-agent của một crawler sẽ được gắn nhãn tương ứng, và khi bằng chứng không đủ thì kết quả là Unknown thay vì một phỏng đoán chắc chắn. Các chính sách của bạn trong Route sau đó có thể xử lý một tác nhân đã ký và một tác nhân tự khai báo khác nhau, ví dụ cho phép cả hai trên các route chỉ đọc nhưng áp dụng giới hạn chặt hơn cho bên tự khai báo.
Xem cách các nền tảng bằng chứng hoạt động hoặc đăng ký quyền truy cập sớm.
Nguồn
- RFC 9110: HTTP Semantics, User-Agent: header này do client tự khai báo
- Google: Verifying Google's crawlers and fetchers: reverse DNS và kiểm tra dải IP đã công bố
- Microsoft Bing: Verify Bingbot tool: kiểm tra một địa chỉ IP có thuộc về Bingbot hay không
- OpenAI: Overview of OpenAI Crawlers: user agents và các file địa chỉ IP đã công bố
- Anthropic: how Anthropic-hosted browsers identify themselves: cảnh báo rằng header User-Agent có thể bị sao chép