Коротше кажучи: можна сховати, якою мовою ви користуєтеся в бек-енді. Тривіальний приклад: розгляньте сторінку "Hello World"; було б вкрай важко розібратися, який фреймворк / мова використовується на задньому плані (якщо припустити, що основні речі, такі як файли cookie сеансу, встановлюються вручну чи не використовуються).
Однак суть фреймворку полягає в тому, щоб заощадити, що вам доведеться повторно реалізовувати функціональність, і змусити вас працювати стандартизовано. Практично у всіх структурах є свої конкретні невеликі розповіді, які подарують їх, якщо ви подивитесь досить близько. Як зазначали інші, можна спробувати їх приховати, використовуючи конфігурацію або повторно реалізуючи різні стандартні функції. Тим не менш, я б заперечував, що для великих сайтів було б надзвичайно важко повністю приховати все, і навіть якби ви цього зробили, ви використовували б дуже мало своїх рамок.
Підводячи підсумок, я б сказав, що майже завжди можна отримати дуже гарне уявлення про те, що використовується внизу (за допомогою ретельного обстеження та викривлення). Приховування використовуваної рамки можливо, але швидко стає неможливим для великих сайтів.
У попередніх відповідях є кілька хороших прикладів різних показових казок, які є в рамках та мовах. Я хотів би додати, що різні механізми перегляду мають специфічну поведінку пробілу, яку можна використовувати для їх ідентифікації. Двигун Razor, який використовується в MVC3 +, має досить специфічні химерності, які можна було б використати для його ідентифікації або, принаймні, звузити список підозрюваних (знову ж, ви можете піти на бік, але тоді ви його використовуєте?).
.php
CGI-скрипту, написаного на C, або сервлета, написаного на Java.