RevealTheme logo

Công cụ phát hiện của RevealTheme hoạt động như thế nào

Khi bạn nhập một URL vào một trong các công cụ phát hiện của chúng tôi, rất nhiều việc diễn ra trong hai giây trước khi bạn thấy kết quả. Đây là hành trình kỹ thuật dành cho những người tò mò, bao gồm cả những hạn chế mà chúng tôi không thể giải quyết bằng kỹ thuật.

Bước 1: Lấy HTML công khai

Khi bạn gửi một URL, máy chủ của chúng tôi lấy trang web công khai của URL đó bằng một User-Agent trình duyệt tiêu chuẩn. Đó chính là HTML mà trình duyệt của bạn sẽ nhận được nếu bạn truy cập trực tiếp trang web. Chúng tôi không vượt qua rào chắn trả phí, không trích xuất nội dung được bảo vệ bằng đăng nhập và không sử dụng bất kỳ phương thức xác thực nào.

Việc lấy dữ liệu sử dụng thời gian chờ 20 giây. Chúng tôi theo tối đa 10 lần chuyển hướng (bao gồm các chuyển hướng HTTP → HTTPS, www → không-www và chuyển hướng theo quốc gia). Nếu trang web trả về phản hồi 4xx hoặc 5xx, hoặc không phản hồi trong khoảng thời gian chờ, chúng tôi trả về một lỗi rõ ràng «không thể truy cập» thay vì đoán mò.

Bước 2: Phát hiện nền tảng

Trước khi cố gắng xác định một theme cụ thể, chúng tôi kiểm tra trang web chạy CMS nào. Chúng tôi tìm dấu vết của 7 nền tảng được hỗ trợ —WordPress, Shopify, Magento, Joomla, Drupal, Moodle và PrestaShop— và chọn kết quả khớp mạnh nhất.

Nếu bạn gửi một URL Shopify đến công cụ phát hiện WordPress của chúng tôi (hoặc ngược lại), chúng tôi sẽ cho bạn biết và liên kết đến công cụ phát hiện đúng. Không đoán mò, không có kết quả dương tính giả.

Bước 3: Phát hiện theme

Riêng với WordPress, các tham chiếu đến theme thường xuất hiện trong HTML của trang ở các đường dẫn như wp-content/themes/TÊN_THEME/style.css. Chúng tôi trích xuất từng tham chiếu đó từ bất kỳ phần nào của tài liệu: thẻ link, thẻ script, JavaScript nội tuyến, các khối JSON-LD và thậm chí cả nội dung văn bản. Điều này phát hiện được những theme mà các trang web được tối ưu hóa cao đã ẩn khỏi các công cụ phát hiện tiêu chuẩn.

Với mỗi theme được phát hiện, chúng tôi cố gắng lấy tệp style.css của theme. Phần header của tệp đó chứa tên chính thức của theme, tác giả, phiên bản, URI và mô tả, trực tiếp từ nhà phát triển theme. Đó là nguồn thông tin phong phú về theme mà chúng tôi hiển thị bên cạnh kết quả phát hiện.

Bước 4: Phát hiện plugin

Việc phát hiện plugin sử dụng hai phương pháp song song. Thứ nhất, chúng tôi trích xuất bất kỳ đường dẫn tệp nào khớp với wp-content/plugins/TÊN_PLUGIN/. Thứ hai, chúng tôi chạy hàng chục lần kiểm tra dựa trên chữ ký: chúng tôi tìm các cấu trúc HTML cụ thể, tên lớp CSS, biến JavaScript nội tuyến và header phản hồi HTTP nhằm nhận diện duy nhất các plugin phổ biến như Elementor, Yoast SEO, WPForms, WooCommerce, Wordfence và nhiều plugin khác.

Thiết kế hai phương pháp này phát hiện được những plugin ẩn đường dẫn tệp của chúng (thông qua bộ nhớ đệm hoặc gộp tài nguyên) nhưng vẫn để lại các chữ ký đặc trưng. Với mỗi plugin được phát hiện, chúng tôi tra cứu nó trong Thư mục Plugin của WordPress.org để bổ sung cho kết quả tên chính thức của plugin, mô tả, tác giả và ảnh chụp màn hình.

