HTTP-заголовки смотрите, по ним и по JS определите, действительно ли браузер или все-таки 'raw HTTP", если первое, то защита на фронт-енде должна быть, если второе, то на бек-енде, суть защиты - вносить изменения, которые не способен обработать парсер, но, грубо говоря, если очень захотят, то хоть каждый день будут "чинить" своего бота, оставили бы вы их в покое.