TLDlive

Cách biết một website dùng CMS và công nghệ gì

Mỗi nền tảng website để lại dấu vết trong mã HTML, trong header phản hồi và trong đường dẫn tệp. Bài này hướng dẫn các cách kiểm tra thủ công mất khoảng một phút, độ tin cậy của từng cách, và cách một công cụ tự động làm điều đó.

Vì sao cần biết website dùng công nghệ gì

Lập trình viên muốn biết trước khi thiết kế lại hoặc chuyển nền tảng. Agency muốn đánh giá khách hàng tiềm năng. Người mua bán tên miền muốn biết một tên miền cũ từng chạy website thật hay chỉ là trang trống. Đội bảo mật quan tâm vì một hệ thống nhiều plugin lỗi thời có rủi ro khác hẳn một cửa hàng chạy trên nền tảng thuê sẵn. Mục tiêu chung là suy ra, chỉ từ thông tin công khai, nền tảng nào đã tạo ra trang web.

Không cần quyền truy cập đặc biệt nào. Máy chủ phải gửi cho trình duyệt mọi thứ trình duyệt cần, nên dấu vết của nền tảng gần như luôn nhìn thấy được. Điều quan trọng là biết dấu vết nào mạnh, dấu vết nào yếu và dấu vết nào có thể bị làm giả.

Cách 1: đọc thẻ meta generator

Mở mã nguồn trang (Ctrl+U trên Windows, Cmd+Option+U trên macOS) rồi tìm từ generator. Nhiều hệ thống tự khai báo bằng thẻ <meta name="generator" content="...">. WordPress thường ghi kèm số phiên bản, Joomla ghi "Joomla! - Open Source Content Management", Ghost ghi tên và phiên bản.

Đây là cách dễ nhất nhưng cũng yếu nhất. Thẻ này không bắt buộc, nhiều plugin bảo mật xóa nó, và ai cũng có thể ghi giá trị sai. Hãy coi nó là gợi ý cần xác nhận chứ không phải bằng chứng.

Cách 2: nhìn đường dẫn tệp và tên miền tài nguyên

Nền tảngDấu hiệu trong HTMLĐộ tin cậy
WordPress/wp-content/, /wp-includes/Cao, vẫn còn khi đã ẩn thẻ generator
Drupal/sites/default/files/, /core/misc/drupal.jsCao
Shopifycdn.shopify.com, biến JavaScript ShopifyCao
Wixstatic.parastorage.com, static.wixstatic.comCao
Squarespacestatic1.squarespace.comCao
Webflowthuộc tính data-wf-site trên thẻ htmlCao
Joomla/media/system/js/, thư mục /templates/Trung bình
Magento/static/frontend/, /media/catalog/Trung bình

Cách 3: thử các URL đặc trưng

Một số hệ thống có đường dẫn tồn tại trên mọi bản cài đặt: /wp-json/ trả về chỉ mục REST API của WordPress, /wp-login.php là trang đăng nhập mặc định, /administrator/ là trang quản trị mặc định của Joomla, /ghost/ mở trang quản trị Ghost. Trên nhiều cửa hàng Shopify, /cart.js trả về giỏ hàng dạng JSON. Hãy chỉ thử mỗi URL một lần. Dò quét hàng loạt đường dẫn quản trị trên website không phải của bạn có thể kích hoạt tường lửa và là hành vi thiếu tôn trọng. Chủ website cũng thường chặn hoặc đổi các đường dẫn này nên không tìm thấy chưa chứng minh được điều gì.

Cách 4: xem header phản hồi

Trong DevTools, mở thẻ Network, tải lại trang, bấm vào yêu cầu tài liệu đầu tiên và đọc phần Response Headers. Trên dòng lệnh, curl -sI https://example.com in ra các header. Các tín hiệu hữu ích gồm X-Powered-By (có thể ghi PHP, ASP.NET hay Next.js nhưng hay bị xóa), X-Generator (Drupal dùng nhiều), X-Wix-Request-Id (trang chạy trên Wix) và Server (cho biết máy chủ web hoặc CDN như Cloudflare).

Lưu ý: nếu phía trước website có CDN, header thường chỉ nói về lớp CDN chứ không nói về ứng dụng bên sau. Vì vậy phát hiện CDN và phát hiện CMS là hai câu hỏi riêng, và kết quả có thể khác nhau.

Cách 5: kiểm tra biến JavaScript và cấu trúc DOM

Mở Console và gõ tên biến nghi ngờ. Shopify trả về một đối tượng nghĩa là giao diện Shopify. jQuery.fn.jquery in ra phiên bản jQuery. window.__NEXT_DATA__ tồn tại trên trang Next.js dùng Pages Router. Class của thẻ body bắt đầu bằng wp- hoặc woocommerce gợi ý WordPress và plugin bán hàng WooCommerce. Cách này chính xác nhưng cần trình duyệt thật chạy mã JavaScript, nên không làm được chỉ bằng việc tải HTML thô.

