Bỏ qua tới nội dung
SEO & crawler

Cách chặn AI crawler trong WordPress (nói thật)

Để chặn GPTBot thu thập dữ liệu một site WordPress, thêm các dòng sau vào robots.txt của bạn:

Đã đăng

Để chặn GPTBot thu thập dữ liệu một site WordPress, thêm các dòng sau vào robots.txt của bạn:

User-agent: GPTBot
Disallow: /

Đó là toàn bộ cách khắc phục đối với những crawler tử tế. Nhưng hãy thành thật với chính mình về việc bạn vừa làm: robots.txt là một lời đề nghị, không phải một hàng rào. GPTBot của OpenAI tải file này về và tuân theo nó. Một con scraper không tôn trọng chuẩn này cũng tải đúng file đó về rồi phớt lờ mọi dòng trong đó. Hãy ghi nhớ sự khác biệt này trước khi bạn ngồi cả buổi chiều để tinh chỉnh nó.

Nếu bạn muốn chặn hết các AI crawler lớn trong một lần, những user-agent token phổ biến là:

User-agent: GPTBot
Disallow: /

User-agent: Google-Extended
Disallow: /

User-agent: CCBot
Disallow: /

User-agent: ClaudeBot
Disallow: /

User-agent: PerplexityBot
Disallow: /

User-agent: Bytespider
Disallow: /

GPTBot là crawler huấn luyện của OpenAI, CCBot là Common Crawl (mà nhiều model huấn luyện gián tiếp từ đó), ClaudeBot là của Anthropic, Google-Extended là token huấn luyện AI của Google, còn Bytespider là của ByteDance. Lưu ý hai trong số này đã phá vỡ mô hình đề-nghị-lịch-sự: BytespiderPerplexityBot đều đã bị ghi nhận công khai là thu thập dữ liệu những site đã chặn chúng. Việc liệt kê chúng vẫn có ích với các bot trung thực; nhưng chẳng có tác dụng gì với những con vốn đã nói dối về danh tính của mình.

WordPress thực sự phục vụ robots.txt như thế nào

Đây là chỗ mà chỉnh sửa của phần lớn mọi người âm thầm chẳng có tác dụng gì. Nếu không có file robots.txt vật lý nào trong web root của bạn, WordPress sẽ tự sinh ra một file ngay khi có request. Request này được xử lý bởi do_robots() trong wp-includes/functions.php, và kết quả đầu ra được chạy qua filter robots_txt. Ô tick “Discourage search engines from indexing this site” trong Settings → Reading sẽ đảo giá trị option blog_public, và đó là thứ khiến file ảo kia phát ra Disallow: /.

Vậy nên bạn có thể thêm luật cho AI crawler bằng code:

add_filter( 'robots_txt', function ( $output, $public ) {
    $output .= "User-agent: GPTBot\nDisallow: /\n";
    return $output;
}, 10, 2 );

Và đây là cái bẫy ngốn hàng giờ đồng hồ: ngay khi có một file robots.txt tĩnh tồn tại trong web root, Apache hay nginx sẽ phục vụ thẳng file đó và WordPress không bao giờ chạy. Filter robots_txt, trình chỉnh robots của Yoast/Rank Math, cài đặt trong Reading — tất cả đều bị bỏ qua. Nếu bạn đã chỉnh robots.txt trong một plugin mà file thật ngoài site chẳng hề thay đổi, thì gần như luôn là vì lý do này. Hãy mở https://yoursite.com/robots.txt trong cửa sổ ẩn danh và so sánh nó với những gì bạn nghĩ mình đã đặt. Nếu có một file thật nằm trên đĩa, hãy chỉnh chính file đó; cái filter là vô nghĩa.

Khắc phục, theo thứ tự

Đầu tiên, viết luật cho sạch. Đặt cú pháp và danh sách crawler cho đúng để bạn không vô tình chặn nhầm Googlebot. Trình tạo robots.txt của chúng tôi sẽ dựng sẵn khối chặn AI crawler cho bạn và hiển thị chính xác file để dán vào, qua đó tránh được sự nhầm lẫn giữa file ảo và file vật lý vì cuối cùng bạn chỉ còn một file duy nhất làm chuẩn.

