В этой статье stackoverflow обсуждается та же проблема, и она помечена Python
(хотя это не имеет ничего общего с языками программирования). Они упоминают эту статью о сигнатурах типов файлов (на самом деле это не сигнатуры, а общее начальное магическое число для известных типов файлов). Из соображений безопасности я бы порекомендовал получать поток из надежного источника только в том случае, если вы собираетесь настроить логику вашего приложения нетривиальным способом.
Кроме того, поскольку вы просто проверяете, является ли файл html или двоичным (на данный момент), вы можете проверить наличие 0 в потоке байтов (байт, а не символ) или просто любой недопустимый символ HTML (например, 0x1).