Почему поле user-agent бывает пустым?
Во-первых, есть масса плагинов анонимизации к браузерам, которые этот заголовок скрывают, да и Chrome в режиме инкогнито, если мне не изменяет память. его не передаёт. Во-вторых, обращаться к сайту могут не только бразуеры, но и другие программы, которые могут и не устанавливать этот заголовок.
User-Agent - необязательный заголовок. Его можно передавать, можно не передавать, это на усмотрение клиента.
Вопрос в другом. А зачем вам блокировать клиентов без юзер-агента? Они вам как-то мешают?