Sc0undRel
@Sc0undRel

Защита от спамеров?

Пытаюсь уменьшить количество спамерских регистраций на сайте.
Заметил следующее:
- когда регистрируюсь я сам, то $_SERVER помимо прочего содержит следующие данные:
[HTTP_ACCEPT] => text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
[HTTP_COOKIE] => dle_newpm=0; _ym_uid=145052032953; PHPSESSID=n2do411r6h5rrk5; _ym_isad=0; DreamCashID=2x9zjnb78b2fw4cxakkf39kw525u; _gat=1; MarketGidStorage=%7B%223A%7B%22svspr%22%3A%22https%3A%2F%2Fwww.google.ee%2F%22%2C%22svsds%22%3A3%2C%22TMTQ%22C595190%22%3A%7B%22page%22%22time%22%3A1458034%7D%7D; _ga=GA139895609; _ym_visorc_1w


А когда регаются "боты" или кто они такие, то $_SERVER содержит:
[HTTP_ACCEPT] => */*
[HTTP_PRAGMA] => no-cache


Что думаете по этому поводу? При каких условиях могут принимать такое значение [HTTP_ACCEPT] и [HTTP_PRAGMA]? Как я понимаю, эти переменные должны содержать данные у 99,9% реальных пользователей компьютеров, планшетов и телефонов.
Можно ли таким образом отсеить ботов?
Рискую ли я отсечь и реальных пользователей отфильтровав их по таким условиям?
  • Вопрос задан
  • 946 просмотров
Пригласить эксперта
Ответы на вопрос 5
@asd111
[HTTP_ACCEPT] => */* - такие заголовки не ставит ни один браузер, поэтому можно фильтровать по ним.
Но думаю самым простым и надежным способом будет вот такая рекапча в форме регистрации и там где боты бушуют:
https://www.google.com/recaptcha/intro/index.html

Ещё можно в форму регистрации добавить hidden input и через javascript туда прописывать значение и если присланное значение не соответствует тому что должно быть , то значит регался бот - боты обычно не выполняют javascript. Своеобразная javascript captcha - довольно надежная по моему опыту(надежнее чем капча где нужно распознать текст).
Простой пример:
форма
<form .....>
<input id="login_tt" type="hidden" name = "login_tt"> // Сюда будем записывать секретное значение через js
</form>
<script>
$("#login_tt").val("my secret value") // само значение которое будем проверять на сервере
</script>

на сервере примерно так

<?php
     if( $_POST["login_tt"] != "my secret value"){
      exit(0);
    }
Ответ написан
Комментировать
*/* в Accept: чаще всего бывает при доступе браузером через прокси и в некоторых случаях - при обновлении страницы в браузере. То есть шанс убить какое-то количество легальных клиентов есть. Лучше поставьте каптчу на регистрацию.
P.S. Pragma: no-cache тоже ставится при запросе через прокси.
Ответ написан
dimonchik2013
@dimonchik2013
non progredi est regredi
любой cURL без настроек такое даст, о тех же питоновских http клиентах вообще не говорю
Ответ написан
Комментировать
@Silm
Если пользователь не пытается намерено быть анонимным у него будут работать куки. Увидев подозрительный заголовок (или какую то другую характерную особенность/активность), вы можете поступить как яндекс: предложить ввести капчу.
Ответ написан
@LiguidCool
Может это тупо боты поисковиков?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы