User agent (UA) là chuỗi mà trình duyệt hoặc bất kỳ chương trình nào khác dùng để tự giới thiệu với server trong header của mỗi yêu cầu: tên và phiên bản trình duyệt, nhân trình duyệt, hệ điều hành, đôi khi cả mẫu thiết bị. Lọc theo user agent nghĩa là server đọc chuỗi này và dựa vào đó quyết định cho ai vào, cho ai xem trang khác và loại ai như bot.
Phương pháp đơn giản và rẻ, nên đến nay vẫn gặp trong các script tự viết và plugin «anti-bot». Nhưng chuỗi do chính phía khách viết ra, và giả mạo nó dễ hơn bất kỳ dấu hiệu nào khác của lượt truy cập. Dưới đây là UA chứa chính xác những gì, khi nào có thể tin chuỗi này, khi nào không và cách dùng nó kết hợp với các tín hiệu khác.
User agent là gì và trong đó ghi gì
Một chuỗi điển hình của Chrome di động trên Android trông như sau:
Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Mobile Safari/537.36
Đọc từng phần sẽ dễ hơn:
| Phần | Ý nghĩa |
|---|---|
Mozilla/5.0 |
Tiền tố tương thích từ lịch sử, gần như trình duyệt nào cũng có và không nói lên gì |
(Linux; Android 10; K) |
Nền tảng và hệ điều hành; mẫu thiết bị trong trình duyệt hiện đại thường bị thay bằng giá trị giả |
AppleWebKit/537.36 (KHTML, like Gecko) |
Nhân hiển thị và thêm một chi tiết vì tương thích |
Chrome/130.0.0.0 |
Trình duyệt và phiên bản chính; các số phụ từ lâu đã bị đặt về 0 |
Mobile Safari/537.36 |
Dấu hiệu giao diện di động |
Từ chuỗi này server thường lấy ra bốn thứ: loại thiết bị (điện thoại, máy tính bảng, máy tính, TV), hệ điều hành, trình duyệt và dấu hiệu cho thấy trước mặt nó hoàn toàn không phải trình duyệt mà là chương trình hoặc robot.
Lưu ý: chuỗi gần như không chứa thông tin riêng biệt. Hàng triệu điện thoại gửi cùng một UA — chính vì vậy các trình duyệt đã «đóng băng» nó, để khó theo dõi con người hơn.
Client Hints: chi tiết đang chuyển đi đâu
Các trình duyệt dùng nhân Chromium dần rút gọn chuỗi cổ điển, còn chi tiết được gửi qua Client Hints — bộ header Sec-CH-UA, Sec-CH-UA-Mobile, Sec-CH-UA-Platform và các header khác. Một số được gửi kèm mỗi yêu cầu, số khác chỉ khi server yêu cầu rõ ràng. Với việc lọc, điều này có ích theo hai cách: gợi ý khó bịa ra từ đầu một cách hợp lý, và có thể đối chiếu chúng với chuỗi chính. Một trình duyệt tự gọi mình là Chrome trên Windows trong UA nhưng báo nền tảng khác trong gợi ý đang hành xử lạ.
Cũng có giới hạn: Safari và Firefox hỗ trợ gợi ý theo cách khác hoặc hoàn toàn không hỗ trợ, nên tự việc thiếu Client Hints không nói lên điều gì.
Lọc theo user agent hoạt động thế nào
Ở dạng đơn giản nhất, đó là danh sách chuỗi con: nếu UA chứa một từ bị cấm, khách bị chuyển sang trang thay thế. Phức tạp hơn một chút là bộ phân tích tách chuỗi thành trình duyệt, hệ điều hành và thiết bị, với các quy tắc dựa trên kết quả: «chỉ cho điện thoại vào», «không cho Smart TV vào», «chỉ Android».
Ở đây cần tách biệt hai nhiệm vụ khác nhau:
- Targeting — chọn đối tượng mục tiêu: offer này có cần desktop không, iOS có phù hợp không. Chuỗi UA hoạt động tốt ở đây, vì người bình thường không giả mạo nó, và sai sót không tốn nhiều.
- Chặn bot — loại tự động hóa. Ở đây UA gần như vô dụng nếu đứng một mình: người viết bot việc đầu tiên là đặt chuỗi của một trình duyệt thật.
Chi tiết về bộ lọc đối tượng theo thiết bị, hệ điều hành và trình duyệt có trong bài về lọc theo geo và thiết bị. Tiếp theo chúng ta nói về nhiệm vụ thứ hai.
User agent của bot: ai tự giới thiệu trung thực
Một phần traffic tự động thực sự tự giới thiệu đúng như bản chất. Đó là hai nhóm khác nhau.
Script và công cụ thô sơ. Thư viện gửi yêu cầu HTTP, công cụ tải dòng lệnh, parser mặc định gửi UA riêng — với tên thư viện và phiên bản — hoặc hoàn toàn không gửi. Chuỗi UA rỗng hoặc tên thư viện thay vì trình duyệt là dấu hiệu đáng tin cậy: người thật từ quảng cáo không đến như vậy. Những lượt này bị loại ngay và gần như không có rủi ro.
Crawler tìm kiếm và robot «lịch sự». Công cụ tìm kiếm, dịch vụ xem trước link, dịch vụ giám sát tình trạng hoạt động thường ghi trung thực tên của mình và link tới mô tả. Với website thông thường, đây là những vị khách có ích và không bị chặn. Nhưng cũng có lưu ý: chuỗi của robot tìm kiếm nổi tiếng thường bị parser sao chép để được vào những nơi công cụ tìm kiếm được vào. Vì vậy chính các công cụ tìm kiếm khuyên kiểm tra robot không theo UA mà bằng truy vấn DNS ngược tới địa chỉ IP: crawler thật đến từ mạng của chính công ty đó.
Kết luận: bộ lọc theo UA bắt tốt những kẻ không cố ẩn mình. Đây là một phần đáng kể của yêu cầu rác, và loại chúng rất rẻ. Nhưng đó không phải phần traffic bot đang ăn ngân sách quảng cáo.
Giả mạo user agent: vì sao bộ lọc chỉ dựa vào UA yếu
Bất kỳ chương trình nào ngụy trang dù chỉ một chút đều gửi chuỗi của Chrome hoặc Safari mới nhất. Việc này làm bằng một dòng mã, còn trong trình duyệt — bằng một công tắc trong công cụ dành cho nhà phát triển. Tiếp theo nảy sinh ba vấn đề.
Không thấy được giả mạo từ chính chuỗi. UA đúng của trình duyệt thật và UA y hệt trong yêu cầu của script trông giống nhau tới từng byte. Không thể kiểm tra chuỗi bằng chính nó — chỉ có thể đối chiếu với các dấu hiệu khác.
Danh sách bị lỗi thời. Danh sách đen chuỗi con cần cập nhật liên tục: công cụ mới xuất hiện, công cụ cũ đổi tên, còn trình duyệt thật đổi định dạng chuỗi. Danh sách không được cập nhật nửa năm chủ yếu bắt những thứ từ lâu đã không còn đến.
Chặn nhầm người thật. Trình duyệt tích hợp trong ứng dụng, WebView, điện thoại cũ, bản trình duyệt doanh nghiệp gửi những chuỗi lạ. Quy tắc «mọi thứ không giống Chrome tiêu chuẩn đều đáng ngờ» cắt đúng traffic di động từ mạng xã hội — loại bạn đang trả tiền. Đặc thù của trình duyệt tích hợp được viết chi tiết trong bài về traffic in-app và gian lận.
Lời khuyên. Nếu một quy tắc theo UA kích hoạt trên một phần đáng kể traffic trả phí, nhiều khả năng nó đang cắt người thật chứ không phải bot. Những con bot đáng để xây dựng bảo vệ đều đến với chuỗi hoàn hảo.
Khi nào lọc theo user agent vẫn hữu ích
Bất chấp tất cả những điều trên, UA là dấu hiệu bình thường và cần thiết, nếu biết đúng vị trí của nó.
- Loại tự động hóa thô sơ. UA rỗng, tên thư viện, công cụ dòng lệnh hoặc framework thu thập dữ liệu — lập tức «không». Một lớp rẻ, giảm tải cho các kiểm tra còn lại.
- Xác định loại thiết bị cho targeting và định tuyến. Điện thoại hay máy tính, Android hay iOS — để phân phối traffic tới các offer, chuỗi UA thường là đủ.
- Nhận diện trình duyệt tích hợp. Từ UA có thể thấy lượt truy cập đến từ trình duyệt bên trong ứng dụng. Điều này quan trọng không phải để chặn mà ngược lại — để không phạt lượt đó vì những dấu hiệu thường sai trong WebView.
- Đối chiếu với dấu hiệu khác. UA nói «iPhone», còn màn hình, bộ phông chữ và hành vi của script thì không. Chính sự không khớp đó là tín hiệu.
- Phân tích số liệu. Phân tách theo trình duyệt và hệ điều hành trong báo cáo cho thấy chuyển đổi tụt ở đâu và đợt tăng đáng ngờ đến từ đâu.
Kết hợp với dấu hiệu khác: UA là một tiếng nói trong nhiều tiếng nói
Bảo vệ tốt không hỏi «UA của lượt truy cập là gì», mà hỏi «UA có khớp với mọi thứ còn lại không». Đây là những dấu hiệu thường được đối chiếu với nó:
| Dấu hiệu | Đối chiếu UA với gì |
|---|---|
| Địa chỉ IP và mạng | Trình duyệt di động từ mạng hosting là lý do để xem kỹ; chi tiết trong bài về VPN, proxy và IP trung tâm dữ liệu |
| Header của yêu cầu | Bộ header và thứ tự của chúng ở trình duyệt thật khác với thư viện, kể cả khi chuỗi UA giống nhau |
| Client Hints | Nền tảng và thương hiệu trình duyệt trong gợi ý phải khớp với chuỗi |
| Chạy JavaScript | Trình duyệt tự nhận là Chrome hiện đại nhưng không chạy script thì không hành xử như trình duyệt |
| Thuộc tính trình duyệt trong script | Nền tảng, màn hình, dấu hiệu tự động hóa; chi tiết trong bài về headless browser và dấu vân tay trình duyệt |
| Hành vi | Thời gian trên trang, chuyển động chuột và chạm |
Mỗi dấu hiệu riêng lẻ đều có thể sai. Cùng nhau chúng cho ra một đánh giá ít sai hơn nhiều. Mọi bộ lọc traffic thông minh hiện đại đều được xây như vậy: một dấu hiệu đơn lẻ thêm chút nghi ngờ, còn kết luận chắc chắn đến từ sự trùng khớp của nhiều dấu hiệu. Sơ đồ chung các lớp bảo vệ được phân tích trong bài cách lọc traffic bot.
Trong ArtisanClo hoạt động thế nào
Trong ArtisanClo, chuỗi user agent là một trong các tín hiệu chứ không phải một quy tắc riêng «theo danh sách». Quyết định về lượt truy cập được hình thành từ nhiều bước, và UA tham gia vào mỗi bước theo cách riêng.
Mạng và yêu cầu. Bước đầu tiên xem địa chỉ, mạng, nhà cung cấp, header, nhãn click và quy tắc của luồng — trước cả khi kiểm tra trình duyệt. Ở đây loại chương trình thay vì trình duyệt và robot tạo bản xem trước link của các nền tảng: những lượt này luôn nhận White Page, với bất kỳ cấu hình nào, và trong nhật ký hiển thị lý do «Chương trình, không phải trình duyệt» hoặc «Crawler của công cụ tìm kiếm hoặc nền tảng». Bước này ít ảnh hưởng tới người thật nhất.
Đối tượng. Trong cài đặt lọc của luồng có các danh sách «Thiết bị», «Hệ điều hành» và «Trình duyệt» với nút «Cho phép» và «Từ chối». Trong số thiết bị có riêng mục «Bot / crawler» và «Không xác định». Đây là targeting: khách không qua danh sách thấy White Page với lý do rõ ràng.
Kiểm tra trình duyệt. Ai gửi chuỗi của trình duyệt thật sẽ đi qua bước kiểm tra bằng script, và chính phản hồi của nó cho thấy lượt truy cập có giống tự động hóa không. Tùy chọn chặn headless loại ngay khi có dấu vết tự động hóa rõ ràng, còn các dấu hiệu kém rõ ràng hơn đi vào điểm tin cậy cùng với mạng, VPN, việc có nhà cung cấp và website nguồn hay không.
Trình duyệt tích hợp. Trình duyệt tích hợp của Facebook, Instagram, TikTok và WebView trong ứng dụng được nhận diện riêng. Dấu hiệu tự động hóa ở chúng không loại lượt truy cập ngay, mà được tính vào điểm tin cậy cùng với mạng, thời gian và referrer, vì trong các trình duyệt này nó thường sai.
Minh bạch. Mỗi click trong nhật ký có lý do quyết định trong số hàng chục lý do có thể, còn link «Báo cáo lượt truy cập» hiển thị mọi tín hiệu và kết luận cho một lượt truy cập. Nếu bạn nghi bộ lọc đã sai, hãy bắt đầu từ bài vì sao click vào White Page. Mọi khả năng lọc được tập hợp trên trang tính năng.
Những lỗi thường gặp khi lọc theo user agent
- Xây bảo vệ trên danh sách đen chuỗi con. Nó chỉ bắt những kẻ không ẩn mình và đòi hỏi cập nhật vô tận.
- Chặn mọi thứ «không tiêu chuẩn». Bị ảnh hưởng là trình duyệt tích hợp của mạng xã hội và thiết bị cũ — traffic trả phí của người thật.
- Tin vào chuỗi trông đúng. UA hoàn hảo của trình duyệt hiện đại chính là thứ mà một con bot làm tốt gửi tới.
- Nhầm targeting với bảo vệ. Chọn «chỉ Android» là quyết định về đối tượng của offer, không phải cách loại bỏ bot.
- Không xem lý do bị loại. Nếu không thấy quy tắc nào đã kích hoạt, không thể biết bộ lọc đang cắt bot hay người. Các dấu hiệu giúp thấy traffic bot trong báo cáo được tập hợp trong bài về dấu hiệu traffic bot.
Tóm lại
Chuỗi user agent là những gì phía khách tự nói về mình. Có thể tin nó khi rủi ro thấp: để xác định thiết bị, phân phối traffic, phân tích số liệu. Không thể tin nó như bằng chứng rằng trước mặt bạn là con người. Lọc theo user agent loại tốt script thô sơ và yêu cầu rỗng, nhưng bảo vệ thực sự bắt đầu ở nơi UA được đối chiếu với mạng, header, Client Hints, việc chạy script và hành vi. Khi đó chuỗi giả mạo không giúp được bot, còn chuỗi lạ không gây hại cho khách thật.



