Смотрите на эта статья ned Batchelder здесь . Его статья об останавливающихся спам-роботах, но те же методы могли легко относиться к Вашему сайту.
Вместо того, чтобы остановить ботов при наличии людей идентифицируют себя, мы можем остановить ботов, мешая им делать успешное сообщение, или при наличии их непреднамеренно признают себя ботами. Это удаляет нагрузку от людей и оставляет форму комментария свободной от видимых мер против спама.
Эта техника - то, как я предотвращаю спам-роботы на этом сайте. Это работает. Метод, описанный здесь, не смотрит на содержание вообще.
Некоторые другие идеи:
РЕДАКТИРОВАНИЕ: Чтобы быть полностью ясной, статья Ned выше описывает методы для предотвращения автоматизированной ПОКУПКИ объектов, препятствуя тому, чтобы BOT прошел формы для размещения заказа. Его методы не были бы полезны для предотвращения ботов от анализа экранных данных домашняя страница для определения, когда Нагрудный патронташ Моркови поступает в продажу. Я не уверен предотвращение, КОТОРОЕ действительно возможно.
Относительно Ваших комментариев об эффективности стратегий Ned: Да, он обсуждает ловушки, но я не думаю, что это - его самая сильная стратегия. Его обсуждение СЧЕТЧИК является исходной причиной, я упомянул его статью. Извините я не сделал это более ясным в моем исходном сообщении:
счетчик является скрытым полем, используемым для нескольких вещей: это хеширует вместе много значений, которые предотвращают вмешательство и воспроизведения, и используется для затемнения имен полей. Счетчик является хешем MD5:
- метка времени,
- IP-адрес клиента,
- идентификатор записи записи в блоге, прокомментированной, и
- секрет А.
Вот то, как Вы могли реализовать это по WOOT.com:
Изменение "секретное" значение, которое используется в качестве части хеша каждый раз новый объект, поступает в продажу. Это означает, что, если бы кто-то собирается разработать BOT, чтобы автокупить объекты, , он только работал бы, пока следующий объект не прибывает в продаже !!
, Даже если кто-то в состоянии быстро восстановить их бота, все другие фактические пользователи уже купят BOC, и Ваша проблема решена!
другая стратегия, которую он обсуждает, к изменение метод ловушки время от времени (снова, измените его, когда новый объект поступает в продажу):
я предполагаю, что моя полная идея состоит в том, чтобы ИЗМЕНИТЬ ДИЗАЙН ФОРМЫ, когда каждый новый объект поступает в продажу. Или ПО КРАЙНЕЙ МЕРЕ, изменение это, когда новый BOC поступает в продажу.
, Который является что, пара времен/месяц?
при принятии этого ответа Вы дадите мне предостережение на том, когда следующий будет должен?:)
Spring Framework имеет отличный класс StopWatch
:
StopWatch stopWatch = new StopWatch("My Stop Watch");
stopWatch.start("initializing");
Thread.sleep(2000); // simulated work
stopWatch.stop();
stopWatch.start("processing");
Thread.sleep(5000); // simulated work
stopWatch.stop();
stopWatch.start("finalizing");
Thread.sleep(3000); // simulated work
stopWatch.stop();
System.out.println(stopWatch.prettyPrint());
Это дает:
StopWatch 'My Stop Watch': running time (millis) = 10000 ----------------------------------------- ms % Task name ----------------------------------------- 02000 020% initializing 05000 050% processing 03000 030% finalizing
Вы можете попробовать System.currentTimeMillis () , но также есть хорошие параметры профилирования в некоторых хорошо известных IDE, таких как eclipse и netbeans. Кроме того, помимо IDE, вы можете попробовать автономные профилировщики в своих задачах измерения производительности. Я думаю, что с помощью профилировщиков вы получите лучшие результаты, чем с помощью System.currentTimeMillis () .
java.lang.System.nanoTime ()
Или вы можете использовать StopWatch, который поставляется в общем доступе apache. Этот класс использует java.lang.System.currentTimeMillis ()
http://commons.apache.org/lang/api-release/org/apache/commons/lang/time/StopWatch.html
Если вы просто хотите измерить это, используйте класс секундомера или, может быть, просто секундомер.
Если вы хотите сделать это быстрее, рассмотрите это .