Как отсечь «Спам запросы» роботов/пользователей?

CSRF, решается добавлением и проверкой XSRF-токеном
reCAPTCHA - бесплатный инструмент от Гугла
Cloudflare - сервис с кучей продуктов, как раз для решения ваших проблем. Есть бесплатные тарифы

Большинство ботов тупые и не выполняют JS код на странице. Поэтому обычно хватает такой конструкции (используется jQuery):
Перед закрывающим тегом </body>
<script>
$('form').append('<input type="hidden" name="zayac" value="ubezhal">')
</script>

И делай в PHP проверку где принимаешь данные из формы как нибудь так:
if (empty($_GET['zayac']) or $_GET['zayac'] != 'ubezhal') exit("Error, please enable JS in your browser");

От автоматических рассылок это спасает, а от направленной спам атаки нет. 
Там уже юзать: CSRF, reCAPTCHA, Cloudflare или тот же fail2ban, как написали ранее