Chúng tôi làm một việc rất đơn giản nhưng ít ai thực sự làm: gõ cửa cùng một địa chỉ web bằng nhiều danh tính khác nhau.

Với danh tính trình duyệt, vào được. Đổi sang chuỗi User-Agent chính thức của bốn bot AI — GPTBot, OAI-SearchBot, PerplexityBot, ClaudeBot — cùng URL, cùng phút, cùng máy chủ, trả về 403.

Trong khi đó robots.txt của chúng không ghi một chữ nào về việc cấm. Bạn mở bản đồ site ra kiểm tra, mở robots.txt ra kiểm tra, bảo đồng nghiệp kỹ thuật "xác nhận là cho phép crawl" — tất cả đều xanh. Cửa đã bị hàn, nhưng tấm biển vẫn ghi "hoan nghênh".

Đây không phải cá biệt. Từ hai node (Quảng Châu và Singapore), chúng tôi lấy trang chủ của 48 website thương hiệu Việt Nam thuộc 8 ngành, mỗi site thử bằng 6 danh tính. Kết luận trước: robots.txt không phải cánh cửa đó, WAF mới là.

📊 Bốn số liệu chuẩn dùng xuyên suốt site (tổ chức + năm)
Tìm kiếm truyền thống suy giảmGartner (02/2024): lượng tìm kiếm truyền thống năm 2026 giảm 25%
Thói quen người dùngBain: 80% người tiêu dùng phụ thuộc AI cho ít nhất 40% nhu cầu tìm kiếm
Thị trường GEO Trung QuốciiMedia (02/2026): 34,93 tỷ CNY (2025) → dự báo 94,2 tỷ CNY (2026)
Mức thâm nhập AI tại Việt NamTechnode (08/2025): độ phủ ChatGPT 81%, hơn nửa người dùng trả phí

1. Bốn câu kết luận

2. Thiết kế đo: khóa mọi biến có thể khóa

BiếnThiết lậpVì sao phải khóa
Mẫu48 tên miền Việt Nam, 8 ngành × 6 đơn vị (bán lẻ – TMĐT / ngân hàng / bảo hiểm / logistics / sản xuất – vật liệu / ô tô – xe hai bánh / dược – chuỗi nhà thuốc / F&B – tiêu dùng)Chỉ một ngành sẽ dính cùng một nhà cung cấp WAF, kết luận bị nhà cung cấp dắt mũi
NodeQuảng Châu (ECS Alibaba Cloud) và Singapore (lightweight Alibaba Cloud), chạy trong cùng một giờChỉ để trả một câu: đây là "cửa của máy" hay "cửa của vùng"
Danh tínhChrome (mốc chuẩn), GPTBot/1.2, OAI-SearchBot/1.0, PerplexityBot/1.0, ClaudeBot/1.0; vòng hai thêm Googlebot/2.1 và bingbot/2.0UA là thứ duy nhất WAF đọc được một cách ổn định để biết "bạn là ai", phải đo từng cái riêng
RequestMỗi danh tính lấy trang chủ một lần, GET, timeout 15 giây, không retry, không Cookie, không thực thi JSCó retry sẽ làm phẳng 429; chạy JS sẽ biến trang thử thách thành trang bình thường
Phán địnhTrình duyệt 2xx mới tính là "site còn sống"; cả bốn danh tính AI đều 200 mới tính là "mở cả bốn cửa"Tránh ghi nhầm "site sập" thành "WAF chặn AI"

3. Cửa thứ nhất: robots.txt — 30 tệp, 0 tệp cấm

Tin tốt trước. Trong robots.txt của các thương hiệu Việt, gần như không ai chủ động cấm bot AI:

📊 Kết quả đọc robots.txt (một thời điểm, 31/10/2026, hợp nhất hai node)
Đọc được robots.txt (200)30 / 48
Văn bản có nhắc tên bot AI (GPTBot / PerplexityBot / ClaudeBot / OAI-SearchBot / Google-Extended / Bytespider)3 / 30
Phán định Disallow với bốn bot AI0 / 30

Kết quả này ngược với trực giác của nhiều người. Nỗi lo thường gặp là "khách hàng của tôi lỡ tay tắt AI mất rồi" — đo ra thì thị trường Việt Nam chưa đi tới bước đó: chưa nhắc tới, nói gì tới chuyện tắt. Vấn đề thật nằm ở hai mục sau.

robots.txt là một "hiệp định lịch sự": nó chỉ ràng buộc những bot sẵn lòng tuân thủ. Nó không chặn được ai, cũng không mở cửa cho ai. Coi nó là ranh giới an ninh thì cũng như coi tấm biển "xin đừng vào" là cửa chống trộm.

4. Cửa thứ hai: WAF — 5 trong 31 site, máy không vào được

