Tôi chạy một trình thu thập dữ liệu Web quy mô khá lớn. Chúng tôi rất cố gắng để vận hành trình thu thập thông tin trong các tiêu chuẩn cộng đồng được chấp nhận và điều đó bao gồm việc tôn trọng robot.txt. Chúng tôi nhận được rất ít khiếu nại về trình thu thập thông tin, nhưng khi chúng tôi thực hiện phần lớn là về việc xử lý robot.txt của chúng tôi. Thông thường, Quản trị viên web đã mắc lỗi trong tệp robots.txt của mình và chúng tôi vui lòng chỉ ra lỗi. Nhưng định kỳ chúng tôi chạy vào các khu vực màu xám liên quan đến việc xử lý Allowvà Disallow.
Các robots.txt trang không bao gồm Allow. Tôi đã xem các trang khác, một số trang nói rằng trình thu thập thông tin sử dụng quy tắc "khớp đầu tiên" và các trang khác không chỉ định. Điều đó dẫn đến một số nhầm lẫn. Ví dụ: trang của Google về robot.txt được sử dụng để có ví dụ này:
User-agent: Googlebot
Disallow: /folder1/
Allow: /folder1/myfile.html
Rõ ràng, quy tắc "khớp đầu tiên" ở đây sẽ không hoạt động vì trình thu thập thông tin sẽ nhìn thấy Disallowvà biến mất, không bao giờ thu thập dữ liệu tệp được cho phép cụ thể.
Chúng tôi rõ ràng nếu chúng tôi bỏ qua tất cả các Allowdòng, nhưng sau đó chúng tôi có thể không thu thập thông tin một cái gì đó mà chúng tôi được phép thu thập dữ liệu. Chúng tôi sẽ bỏ lỡ mọi thứ.
Chúng tôi đã thành công lớn bằng cách kiểm tra Allowtrước, và sau đó kiểm tra Disallow, ý tưởng được Allowdự định sẽ cụ thể hơn Disallow. Đó là bởi vì, theo mặc định (nghĩa là không có hướng dẫn ngược lại), tất cả quyền truy cập đều được cho phép. Nhưng sau đó chúng tôi chạy qua một cái gì đó như thế này:
User-agent: *
Disallow: /norobots/
Allow: /
Ý định ở đây là rõ ràng, nhưng điều đó Allow: /sẽ khiến một bot kiểm tra Allowđầu tiên nghĩ rằng nó có thể thu thập dữ liệu bất cứ thứ gì trên trang web.
Thậm chí điều đó có thể được làm việc xung quanh trong trường hợp này. Chúng tôi có thể so sánh kết quả khớp Allowvới kết hợp Disallowvà xác định rằng chúng tôi không được phép thu thập dữ liệu bất kỳ thứ gì trong / norobots /. Nhưng điều đó bị phá vỡ khi đối mặt với các ký tự đại diện:
User-agent: *
Disallow: /norobots/
Allow: /*.html$
Câu hỏi đặt ra là bot có được phép bò /norobots/index.htmlkhông?
Các "phù hợp đầu tiên" quy tắc loại bỏ tất cả sự mơ hồ, nhưng tôi thường thấy các trang web hiển thị một cái gì đó giống như ví dụ Google cũ, đưa cụ thể hơn Allow sau khi các Disallow. Cú pháp đó đòi hỏi xử lý nhiều hơn bởi bot và dẫn đến sự mơ hồ không thể giải quyết.
Sau đó, câu hỏi của tôi là cách đúng đắn để làm mọi thứ? Quản trị viên web mong đợi gì từ một bot hoạt động tốt khi xử lý robot.txt?