Необходимо будет связать параметры с объектом команды, или конструктором или инжекцией метода set (или эквивалентный). Возможно, что-то вроде этого:
public class DeletePersonCommand: ICommand
{
private Person personToDelete;
public DeletePersonCommand(Person personToDelete)
{
this.personToDelete = personToDelete;
}
public void Execute()
{
doSomethingWith(personToDelete);
}
}
Очень простой (некоторые более продвинутые боты не попадутся на это, но многие базовые боты попадут) - поместите фиктивное поле в форму, которое не будет видно обычному пользователю ( и в качестве резервной копии, возможно, с обычно невидимой надписью «здесь ничего не вводите»). Если при отправке в поле есть контент, скорее всего, это бот.
Я считаю, что вы можете скоординировать свои действия с вашим файлом robots.txt
и определить, если он был обнаружен пользователем, это позволит вам отслеживать ip / временную метку of requestor, что делает маловероятным, что обычный пользователь увидит ваш файл robots.txt
.
Поскольку большинство ботов будут проверять ваш файл robots.txt (возможно, на предмет структуры каталога и т. д.).
Интересным фактором может быть частота набора текста и движения мыши. Их довольно легко поймать с помощью JavaScript. Другое дело их анализ, хотя я полагаю, что было бы довольно легко вычислить отклонения и средние значения, дающие хорошее представление о том, насколько «органичны» движения.
С другой стороны, это чрезвычайно дорого для клиента и можно понимать как слежку / шпионаж в случае обнаружения. Может быть, в качестве дополнительной защиты для клиентов, подозреваемых в ботах?
Возможно, проверить ссылающийся URL? Я с трудом могу представить, чтобы многие люди попадали в контактную форму, не просматривая сначала несколько других страниц веб-сайта, то же самое касается форм заказа, ...
, я добавил скрытое поле (CSS , display: none) в форму с name = "email"
, при заполнении это был робот;)