Lấy tiêu chí "ít nhất một node mở được bằng trình duyệt" làm căn cứ sống còn, trong 48 tên miền có 31 site đo được, 17 site không mở được từ cả hai node (lý do ở mục 6). Trong 31 site đó:

📊 Phân bố cổng chặn bot AI (hợp nhất: thành công ở bất kỳ node nào là tính mở)
48 site trong mẫu31 đo được / 17 không tới được từ cả hai node
Cả bốn danh tính AI đều 20026 site = 83,9%
Ít nhất một danh tính AI bị 4035 site = 16,1%
Trong đó, từ ba danh tính AI trở lên bị 4034 site

5 site "có cửa" đều thuộc đúng những nhóm ngành đáng được AI trích dẫn nhất:

SiteNgànhTrình duyệtGPTBotOAI-SearchBotPerplexityBotClaudeBot
highlandscoffee.com.vnChuỗi F&B200403403403403
pharmacity.vnChuỗi nhà thuốc200403403403403
techcombank.com.vnNgân hàng (node Singapore)200403403403403
nhathuoclongchau.com.vnChuỗi nhà thuốc (node Quảng Châu)200403403timeout403
bic.vnBảo hiểm (node Singapore)200403200200403

Xin để ý dòng cuối. Cấu hình của BIC là "chặn huấn luyện, mở truy xuất": GPTBot (thu thập cho huấn luyện mô hình) và ClaudeBot bị từ chối, nhưng OAI-SearchBot (chỉ mục tìm kiếm của OpenAI) và PerplexityBot được cho qua. Đây là một lựa chọn rất hợp lý — không nộp nội dung của mình cho tập huấn luyện, nhưng sẵn sàng được trích dẫn trong tìm kiếm.

Chi tiết này cho thấy: chính sách AI ở tầng WAF không phải "một công tắc", mà phân tầng được theo mục đích sử dụng. Vấn đề thật nằm ở chỗ phần lớn site đang dùng tầng mặc định, và tầng mặc định trong mắt nhà cung cấp thường là "đừng tới hết".

5. Cùng một chuỗi 403, ba ý nghĩa, ba cách sửa

Đây là mục thực dụng nhất của bài. Cùng một mã 403, nếu thêm bước đo phân biệt ở vòng hai (thêm danh tính Googlebot và bingbot) thì chia thành ba loại, cách xử lý ngược nhau hoàn toàn:

LoạiDấu vân tayDiễn giảiCách sửa
A · Chỉ chặn AITrình duyệt 200 · Googlebot 200 · GPTBot 403Site phân tầng rõ theo mục đích: tìm kiếm truyền thống giữ nguyên, AI đóng cửa. Trong mẫu, bic.vn thuộc loại nàySửa chính sách bot AI của WAF: giữ lệnh cấm thu thập huấn luyện là quyền của bạn, nhưng phải mở cho nhóm truy xuất (OAI-SearchBot, PerplexityBot)
B · Chặn mọi bot chưa xác thựcTrình duyệt 200 · Googlebot 403 · GPTBot 403Chính sách mặc định "xác thực danh tính bot bằng IP": Googlebot thật đi từ dải IP của Google nên qua được; bot AI không có trong danh sách trắng nên bị chặn hết. 4 site trong mẫu thuộc loại nàyThêm bot AI vào Verified Bots / danh sách trắng, hoặc tạo rule cho phép riêng cho chúng trong WAF
C · Cả site từ chối theo vùngTrình duyệt 403 · mọi danh tính 403Không nhắm vào AI mà nhắm vào IP nguồn: cơ sở dữ liệu threat intelligence, chặn theo địa lý, chặn dải IP datacenter. 5 site trong mẫu thuộc loại này (2 site CloudFront "Request blocked", 1 site Akamai "Access Denied")Không liên quan GEO nhưng liên quan chuyện ra biển: nếu proxy thu thập của AI đi từ vùng bị chặn, nội dung của bạn mãi mãi không vào được tập dữ liệu
Minh bạch phương pháp: chúng tôi dùng chuỗi UA công khai chính thức, không dùng IP của bot thật. Vì vậy, Googlebot 403 ở "loại B" không được suy ra thành "site chặn Google" — ngược lại, chính điều đó cho thấy WAF này xác thực danh tính bot bằng IP: Googlebot thật đi từ dải IP của Google sẽ qua, còn mọi request tự xưng Googlebot mà không phải Google đều bị chặn. Và bot AI thậm chí không có kênh danh sách trắng đó — đây mới là vấn đề. Tương tự, GPTBot 403 ở "loại A" là đáng tin: thứ WAF chặn đúng là chuỗi UA này, bot của OpenAI mang đúng chuỗi đó tới cũng bị chặn như vậy.

