Nhiều website chỉ muốn chặn các công cụ thu thập dữ liệu, nhưng cuối cùng lại vô tình chặn luôn cả bot của công cụ tìm kiếm.
Tôi cũng từng thấy những trường hợp trong đó người ta viết hàng loạt User-Agent trông rất chuyên nghiệp trong robots.txt, nhưng thực tế không cái nào hoạt động — máy chủ vẫn bị crawl dữ dội.
Tiếp theo, từ góc nhìn thực tế của một webmaster, hãy cùng bàn xem User-Agent trong robots.txt nên được viết như thế nào để giảm thiểu rủi ro và tránh sự cố.

User-Agent là cách bạn nói với công cụ tìm kiếm hoặc crawler rằng: “Những quy tắc này áp dụng cho ai”.
Ví dụ phổ biến nhất: User-agent: * Disallow: /admin/
Dấu * ở đây đại diện cho tất cả crawler, bao gồm bot tìm kiếm, công cụ thu thập dữ liệu và một số script tự động.
Và nếu bạn viết như sau: User-agent: Googlebot Disallow: /test/
Điều đó có nghĩa là chỉ crawler của Google bị hạn chế, các crawler khác thì không.
Vì vậy, việc viết User-Agent có chính xác hay không sẽ trực tiếp quyết định các quy tắc robots.txt có thực sự có hiệu lực hay không.
Nhiều người mới mắc sai lầm khi chỉ dựa vào tên crawler để xác định danh tính. Ví dụ, thấy Googlebot trong header là mặc định đó là bot của Google.
Trên thực tế, hiện nay có quá nhiều công cụ có thể giả mạo User-Agent, nên chỉ dựa vào chuỗi UA là không đáng tin cậy.
Đây là lúc phân tích User-Agent phát huy tác dụng:
• Có tuân thủ chuẩn UA chính thức hay không
• Có mang thông tin hệ thống hợp lý hay không
• Có khớp với dải IP hay không
• Hành vi có giống crawler của công cụ tìm kiếm bình thường hay không
Đây cũng là lý do vì sao một số webmaster đã cho phép Googlebot trong robots.txt nhưng máy chủ vẫn bị crawl bất thường và quá tải.
Cách viết này không sai, nhưng chỉ phù hợp khi bạn thực sự không muốn hạn chế bất kỳ crawler nào.
Nếu bạn có trang quản trị, thư mục test hoặc trang nội dung trùng lặp, tốt hơn nên thêm các quy tắc riêng.
Cách an toàn hơn là:
Lợi ích của cách làm này bao gồm:
• Dễ đọc hơn
• Dễ xử lý sự cố về sau
• Tránh vô tình bị wildcard chặn nhầm
Một số hướng dẫn trên mạng dạy bạn chặn những UA “trông rất cao cấp”, nhưng nhiều cái trong số đó thực tế không tồn tại. robots.txt sẽ không báo lỗi, nhưng các quy tắc này gần như vô tác dụng.
Nhiều công cụ thu thập dữ liệu và tự động hóa hiện nay hoàn toàn không quan tâm đến robots.txt. Thứ họ thực sự chú ý là:
• Phát hiện dấu vân tay trình duyệt
• Mô hình hành vi
• Tần suất request
• Khả năng thực thi JavaScript
Nói cách khác, ngay cả khi User-Agent được viết hoàn hảo, nếu không có kiểm tra dấu vân tay trình duyệt cơ bản, đối phương vẫn có thể giả lập một crawler “trông hoàn toàn hợp lệ”.
Đây là lý do ngày càng nhiều website kết hợp nhận dạng dấu vân tay với phân tích hành vi để kiểm soát truy cập.
Sử dụng công cụ tra cứu dấu vân tay của ToDetect, bạn có thể thấy:
• UA đó có bị nhiều công cụ tái sử dụng hay không
• Có tồn tại tổ hợp dấu vân tay bất thường hay không
• Có khớp với môi trường trình duyệt bình thường hay không
• Có dấu hiệu tự động hóa rõ ràng hay không
Bước này cực kỳ hữu ích để phân biệt “crawler thật và crawler giả”, đặc biệt với các website quy mô vừa và lớn.
• robots.txt phân biệt chữ hoa chữ thường; User-Agent nên viết đúng theo chuẩn chính thức
• Không viết các quy tắc mâu thuẫn cho cùng một User-Agent
• Sau khi sửa robots.txt, hãy xóa cache và kiểm tra lại
• Công cụ tìm kiếm áp dụng robots.txt có độ trễ, không có hiệu lực ngay lập tức
Bỏ qua những chi tiết này rất dễ khiến người ta hiểu nhầm rằng “robots.txt không hoạt động”.
Nếu website của bạn đã bị thu thập dữ liệu ồ ạt hoặc bị spam traffic, đừng mong một dòng User-Agent có thể “chặn được tất cả”.
User-Agent trong robots.txt phải là thật và đúng chuẩn. Đừng chỉ dựa vào User-Agent — kết hợp phân tích UA và hành vi sẽ đáng tin cậy hơn nhiều.
Chống thu thập dữ liệu bắt đầu từ robots.txt, nhưng phát hiện dấu vân tay trình duyệt của ToDetect mới là yếu tố then chốt. Nếu website của bạn có quy mô lớn, chắc chắn bạn nên tiến thêm một bước sang phân tích dấu vân tay và hành vi.