Bước 5: Tra cứu dịch vụ lưu trữ + DNS

Để xác định nhà cung cấp dịch vụ lưu trữ, chúng tôi thực hiện tra cứu DNS trên tên miền và kiểm tra địa chỉ IP, ASN và DNS ngược. Chúng tôi đối chiếu nó với một cơ sở dữ liệu về các dải IP đã biết của các nhà cung cấp dịch vụ lưu trữ để xác định nhà cung cấp. Độ chính xác cao đối với các dịch vụ lưu trữ lớn (AWS, Cloudflare, Hostinger, SiteGround, v.v.) và thấp hơn đối với các nhà cung cấp ngách.

Những gì chúng tôi không thể làm

Một số trường hợp mà việc phát hiện sẽ không hoạt động, dù mã của chúng tôi có tốt đến đâu:

  • Thử thách bot của Cloudflare. Các trang web có chế độ bảo vệ chống bot nghiêm ngặt của Cloudflare (màn hình «Đang thực hiện kiểm tra bảo mật...») chặn trình lấy dữ liệu của chúng tôi giống như cách chúng chặn bất kỳ yêu cầu tự động nào. Không có cách rõ ràng nào để vượt qua điều này.
  • Theme tùy chỉnh sâu. Nếu một theme đã được chỉnh sửa đến mức mọi tham chiếu đến tên theme gốc đã bị loại bỏ khỏi HTML, chúng tôi không còn gì để phát hiện.
  • Bộ nhớ đệm mạnh với đường dẫn tài nguyên được viết lại. Các plugin như LiteSpeed Cache, WP Rocket và Rocket Loader của Cloudflare đôi khi viết lại URL của tài nguyên để ẩn nguồn. Việc phát hiện dựa trên chữ ký của chúng tôi bắt được hầu hết, nhưng không phải tất cả.
  • Trang web xuất tĩnh. Một trang web WordPress đã được xuất sang HTML tĩnh sẽ mất hầu hết các chữ ký lúc chạy vốn làm cho việc phát hiện trở nên khả thi.

Những gì chúng tôi không làm

Người ta đã hỏi chúng tôi. Câu trả lời là không:

  • Chúng tôi không lưu trữ các URL bạn gửi
  • Chúng tôi không ghi lại địa chỉ IP cho mục đích tiếp thị
  • Chúng tôi không chia sẻ dữ liệu phát hiện với các nhà cung cấp
  • Chúng tôi không vượt qua xác thực, robots.txt hay các kiểm soát truy cập khác
  • Chúng tôi không chạy công cụ phát hiện trên các IP nội bộ/riêng tư (127.0.0.1, 10.x.x.x, v.v.) vì lý do bảo mật

Chi tiết đầy đủ về quyền riêng tư có trong Chính sách bảo mật của chúng tôi.

Quyền truy cập API

Hiện tại chúng tôi không cung cấp API công khai, nhưng có thể cấp quyền truy cập theo chương trình ở mức giới hạn theo yêu cầu cho các đơn vị và nhà nghiên cứu. Hãy viết thư tới hello@revealtheme.com kèm trường hợp sử dụng và khối lượng yêu cầu dự kiến của bạn.

Tại sao nó không phải mã nguồn mở?

Các quy tắc phát hiện là cốt lõi của sản phẩm, và chúng tôi cập nhật chúng thường xuyên khi theme và plugin thay đổi. Mở mã nguồn của chúng sẽ làm chậm nhịp cập nhật của chúng tôi. Dù vậy, chúng tôi đăng các bài viết chi tiết về kỹ thuật phát hiện trên blog của mình: hãy tìm «phát hiện» để xem chúng.

Sẵn sàng thử chưa?

Hãy dùng công cụ phát hiện phù hợp với trang web bạn muốn kiểm tra: