Bộ phân tích Robots.txt

Dán một robots.txt và đọc nó như cách một trình thu thập đọc, theo RFC 9309 (Giao thức loại trừ robot, được chuẩn hóa năm 2022): các nhóm user-agent, quy tắc Allow/Disallow, sitemap và chỉ thị không xác định, tất cả được trình bày — cùng một bước kiểm tra các lỗi kinh điển (dòng disallow trống, chỉ thị không xác định, tệp quá lớn). Bộ khớp sau đó trả lời câu hỏi thực sự: dán một user agent và một đường dẫn, rồi nhận kết luận cho phép/từ chối cùng quy tắc chính xác đã quyết định nó — khớp dài nhất, ký tự đại diện *, neo cuối $ và gộp nhóm, đúng như tiêu chuẩn quy định. Mọi thứ chạy trong trình duyệt của bạn.
Chưa phân tích gì. Dán một robots.txt ở trên rồi nhấn Phân tích tệp, hoặc tải một mẫu.
Bộ khớp làm việc trên văn bản hiện có trong ô phía trên (không cần nhấn Phân tích trước). User agent được khớp theo cách RFC 9309 định nghĩa: giá trị User-agent trong tệp phải là chuỗi con không phân biệt hoa thường của những gì bạn gõ ở đây — vì vậy gõ ExampleBot/1.0 sẽ khớp một nhóm khai báo là ExampleBot. Có thể nhập URL đầy đủ làm đường dẫn.
User agent (một chuỗi UA thật cũng được) Đường dẫn hoặc URL đầy đủ
Chưa có kết luận. Nhấn Kiểm tra quyền.
Cách lấy tệp của bạn:mởhttps://your-domain.example/robots.txttrong trình duyệt, chọn tất cả, sao chép, và dán vào đây — hoặccurl -s https://your-domain.example/robots.txttrong terminal. Trang này không tự tải gì: nó chỉ đọc những gì bạn dán. Để kiểm tra các header phản hồi đã mang tệp, chạy chúng quabộ phân tích tiêu đề HTTP.
Tự kiểm tra
Chạy lại trình phân tích và bộ khớp với các vector tham chiếu RFC 9309: ưu tiên khớp dài nhất (bao gồm trường hợp hòa allow-thắng-disallow và trường hợp đường dẫn sâu), gộp nhóm, the*dự phòng nhóm, phân biệt hoa thường của đường dẫn và user agent, ký tự đại diện,$neo, phép allow ngầm của/robots.txt, chuẩn hóa mã hóa phần trăm, trích xuất sitemap, và các đường dẫn phủ định. Không gửi gì đi đâu cả.
robots.txt là gì?
Trong một câu: robots.txt là một tệp văn bản thuần ở gốc của một trang, cho biết các trình thu thập tử tế những đường dẫn nào được phép tải — một quy ước tự nguyện, được chuẩn hóa thành RFC 9309 năm 2022, mà mọi trình thu thập lớn đều tôn trọng.
Hình dạng của một tệp

Một tệp là một chuỗi các bản ghi. Một nhóm bắt đầu bằng một hoặc nhiều dòng User-agent, theo sau là các quy tắc Allow và Disallow áp dụng cho những trình thu thập đó. Một dòng User-agent mới sau các quy tắc bắt đầu một nhóm mới; nhiều dòng User-agent liên tiếp dùng chung một nhóm (trình thu thập có hai tên cần điều này). Bản ghi đứng riêng như Sitemap có thể xuất hiện ở bất cứ đâu. # bắt đầu một chú thích ở bất kỳ vị trí nào trong dòng. Tên trường không phân biệt hoa thường; đường dẫn thì có.

ĐườngNghĩa là
User-agent: foobotCác quy tắc dưới đây áp dụng cho các trình thu thập có tên chứa foobot (không phân biệt hoa thường)
User-agent: *Các quy tắc dưới đây áp dụng cho mọi trình thu thập không có nhóm cụ thể hơn
Disallow: /private/Không tải các đường dẫn bắt đầu bằng /private/
Allow: /private/public/Ngoại lệ vượt qua disallow ở trên cho các đường dẫn này (khớp dài nhất)
Disallow: (trống)Không cấm gì — thành ngữ "cho phép tất cả" kinh điển
Sitemap: https://…/sitemap.xmlSitemap của bạn nằm ở đâu; các trình thu thập có thể thu thập nhiều cái
Crawl-delay: 30Không có trong RFC 9309 — một tiện ích cũ; các trình thu thập lớn bỏ qua hoặc tự diễn giải
Cách đưa ra kết luận (RFC 9309 §2.2.2)