6. Cửa thứ ba: cửa theo vùng — cùng URL, Quảng Châu 403, Singapore 200

Tầng này dễ bị bỏ qua nhất, nhưng lại chí mạng nhất với doanh nghiệp Trung Quốc đi ra nước ngoài.

Cùng phút, cùng tên miền, cùng UA:

Trong 48 tên miền, 17 site (35,4%) không mở được từ cả Quảng Châu và Singapore: 5 site trả trang chặn của Cloudflare / CloudFront / Akamai, phần còn lại là connection reset, timeout, DNS không phản hồi. Trong đó có cả site lớn nội địa Việt Nam (bán lẻ, bán lẻ điện tử) lẫn website doanh nghiệp công nghiệp nặng.

📊 Khác biệt giữa hai node (một thời điểm, 31/10/2026, chạy trong cùng một giờ)
Node Quảng Châu: mở cả bốn / có cổng / không tới được24 / 9 / 14 (thêm 1 site timeout một phần)
Node Singapore: mở cả bốn / có cổng / không tới được25 / 10 / 12 (thêm 1 site timeout một phần)
Không tới được từ cả hai node17 site = 35,4%

Ý nghĩa rất trực tiếp: "tôi mở được website của tôi" không phải là bằng chứng gì cả. Bạn mở ở Hà Nội thấy 200, nhưng node thu thập của OpenAI ở Frankfurt, của Perplexity ở Virginia, của Google ở California. Bạn đang đo chính bạn, không phải đo chúng.

7. Ba kiểu llms.txt giả: 3 tệp thật, 9 tệp giả

Chúng tôi tiện thể kiểm luôn llms.txt — "bản hướng dẫn site" cho bot AI. Rắc rối là HTTP 200 không có nghĩa là có tệp này.

Biểu hiệnSự thậtMẫu
200, text/plain, nội dung bắt đầu bằng #✅ llms.txt thậtprudential.com.vn (19,9 KB), ahamove.com (1,5 KB), vinfastauto.com (101 KB)
200, 177 byte, nội dung là một đoạn script document.cookie=...❌ Trang thử thách của WAF giả dạng 200 — kiểu khó chịu nhất, phía thu thập sẽ hiểu thành "tệp có nhưng rỗng"2 site (một ngân hàng và một đơn vị chuyển phát, đều là site lớn)
200, nhưng text/html, trả về trang chủ❌ Fallback định tuyến của SPA: mọi đường dẫn không tồn tại đều trả trang chủ6 site trở lên (gồm nhiều ngân hàng và thương hiệu tiêu dùng)

Vậy: trong 48 site, chỉ 3 có llms.txt thật, chiếm 6,25%. Con số này còn là "cách tính lạc quan" — nếu chỉ tính các site có định tuyến frontend bình thường thì trong 9 "llms.txt giả" không có tệp nào thật.

Đáng chú ý nhất là tệp 101 KB kia: viết khá công phu, liệt kê đủ thương hiệu, dòng xe, chính sách, kênh phân phối. Nhưng trang chủ của nó trả 403 từ cả Quảng Châu và Singapore. Bản hướng dẫn dán ở ngoài cửa, cửa thì khóa.

8. Vì sao lại như vậy: ba nguyên nhân thật

1. Cấu hình mặc định là "đừng tới"

Các CDN/WAF lớn từ sau 2024 lần lượt ra mắt công tắc một chạm "chặn thu thập AI", và giá trị mặc định ở một số nhà cung cấp thiên về thận trọng. Quản trị site không làm gì cả, cửa đã đóng một nửa. Bạn hỏi đội vận hành "mình có chặn AI không", họ mở robots.txt ra xem rồi trả lời "không" — chỗ họ xem và chỗ cánh cửa nằm không phải cùng một chỗ.

2. KPI của đội an ninh và đội tăng trưởng ngược nhau

An ninh nhìn "số request bất thường, băng thông, số lần bị crawl" — bot AI trên báo cáo chỉ là một con bot, chặn thêm một con là bớt một phần rủi ro. Tăng trưởng nhìn "AI có nhắc tới mình không". Cả hai đều không sai, chỉ là không ai chịu trách nhiệm cho chỉ số "được trích dẫn", nên nó về 0.

3. Coi "thu thập huấn luyện" và "trích dẫn tìm kiếm" là một

GPTBot (huấn luyện), OAI-SearchBot (chỉ mục tìm kiếm), PerplexityBot (truy xuất thời gian thực), ClaudeBot (huấn luyện + trích dẫn) — hậu quả kinh doanh của bốn cái này hoàn toàn khác nhau: cấm huấn luyện là tư thế bản quyền, cấm truy xuất là tự cắt nguồn khách. Phần lớn site cắt một nhát, tức là dùng tư thế bản quyền để đổi lấy thiệt hại kinh doanh.

