Большинство библиотек просто анализируют строку агента пользователя, которая отправляется на сервер в виде заголовка HTTP, поэтому любой процесс на стороне сервера может это сделать.
Обычные предупреждения о ненадежности, сложности в обслуживании браузера и, как правило, неправильном решении любой конкретной проблемы.