Cách viết robots.txt để thực sự chặn trình thu thập AI
Hướng dẫn thực tế để chặn các crawler AI tuân thủ quy tắc, hiểu giới hạn của robots.txt, và bổ sung kiểm soát phía máy chủ ở những nơi cần thiết.
Mục lục
- Sự thật khó chịu về robots.txt
- robots.txt có thể và không thể làm gì
- Bắt đầu bằng quyết định chính sách của bạn
- Một mẫu robots.txt hợp lý để chặn AI
- Hãy cẩn thận với Google-Extended
- Kiểm thử tệp như mã sản xuất
- Bổ sung kiểm soát phía máy chủ cho các bot phớt lờ quy tắc
- Giới hạn tốc độ
- Lọc user-agent
- Kiểm soát IP và ASN
- Xác thực và paywall
- Tối thiểu hóa nội dung
- Dùng thẻ meta robots cho quy tắc cấp trang
- Theo dõi log sau khi xuất bản
- Giữ tệp nhỏ gọn và được rà soát
- Kết luận
Sự thật khó chịu về robots.txt
Một tệp robots.txt không phải là ổ khóa. Nó là tấm biển trên cửa.
Sự khác biệt đó rất quan trọng khi các nhóm hỏi liệu họ có thể “chặn trình thu thập AI” bằng một tệp văn bản nhỏ hay không. Với các crawler uy tín tuân theo Robots Exclusion Protocol, câu trả lời là có: một tệp robots.txt được viết đúng có thể yêu cầu chúng không crawl các trang của bạn. Với các trình thu thập không rõ danh tính, kẻ giả mạo, tự động hóa trình duyệt, và các bot đơn giản là không quan tâm, bản thân nó sẽ không có tác dụng.
Vì vậy, mục tiêu thực tế không phải là “khiến việc thu thập dữ liệu trở nên bất khả thi.” Mục tiêu là:
- Yêu cầu các crawler AI tuân thủ không sử dụng trang web của bạn.
- Tránh vô tình chặn công cụ tìm kiếm hoặc các dịch vụ hữu ích.
- Bổ sung kiểm soát phía máy chủ mạnh hơn để xử lý lạm dụng.
- Giữ chính sách dễ bảo trì khi tên crawler thay đổi.
Đó là phiên bản nhàm chán. Nhưng đó cũng là phiên bản hoạt động.
robots.txt có thể và không thể làm gì
Một tệp robots.txt nằm ở thư mục gốc của một trang web:
https://example.com/robots.txt
Crawler yêu cầu tệp này trước khi crawl. Tệp chứa các nhóm quy tắc. Mỗi nhóm bắt đầu bằng một hoặc nhiều dòng User-agent, theo sau là các chỉ thị Allow hoặc Disallow.
Một lệnh chặn toàn bộ trang web đơn giản trông như sau:
User-agent: GPTBot
Disallow: /
Nó có nghĩa là: nếu bạn là GPTBot, đừng crawl bất kỳ nội dung nào trên trang web này.
Nhưng robots.txt có những giới hạn cứng:
- Nó mang tính tự nguyện. Tác nhân xấu có thể phớt lờ.
- Nó không ngăn một URL được yêu cầu bởi trình duyệt hoặc script thông thường.
- Nó không xóa nội dung đã được thu thập ở nơi khác.
- Tự thân nó không xác định bản quyền, cấp phép, hoặc quyền dùng để huấn luyện.
- Nó có thể bị cấu hình sai theo cách chặn nhầm bot.
Nếu bạn cần kiểm soát truy cập thực sự, hãy dùng xác thực, phân quyền, giới hạn tốc độ, kiểm soát theo IP, quản lý bot, hoặc biện pháp pháp lý. Robots.txt vẫn hữu ích, nhưng nó thuộc về một chiến lược bảo vệ nội dung rộng hơn.
Điều này tương tự các vấn đề quản trị web khác: kiểm soát nhìn thấy được hiếm khi là toàn bộ kiểm soát. Nếu tổ chức của bạn đã có việc sử dụng AI không được quản lý trong nội bộ, nguyên tắc tương tự cũng áp dụng; một cuộc kiểm toán shadow AI nhanh thường hữu ích hơn việc giả vờ rằng một tài liệu chính sách duy nhất có thể giải quyết vấn đề.
Bắt đầu bằng quyết định chính sách của bạn
Trước khi chỉnh sửa tệp, hãy quyết định bạn thực sự đang cố chặn điều gì.
Có ít nhất bốn ý nghĩa khác nhau khi người ta nói “trình thu thập AI”:
- Crawler dùng để thu thập dữ liệu huấn luyện.
- Crawler của công cụ tìm kiếm AI hoặc máy trả lời.
- Trình lấy dữ liệu do người dùng kích hoạt, chẳng hạn khi ai đó yêu cầu một sản phẩm AI tóm tắt một URL.
- Trình thu thập dữ liệu chung giả làm trình duyệt thông thường.
Bạn có thể muốn chặn tất cả. Hoặc bạn có thể muốn vẫn được khám phá qua tìm kiếm trong khi từ chối việc huấn luyện mô hình. Đây không phải là cùng một chính sách.
Ví dụ, OpenAI tài liệu hóa các user agent riêng cho các mục đích khác nhau, bao gồm GPTBot, ChatGPT-User, và OAI-SearchBot. Google dùng Google-Extended như một token kiểm soát cho một số trường hợp sử dụng Gemini và Vertex AI, trong khi hoạt động crawl Google Search thông thường do các user agent Googlebot khác xử lý.
Sự tách biệt đó rất quan trọng. Nếu bạn chặn các user agent quá rộng một cách bất cẩn, bạn có thể làm hại khả năng hiển thị trong tìm kiếm thông thường trong khi đang cố chặn huấn luyện AI.
Một mẫu robots.txt hợp lý để chặn AI
Dưới đây là điểm khởi đầu thận trọng để chặn một số crawler liên quan đến AI thường được tài liệu hóa, trong khi vẫn để yên các crawler tìm kiếm chung:
# AI training and AI product crawlers
User-agent: GPTBot
Disallow: /
User-agent: ChatGPT-User
Disallow: /
User-agent: OAI-SearchBot
Disallow: /
User-agent: Google-Extended
Disallow: /
User-agent: CCBot
Disallow: /
User-agent: ClaudeBot
Disallow: /
User-agent: Claude-Web
Disallow: /
User-agent: PerplexityBot
Disallow: /
User-agent: Amazonbot
Disallow: /
User-agent: Bytespider
Disallow: /
User-agent: Meta-ExternalAgent
Disallow: /
# Default rule for other crawlers
User-agent: *
Allow: /
Đây không phải là một danh sách phổ quát kỳ diệu. Nó là một mẫu có thể bảo trì.
Một vài lưu ý:
Disallow: /nghĩa là “không crawl bất kỳ đường dẫn nào.”User-agent: *áp dụng cho các crawler không khớp với nhóm cụ thể hơn.Allow: /không bắt buộc nghiêm ngặt đối với nhóm mặc định, nhưng nó làm rõ ý định của bạn.- Giữ bình luận ngắn. Một số trình phân tích cú pháp khá dễ tính, nhưng robots.txt nên luôn đơn giản.
- Đừng đưa URL riêng tư vào robots.txt. Tệp này công khai, và việc liệt kê các đường dẫn nhạy cảm có thể vô tình quảng bá chúng.
Điểm cuối đáng được nhắc lại. Robots.txt không phải là cơ chế giữ bí mật. Nếu /client-contracts/ không nên công khai, hãy bảo vệ nó bằng xác thực. Đừng chỉ disallow nó.
Hãy cẩn thận với Google-Extended
Google-Extended thường bị hiểu nhầm. Nó không giống với việc chặn Google Search.
Theo tài liệu của Google, Google-Extended là một token sản phẩm độc lập mà nhà xuất bản có thể dùng để quản lý việc nội dung trang web có thể giúp cải thiện một số năng lực Gemini và Vertex AI hay không. Việc chặn nó, tự thân nó, không nên chặn Googlebot crawl cho Search.
Dù vậy, đừng thay thế tất cả chỉ thị Google bằng một lệnh chặn rộng như sau trừ khi bạn thật sự có ý đó:
User-agent: Googlebot
Disallow: /
Điều đó sẽ yêu cầu crawler chính của Google Search không crawl trang web của bạn. Với hầu hết website công khai, đó không phải là điều bạn muốn.
Sự phân biệt tương tự cũng áp dụng ở nơi khác. Một số nhà cung cấp tách crawler huấn luyện khỏi trình duyệt do người dùng kích hoạt hoặc crawler tìm kiếm AI. Một số khác thì không. Bạn cần đọc tài liệu của các bot mà bạn quan tâm và xem robots.txt của mình như một tệp sống, không phải một ô đánh dấu làm một lần.
Kiểm thử tệp như mã sản xuất
Robots.txt trông đơn giản, vì vậy nó rất dễ bị làm hỏng.
Các lỗi thường gặp gồm:
- Tải nó lên sai vị trí, chẳng hạn
/assets/robots.txtthay vì/robots.txt. - Dùng dấu ngoặc kép thông minh được sao chép từ trình soạn thảo tài liệu.
- Vô tình chặn mọi crawler bằng
User-agent: *vàDisallow: /. - Giả định rằng tệp của một domain áp dụng cho một subdomain khác.
- Quên rằng các host
http://,https://,www, và không cówwwcó thể được xử lý khác nhau tùy cấu hình.
Với các trang web nhiều domain, hãy kiểm tra mọi host chuẩn. Một tệp robots tại https://www.example.com/robots.txt không tự động quản lý https://app.example.com/robots.txt.
Khi gỡ lỗi, hãy kiểm tra phản hồi HTTP thực tế, không chỉ nội dung bản xem trước của CMS. Bạn muốn phản hồi 200 OK, loại nội dung text/plain nếu có thể, và đúng tệp bạn kỳ vọng. Nếu có chuyển hướng, bộ nhớ đệm, hoặc quy tắc CDN, việc kiểm tra header thô sẽ hữu ích. Quy trình trong gỡ lỗi chuyển hướng và HTTP header trong môi trường production áp dụng trực tiếp ở đây.
Bổ sung kiểm soát phía máy chủ cho các bot phớt lờ quy tắc
Nếu crawler tuân thủ, robots.txt là tín hiệu sạch nhất. Nếu crawler lạm dụng, bạn cần thực thi.
Các kiểm soát thực tế gồm:
Giới hạn tốc độ
Đặt ngưỡng cho các mẫu yêu cầu bất thường: quá nhiều trang mỗi phút, duyệt phân trang quá sâu, lặp lại nhiều 404, hoặc khối lượng yêu cầu cao từ một nhóm IP nhỏ. Giới hạn tốc độ nên đủ rộng rãi để không phạt người dùng thật và đủ nghiêm để khiến việc trích xuất hàng loạt trở nên tốn kém.
Lọc user-agent
Bạn có thể chặn các user agent crawler AI đã được tài liệu hóa ở máy chủ web, reverse proxy, CDN, hoặc tầng ứng dụng. Điều này mạnh hơn robots.txt vì nó trả về phản hồi từ chối thực sự.
Ví dụ, Nginx có thể chặn một mẫu user agent, dù các quy tắc production nên được kiểm thử cẩn thận:
if ($http_user_agent ~* "GPTBot|CCBot|ClaudeBot|Bytespider") {
return 403;
}
Điều này không hoàn hảo. Chuỗi user-agent rất dễ giả mạo. Nhưng nó chặn lưu lượng trung thực hoặc lười biếng và giảm tải.
Kiểm soát IP và ASN
Một số nhà vận hành công bố dải IP, nhưng nhiều hệ sinh thái scraper thì không. Chặn theo IP có thể hiệu quả với lạm dụng rõ ràng, đặc biệt từ các dải hosting đám mây không có lưu lượng người dùng bình thường, nhưng cũng có thể tạo ra dương tính giả. Hãy dùng log trước khi đặt quy tắc.
Xác thực và paywall
Nếu nội dung không được sao chép ở quy mô lớn, đừng đặt toàn bộ nội dung trên URL công khai. Robots.txt không phù hợp với tài liệu mật, cơ sở dữ liệu được cấp phép, cộng đồng riêng tư, hoặc kho lưu trữ trả phí.
Tối thiểu hóa nội dung
Đôi khi cách bảo vệ tốt nhất là kiến trúc. Đừng phơi bày API không cần thiết, payload JSON lớn, metadata ẩn, endpoint bản nháp, hoặc toàn bộ kho lưu trữ nếu trang công khai chỉ cần một tập con nhỏ. Các trang nặng về hình ảnh cũng nên cân nhắc metadata họ xuất bản; logic về quyền riêng tư trong xóa metadata EXIF trước khi chia sẻ ảnh trực tuyến cũng áp dụng cho vận hành nội dung.
Dùng thẻ meta robots cho quy tắc cấp trang
Robots.txt kiểm soát việc crawl. Thẻ meta robots và header X-Robots-Tag kiểm soát việc lập chỉ mục và hành vi đoạn trích đối với các công cụ tìm kiếm và crawler tuân thủ.
Ví dụ:
<meta name="robots" content="noindex, noarchive">
Hoặc dưới dạng HTTP header:
X-Robots-Tag: noindex, noarchive
Đây không phải là lá chắn riêng cho AI. Chúng hữu ích khi bạn muốn một trang có thể truy cập nhưng không được lập chỉ mục. Tuy nhiên, nếu bạn chặn một crawler lấy trang trong robots.txt, nó có thể không bao giờ thấy thẻ meta cấp trang. Đừng dựa vào thẻ noindex trên một URL mà crawler bị cấm crawl.
Quy tắc đại khái:
- Dùng robots.txt để giảm hoặc ngăn crawl.
- Dùng meta robots hoặc
X-Robots-Tagđể kiểm soát hành vi lập chỉ mục. - Dùng kiểm soát phía máy chủ để thực thi truy cập.
Theo dõi log sau khi xuất bản
Xuất bản tệp chỉ là bước một. Sau đó, hãy kiểm tra log của bạn.
Tìm các dấu hiệu:
- Yêu cầu đến
/robots.txttừ các user agent bạn đã nêu tên. - Tiếp tục crawl sau khi quy tắc disallow đã được phục vụ.
- User agent đáng ngờ với lưu lượng cao.
- User agent giống trình duyệt yêu cầu hàng nghìn trang theo trình tự.
- Truy cập lặp lại vào feed, sitemap, trang tìm kiếm, và phân trang.
Nếu một bot yêu cầu robots.txt, thấy lệnh disallow toàn bộ, rồi dừng lại, robots.txt đã làm đúng việc của nó. Nếu nó tiếp tục, hãy chuyển bot đó sang cơ chế thực thi: giới hạn tốc độ, chặn, hoặc xác thực.
Cũng hãy xem lại mức độ phơi bày sitemap của bạn. Sitemap hữu ích cho công cụ tìm kiếm, nhưng chúng cũng là bản đồ tiện lợi cho scraper. Điều đó không có nghĩa là bạn nên xóa chúng khỏi các trang web thông thường. Nó có nghĩa là bạn không nên đưa vào các URL mà bạn không muốn hệ thống công khai phát hiện.
Giữ tệp nhỏ gọn và được rà soát
Robots.txt có xu hướng mục nát. Nhóm marketing thêm một microsite chiến dịch. Một lập trình viên thêm đường dẫn staging. Một nhà cung cấp đổi tên crawler. Hai năm sau không ai biết vì sao một nửa quy tắc tồn tại.
Hãy đối xử với nó như cấu hình:
- Lưu trong hệ thống quản lý phiên bản khi có thể.
- Thêm một bình luận ngắn cho mỗi nhóm crawler AI.
- Rà soát theo quý.
- Kiểm tra tài liệu nhà cung cấp trước khi thêm quy tắc rộng.
- Kiểm thử sau khi thay đổi CDN, CMS, hoặc hosting.
Nếu trang web của bạn xuất bản nội dung có hỗ trợ AI, cũng hãy tách chính sách crawler khỏi tính minh bạch biên tập. Chặn trình thu thập AI liên quan đến truy cập và tái sử dụng. Công bố liên quan đến niềm tin của độc giả. Chúng giao nhau về mặt đạo đức, nhưng không phải cùng một biện pháp kiểm soát. Một cách tiếp cận công bố thực tế được trình bày trong công bố AI trung thực trông như thế nào trên một website nhỏ.
<!-- tool-cta:start -->
💡 Hãy thử cách này: Sau khi thêm quy tắc cho trình thu thập dữ liệu AI, hãy xác nhận cú pháp bằng Robots.txt Tester để bạn không vô tình chặn cả các bot hợp lệ.
<!-- tool-cta:end -->
Kết luận
Một tệp robots.txt tốt sẽ chặn các crawler AI tuân thủ. Nó sẽ không ngăn việc thu thập dữ liệu có chủ đích, chuỗi user-agent bị sao chép, trình duyệt bị xâm nhập, hoặc việc con người dán thủ công nội dung của bạn vào hệ thống AI.
Điều đó không làm nó vô dụng. Nó khiến nó trở thành một lớp.
Viết quy tắc rõ ràng cho các crawler AI đã được tài liệu hóa. Tránh các lệnh chặn rộng làm hỏng khả năng hiển thị trong tìm kiếm. Kiểm thử tệp được phục vụ, không phải bản nháp. Theo dõi log. Thực thi bằng kiểm soát phía máy chủ ở những nơi hành vi chuyển từ không mong muốn sang lạm dụng.
Web luôn vận hành bằng sự kết hợp giữa giao thức, chuẩn mực, và thực thi. Robots.txt là lớp chuẩn mực. Hãy dùng nó, nhưng đừng nhầm nó với một bức tường.