Поскольку я не нашел jQuery-бесплатный ответ, который я мог бы скопировать / вставить, вот решение, которое я использовал:
function clickEvent(e) {
// e = Mouse click event.
var rect = e.target.getBoundingClientRect();
var x = e.clientX - rect.left; //x position within the element.
var y = e.clientY - rect.top; //y position within the element.
}
Почему бы вам просто не менять название и изображение BOC каждый раз, когда вы его предлагаете? Увидеть последнюю версию BOC стало бы частью удовольствия от учебы.
Создайте простое правило брандмауэра IP, которое заносит в черный список IP-адрес, если вы обнаружите больше, чем макс. количество запросов, поступающих в секунду.
Вы проделываете этот путь с трудом. Я, вероятно, ударил бы себя, так как я только что выиграл BOC с сайта сегодня с бот-сайтом, но просто поместите текст RANDOM CRAP в captcha на главной странице сайта. Все боты ищут текст «СЛУЧАЙНАЯ ДЕРЬМА». Таким образом, вы в основном просто избегаете их запуска. Любой, кто посмотрит глазами, увидит, что там написано «Случайное дерьмо».
Достаточно простое решение - отследить разницу во времени между отображением форм и получением ответа: у ботов обычно очень короткое время ответа в миллисекунды, ни один пользователь не может этого сделать; или чрезвычайно долгое время отклика в несколько часов.
Для этого есть фрагмент кода django с более подробным описанием:
Знаете, если бы вы опубликовали свой RSS-канал с помощью pubsubhubbub, людям не пришлось бы снова и снова заходить на вашу страницу, чтобы увидеть следующую новость в Woot-off, они бы просто ждали, пока она появится в их Google Reader.