9. Tự kiểm trong 60 giây: chạy lại thí nghiệm trên site của bạn

Không cần cài gì, một máy có mạng và ba lệnh:

# 1) Mốc chuẩn: danh tính trình duyệt
curl -s -o /dev/null -w "browser      %{http_code}\n" https://ten-mien-cua-ban/

# 2) Bot AI nhóm truy xuất (hai cái này quyết định bạn có được AI trích dẫn)
curl -s -o /dev/null -w "GPTBot       %{http_code}\n" \
  -A "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko); compatible; GPTBot/1.2; +https://openai.com/gptbot" \
  https://ten-mien-cua-ban/
curl -s -o /dev/null -w "PerplexityBot %{http_code}\n" \
  -A "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko); compatible; PerplexityBot/1.0; +https://perplexity.ai/perplexitybot" \
  https://ten-mien-cua-ban/

# 3) Bản hướng dẫn có thật không
curl -sI https://ten-mien-cua-ban/llms.txt | head -3

Cách đọc: trình duyệt 200 mà danh tính AI 403 → cửa ở WAF, sửa chính sách WAF, đừng sửa robots; đến trình duyệt cũng 403 → bạn đang đo vùng địa lý chứ không phải đo AI, đổi node rồi đo lại; llms.txt trả text/html → coi như không có.

10. Danh mục sửa: xếp theo 30 phút

  1. (5 phút) Đo trước, lưu bằng chứng.Lưu output ba lệnh trên thành một bản ghi có ngày. Mỗi lần sửa WAF sau này đều đối chiếu được.
  2. (10 phút) Mở cho bot AI nhóm truy xuất trong WAF.Trên Cloudflare và tương đương, tìm bảng "AI Crawlers / Verified Bots", đặt OAI-SearchBot, PerplexityBot, Claude-SearchBot thành Allow; nhóm huấn luyện (GPTBot, CCBot, Google-Extended) giữ nguyên tư thế bản quyền của bạn. Đây là cách cắt duy nhất đúng cho "muốn được trích dẫn, không muốn bị huấn luyện".
  3. (5 phút) Viết Allow tường minh trong robots.txt.Đừng chỉ dựa vào "không ghi cấm", ghi rõ:
    User-agent: OAI-SearchBot
    Allow: /
    User-agent: PerplexityBot
    Allow: /
    User-agent: Claude-SearchBot
    Allow: /
  4. (10 phút) Đặt một llms.txt thật.Văn bản thuần, mở đầu bằng # Tên thương hiệu, ghi rõ: bạn là ai, làm gì, phủ vùng nào, URL tuyệt đối của các trang dữ kiện then chốt, ngày cập nhật. Đặt ở thư mục gốc, trả về text/plain, đừng để định tuyến frontend nuốt mất.
  5. (mỗi tháng 1 lần) Đo lại.Rule WAF sẽ bị "gia cố an ninh" đưa về như cũ; chính sách mặc định thay đổi theo bản nâng cấp nền tảng. Cổng chặn là thứ sống, không phải công trình một lần.

11. Việc này nằm ở đâu trong GEO

GEO thường bị hiểu thành "viết nhiều nội dung hơn". Nhưng chuỗi này có thứ tự:

Tới được → đọc hiểu được → đáng tin → được trích dẫn. Hai bước đầu là cổng chặn và cấu trúc, hai bước sau mới là nội dung và nguồn tin. Cổng không qua, mọi nỗ lực ở ba bước sau trong mắt AI đều không tồn tại.

Đó cũng là lý do chúng tôi đặt nó ở vị trí đầu tiên trong phương pháp luận: Gartner (02/2024) dự báo lượng tìm kiếm truyền thống năm 2026 giảm 25%, Bain đo 80% người tiêu dùng đã dùng AI cho ít nhất 40% nhu cầu tìm kiếm, iiMedia (02/2026) tính thị trường GEO Trung Quốc từ 34,93 tỷ CNY năm 2025 lên dự báo 94,2 tỷ CNY năm 2026 — những con số này mô tả dòng lưu lượng đang dịch chuyển. Technode (08/2025) đo độ phủ ChatGPT tại Việt Nam 81%, cho thấy dịch chuyển này đã xảy ra ở Việt Nam.

Lưu lượng chảy về đâu thì cửa phải mở về đó. Khi 35,4% site đến việc "để máy tới lấy một lần" còn không làm được, thì bàn chuyện "viết nội dung AIGC thế nào" là xây trên không.

12. Biên giới và miễn trừ

Phải nói cho đủ, nếu không bài này thành bài quảng cáo:

Mở cửa rẻ hơn viết nội dung hay rất nhiều, và nhanh hơn rất nhiều. Mà phần lớn thời gian, không ai biết cửa đang khép.