1. Tìm nhóm có giá trị User-agent là chuỗi con của tên trình thu thập; gộp mọi nhóm khớp. Nếu không có, dùng nhóm *; nếu cũng không có nhóm đó, thì mọi thứ được phép. 2. Kiểm tra đường dẫn với mọi quy tắc: khớp theo tiền tố, phân biệt hoa thường, và */$ hoạt động như ký tự đại diện. 3. Quy tắc khớp dài nhất thắng; khi bằng độ dài, Allow thắng Disallow. Không có quy tắc khớp nghĩa là được phép. Và dù quy tắc nói gì, bản thân /robots.txt ngầm được phép — nếu không, trình thu thập không thể đọc các quy tắc.

Những lỗi thường gặp
  • Tin rằng robots.txt chặn được truy cập. Nó là một yêu cầu với các trình thu thập lịch sự, không phải bức tường: các scraper bất chính bỏ qua hoàn toàn, và nó không ảnh hưởng gì đến những gì trình duyệt có thể mở. Để bảo vệ thật, dùng xác thực; chỉ để điều hướng công cụ tìm kiếm, robots.txt là công cụ đúng.
  • Kỳ vọng Disallow: / xóa trang khỏi kết quả tìm kiếm. Nó chỉ chặn thu thập, không chặn lập chỉ mục: nếu các trang khác liên kết tới trang của bạn, công cụ tìm kiếm vẫn có thể liệt kê URL (không có mô tả). Thẻ meta hoặc header noindex mới là công cụ gỡ bỏ.
  • Dựa vào thứ tự thay vì độ dài. Quy tắc khớp đầu tiên không thắng — quy tắc cụ thể nhất (dài nhất) mới thắng. Sắp lại các dòng để "sửa" hành vi là vô nghĩa; hãy làm quy tắc muốn có dài hơn.
  • Chặn CSS và JS. Việc disallow /*.css$ và /*.js$ từng là "tối ưu hóa" phổ biến; giờ các trình dựng trang cần những tệp đó để thấy trang như khách truy cập, và một trang dựng dở có thể xếp hạng kém hơn.
  • Coi một nhóm lớn như tài liệu. Dòng chú thích trong một nhóm là ổn, nhưng một đoạn văn xuôi trước dòng User-agent đầu tiên mà không có # là lỗi phân tích có thể làm rối các trình phân tích dễ dãi.
Câu hỏi thường gặp

Mọi trình thu thập có hỗ trợ Allow, * và $ không? Các trình lớn đều hỗ trợ, và RFC 9309 chuẩn hóa cả ba. Một số trình thu thập nhỏ hoặc cũ chỉ hiểu Disallow và đọc * theo nghĩa đen — một lý do để giữ quy tắc đơn giản khi có thể.

Một Disallow: trống nghĩa là gì? "Không cấm gì" — nhóm này rõ ràng cho phép mọi thứ. Nó thường xuất hiện khi ai đó sửa một mẫu và xóa đường dẫn nhưng không xóa chỉ thị; phần kiểm tra sẽ chỉ ra.

Tệp được phép lớn đến đâu? RFC 9309 yêu cầu trình phân tích xử lý ít nhất 500 KiB; vượt quá đó trình thu thập có thể ngừng đọc và coi phần còn lại là bị cấm. Giữ tệp nhỏ hơn nhiều, và nếu nó phình to, hãy tự hỏi liệu việc kiểm soát thu thập có nên nằm trong header trang không.

Vì sao bộ khớp nói /robots.txt được phép ngay cả dưới Disallow: /? Vì tiêu chuẩn nói rõ như vậy: chính tệp robots được ngầm cho phép. urllib.robotparser của Python, cùng vài trình khác, không triển khai trường hợp đặc biệt này — một trong những khác biệt nhỏ giữa các trình phân tích thực tế mà trang này ghi lại trong phần tự kiểm tra của nó.

Đường dẫn Disallow có phân biệt hoa thường không? Có. /Private/ và /private/ là hai đường dẫn khác nhau. Tên trường disallow có thể viết hoa thường bất kỳ, nhưng giá trị phải khớp đúng URL.