Thứ hai, xác nhận nó đã chạy thật. Truy cập thẳng vào URL. Đừng tin vào ô xem trước của plugin.

Thứ ba, nếu bạn cần cưỡng chế chứ không phải xin xỏ lịch sự, hãy đi lên tầng cao hơn. robots.txt nằm ở tầng ứng dụng và phụ thuộc vào thiện chí của bot. Để thực sự từ chối một kết nối, hãy chặn theo user agent ngay tại server. Trong .htaccess:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} (GPTBot|CCBot|ClaudeBot|Bytespider) [NC]
RewriteRule .* - [F,L]
</IfModule>

Cái này trả về 403 cho bất cứ thứ gì gửi kèm những user agent đó. Trình tạo .htaccess của chúng tôi có thể lắp ráp luật này. Nhưng hãy hiểu giới hạn của nó: user agent bị giả mạo dễ như bỡn, nên cách này chỉ chặn được những bot đủ trung thực để tự khai danh tính — mà đó chính là những bot vốn đã tuân theo robots.txt rồi. Lựa chọn thực sự vững chắc là một CDN hoặc WAF chặn theo danh tính crawler đã được xác minh hoặc theo dải IP. Luật quản lý “Block AI Scrapers and Crawlers” một-cú-click của Cloudflare là phiên bản ít tốn công nhất của cách này, hoạt động ngay tại rìa mạng, trước cả khi request chạm tới WordPress.

Những điều không nên làm

Đừng chặn Google-Extended vì tưởng rằng nó giúp bạn không xuất hiện trong AI Overviews. Đây là hiểu lầm đáng được đính chính. Google-Extended là một product token, không phải một crawler. Nó chỉ kiểm soát việc nội dung của bạn có được dùng để huấn luyện và làm nền tảng cho các model Gemini hay không. Theo chính tài liệu của Google, nó không hề ảnh hưởng đến việc trang của bạn được thu thập, lập chỉ mục hay xếp hạng trong Google Search như thế nào. Và AI Overviews được dựng từ chính chỉ mục Search thông thường mà Googlebot thu thập — chứ không phải từ Google-Extended. Chặn Google-Extended sẽ không gỡ bạn khỏi AI Overviews, và cũng không làm bạn mất dù chỉ một vị trí trong Search. Cách duy nhất để không xuất hiện trong AI Overviews là chặn Googlebot hoặc đặt noindex cho trang, mà làm vậy cũng đồng nghĩa xóa bạn hoàn toàn khỏi Search. Đó gần như không bao giờ là cái đánh đổi bạn muốn.

Đừng coi robots.txt như một biện pháp bảo mật. Nó công khai và chỉ mang tính khuyến nghị. Liệt kê /wp-admin/ hay một đường dẫn riêng tư trong đó chẳng khác nào công bố tấm bản đồ chỉ chỗ cần dòm ngó. Hãy bảo vệ các endpoint thật bằng xác thực, chứ không phải bằng một dòng disallow.

Đừng trông cậy vào các thẻ meta noai / noimageai. Chúng chỉ mới được đề xuất chứ chưa thành chuẩn, và chỉ vài nền tảng ít ỏi tôn trọng chúng. Chúng không phải một tuyến phòng thủ tổng quát.

Đừng cho rằng một plugin “chặn AI” làm được gì nhiều hơn việc ghi robots.txt. Phần lớn chúng ghi đúng những dòng mà bạn có thể tự viết bằng tay và thừa hưởng đúng cái giới hạn đó. Hãy đọc xem plugin thực sự thay đổi những gì trước khi tin nó.

Vẫn bí?

Nếu các chỉnh sửa của bạn không hiện ra, câu trả lời gần như luôn là có một file robots.txt vật lý lạc lối nào đó trong web root đang đè lên file ảo của WordPress — hãy truy cập thẳng URL và kiểm tra. Nếu các bot tuân thủ đã biến mất nhưng scraper vẫn cứ dội vào bạn, thì bạn đã chạm trần khả năng của robots.txt, và nước đi tiếp theo là một luật WAF hoặc CDN chặn theo danh tính đã xác minh thay vì đi xin một cách lịch sự.