Cách 6: dùng công cụ phát hiện tự động

Kiểm tra thủ công từng bước cho mọi website thì không hiệu quả. Công cụ phát hiện mã hóa đúng những dấu hiệu trên thành một danh mục mẫu nhận dạng, mỗi mẫu có điểm tin cậy, rồi kết hợp lại. TLDlive Lens là tiện ích trình duyệt chạy logic này ngay trên máy bạn, với trang bạn đang xem. Lens đọc header phản hồi, thẻ meta, địa chỉ script và stylesheet, tên cookie, một số biến JavaScript và phần tử DOM, đối chiếu với danh mục của nó, rồi hiển thị công nghệ cùng mục đích dự đoán của website trong cửa sổ popup. Việc phát hiện diễn ra trong trình duyệt. Chia sẻ dữ liệu ẩn danh ở mức tên miền là tùy chọn và mặc định tắt.

Với một tên miền bạn chưa truy cập, trang kiểm tra tên miền cho biết thông tin đăng ký và DNS mà TLDlive có. Còn thống kê tổng hợp về công nghệ được đăng tại /technologies.

Khi nào việc phát hiện bị sai

  • Website tách front end và back end (headless). Back end là WordPress nhưng giao diện là Next.js thì khách truy cập chỉ thấy Next.js. Các cách thủ công sẽ báo framework chứ không báo CMS.
  • Reverse proxy và đổi đường dẫn. Có thể đổi /wp-content/ sang thư mục khác hoặc phục vụ tài nguyên qua tên miền riêng.
  • Sau khi chuyển nền tảng. Tệp cũ còn sót lại có thể vẫn xuất hiện trong HTML.
  • Tín hiệu bắt chước. Plugin giả thẻ generator hoặc giao diện sao chép cấu trúc của nền tảng khác sẽ gây nhận diện nhầm.
  • Phiên bản. Số phiên bản thường là thứ đầu tiên bị xóa trên website được gia cố, nên "không rõ phiên bản" là bình thường.

Nguyên tắc thực tế: cần ít nhất hai tín hiệu độc lập, ví dụ một đường dẫn và một biến JavaScript, trước khi ghi lại kết luận. Các công cụ có điểm tin cậy cũng làm như vậy: một tín hiệu yếu cho điểm thấp, nhiều tín hiệu cùng chỉ về một hướng cho điểm cao.

Quy trình năm phút

  1. Tìm trong mã nguồn các từ generator, wp-content, cdn.shopify.com, parastorage, _next.
  2. Đọc header phản hồi của yêu cầu tài liệu đầu tiên.
  3. Thử một URL đặc trưng khớp với dự đoán hàng đầu.
  4. Xác nhận bằng một biến JavaScript hoặc class của body.
  5. Ghi bằng chứng cùng ngày kiểm tra, vì website thay đổi theo thời gian.

Nếu mục đích là nghiên cứu tên miền, hãy kết hợp kết quả với dữ liệu đăng ký. Website dựng trên nền tảng thuê sẵn, đăng ký tuần trước, là một câu chuyện khác với website tự lưu trữ mười năm tuổi. Phần giải thích về trạng thái của tên miền nằm trong bài vòng đời tên miền, và cách tách trang đậu (parked) khỏi trang thật nằm trong bài nhận biết tên miền parked.

Nguồn tham khảo

Câu hỏi thường gặp

Cách nhanh nhất để biết website dùng CMS nào là gì?

Xem mã nguồn và tìm các từ generator, wp-content, cdn.shopify.com và parastorage. Bốn lượt tìm này nhận ra phần lớn website WordPress, Shopify và Wix trong vòng một phút. Tiện ích phát hiện sẽ làm các bước đó tự động.

Website có thể giấu CMS của mình không?

Có thể giấu các dấu hiệu dễ thấy như thẻ generator và số phiên bản, hoặc chuyển tài nguyên qua proxy. Nhưng không giấu hết được vì trình duyệt cần script, style và mã HTML theo cấu trúc của nền tảng. Việc giấu chỉ làm giảm độ tin cậy chứ không xóa hẳn.

Kiểm tra website dùng gì có hợp pháp không?

Đọc HTML và header công khai mà máy chủ gửi cho mọi khách truy cập là hoạt động web bình thường. Đừng dò quét ồ ạt các đường dẫn riêng tư, đừng thử đăng nhập hay khai thác lỗ hổng. Đây là thông tin chung, không phải tư vấn pháp lý.

Vì sao công cụ báo Next.js trong khi tôi nghĩ là WordPress?

Nhiều website dùng WordPress chỉ làm nơi quản lý nội dung, còn giao diện do một front end riêng tạo ra. Công cụ phát hiện sẽ báo framework của front end.