
AI crawler đọc site bạn nhiều hơn Googlebot: cách soi log
Một dev rà 2 tuần log nginx: 1.590 request AI crawler, và 119/331 "Googlebot" là giả mạo. Cách verify bot bằng reverse DNS và chặn bot dò file .env.
Analytics của bạn báo lưu lượng phẳng lì, nhưng server vẫn tải và bandwidth vẫn trôi. Lý do đơn giản: phần lớn bot không chạy JavaScript, nên script tracking không bao giờ bắn — chúng chỉ tồn tại trong access log. Dưới đây là cách đọc log nginx để biết ai thực sự đang đọc site bạn, và hai lệnh để tách bot thật khỏi bot giả.
Số liệu từ một site, trong hai tuần
Một dev vừa công bố kết quả rà hai tuần access log nginx trên site của chính mình. Anh đếm mọi bot tự nhận là AI crawler hoặc search engine, và chỉ giữ lại request có IP thực sự thuộc về công ty đứng sau bot đó. Kết quả: 1.590 request từ AI crawler đã verify, so với 563 request của toàn bộ search engine cộng lại. Crawler của Meta và ClaudeBot mỗi bên đọc site nhiều hơn Googlebot.
Đây là đo đạc trên một site duy nhất trong hai tuần, không phải số liệu ngành — tỷ lệ trên site của bạn gần như chắc chắn sẽ khác. Nhưng hình dạng của vấn đề thì chung: theo tác giả, không có gì trong số này hiện lên Plausible, Umami hay Google Analytics.
Một phần ba "Googlebot" là giả
Phần đáng chú ý nhất là nhóm giả mạo. Trong 331 request ký tên "Googlebot", 119 request đến từ server Google Cloud thuê, không phải từ Google. Năm server dùng chung 30 cái tên bot khác nhau, trong đó có cả ChatGPT-User và Claude-User.
Hành vi của chúng mới là thứ đáng ghi nhớ. Bốn trong số đó mở đầu rất lịch sự: đọc homepage, đọc robots.txt, rồi đọc khoảng 15 bài viết đúng kiểu một crawler tử tế. Sau đó chúng quay sang hỏi file .env, cloud key và thư mục Git — 1.045 request nhắm vào file bí mật, và server đã từ chối toàn bộ. Nói cách khác, user-agent "ngoan" trong vài chục request đầu không nói lên điều gì về ý định.
Hai lệnh cần chạy
Kiểm tra thứ nhất là reverse DNS. Googlebot thật phân giải về một tên kết thúc bằng googlebot.com, nên một lượt tra ngược bắt được đám giả trong vài giây:
awk '$0 ~ /Googlebot/ {print $1}' /var/log/nginx/access.log \
| sort -u | while read ip; do echo "$ip $(dig +short -x "$ip")"; done
IP nào không ra googlebot.com thì không phải Google. (Lệnh trên là ví dụ minh hoạ — vị trí cột và đường dẫn log tuỳ cấu hình của bạn.)
Kiểm tra thứ hai là bề mặt tấn công: đảm bảo server trả 403 cho .env và các file tương tự. Điểm cốt lõi ở đây, và nó đáng dán lên tường: robots.txt không chặn được một con bot đang nói dối về tên của nó. robots.txt là thoả thuận lịch sự, không phải cơ chế kiểm soát truy cập.
Bot đọc, nhưng chưa trả lại traffic
Tác giả còn tìm khách truy cập đến từ ChatGPT, Perplexity, Claude hay Gemini. Trong hai tuần: không có ai. Một lần nữa, đây là một site và một khoảng thời gian ngắn — đừng vội kết luận AI search không bao giờ gửi referral. Nhưng nếu bạn đang cân nhắc đầu tư công sức để được AI assistant trích dẫn, hãy đo referral trên chính site mình trước khi tin vào bất kỳ con số nào, kể cả con số trong bài này.
Ba việc nên làm tuần này: bật log rotation đủ dài để còn dữ liệu mà đếm, thêm một job nhỏ verify bot bằng reverse DNS thay vì tin user-agent, và kiểm tra xem các đường dẫn nhạy cảm có thực sự trả 403 hay không. Tác giả cho biết đã đăng bản đầy đủ kèm biểu đồ và cách verify từng bot trên blog opensource-analytics.com.
Không spam, hủy đăng ký bất kỳ lúc nào.


