Я принял ответ, но, к сожалению, я полагаю, что мы застряли в нашем первоначальном сценарии наихудшего случая: CAPTCHA каждый на попытки покупки дерьма . Краткое объяснение: кэширование / веб-фермы делают невозможным отслеживание хитов, и любой обходной путь (отправка не кэшированного веб-маяка, запись в объединенную таблицу и т. Д.) Замедляет работу сайта хуже, чем это делают боты. Вероятно, есть какое-то дорогостоящее аппаратное обеспечение от Cisco или подобное, которое может помочь на высоком уровне, но трудно оправдать стоимость, если CAPTCHA для всех является альтернативой. Позже я попытаюсь дать более полное объяснение, а также очистить его для будущих поисковиков (хотя другие могут попробовать, так как это вики сообщества).
ситуация
Речь идет о распродажах на сайте woot.com. Я президент Woot Workshop, дочерней компании Woot, которая занимается дизайном, пишет описания продуктов, подкасты, сообщения в блогах и модерирует форумы. Я работаю с CSS / HTML и едва знаком с другими технологиями. Я тесно сотрудничаю с разработчиками и обсудил все ответы здесь (и многие другие идеи, которые у нас были).
Юзабилити - важная часть моей работы, а создание сайта увлекательным и увлекательным - большая часть всего остального. Вот где три цели ниже. CAPTCHA вредит юзабилити, а боты крадут веселье и азарт наших продаж дерьма.
Боты отбрасывают нашу главную страницу десятки раз за секунду, просматривая экран (и / или сканируя наш RSS) для продажи Случайного Дерьма. В тот момент, когда они видят это, он запускает второй этап программы, которая входит в систему, нажимает кнопку «Мне нужен один», заполняет форму и покупает дерьмо.
оценка
lc : на stackoverflow и других сайтах, которые используют этот метод, они почти всегда имеют дело с аутентифицированными (вошедшими в систему) пользователями, потому что выполняемая задача требует этого.
На Woot анонимные (не зарегистрированные) пользователи могут просматривать нашу домашнюю страницу. Другими словами, захлопывающие боты могут быть не аутентифицированы (и, по сути, не отслеживаются, кроме как по IP-адресу).
Итак, мы возвращаемся к сканированию IP-адресов, что а) довольно бесполезно в эпоху облачных сетей и спамботов-зомби и б) ловит слишком много невинных, учитывая количество предприятий, приходящих с одного IP-адреса (не говоря уже о проблемах с нестатические IP-провайдеры и потенциальные потери производительности, пытаясь отследить это).
О, и когда люди звонят нам, это будет худший из возможных сценариев. Можем ли мы заставить их позвонить вам?
BradC : методы Неда Батчелдера выглядят довольно круто, но они довольно твердо предназначены для победы над ботами, созданными для сети сайтов. Наша проблема в том, что боты созданы специально для победы над нашим сайтом. Некоторые из этих методов могут работать недолго, пока сценаристы не разовьют своих ботов, чтобы игнорировать honeypot, просматривать экранные имена соседних меток вместо идентификаторов форм и использовать элемент управления браузером с поддержкой javascript.
Снова : «Если, конечно, реклама не является частью вашей маркетинговой схемы». Да, это определенно так. Удивление, когда предмет появляется, а также волнение, если вам удастся его получить, вероятно, столь же или более важно, чем дерьмо, которое вы фактически получаете в итоге. Все, что исключает «первым пришел / первым обслужен», отрицательно сказывается на «выигрыше» дерьма.
novatrust : И я приветствую наших новых повелителей ботов. На самом деле мы предлагаем RSS-каналы, позволяющие сторонним приложениям сканировать наш сайт на предмет информации о продукте, но не опережая основной сайт HTML. Если я правильно понимаю, ваше решение помогает цели 2 (проблемы с производительностью), полностью жертвуя целью 1 и просто отказываясь от того факта, что боты будут покупать большую часть дерьма. Я проголосовал за ваш ответ, потому что ваш последний пессимизм кажется мне точным. Кажется, здесь нет серебряной пули.
Остальные ответы, как правило, основаны на отслеживании IP-адресов, что, опять-таки, кажется бесполезным (с ботнетами / зомби / облачными сетями) и вредным (отлавливает множество невинных людей, пришедших из одного и того же IP-адреса).
Любые другие подходы / идеи? Мои разработчики продолжают говорить «давайте просто сделаем CAPTCHA», но я надеюсь, что есть все менее навязчивые методы для всех реальных людей, которые хотят получить немного нашего дерьма.
Оригинальный вопрос
Скажем, вы продаете что-то дешевое, что имеет очень высокую воспринимаемую стоимость, а у вас очень ограниченное количество. Никто точно не знает, когда вы продадите этот предмет. И более миллиона человек регулярно приходят посмотреть, что вы продаете.
В итоге вы получаете сценаристов и ботов, пытающихся программно [а] выяснить, когда вы продаете указанный товар, и [б] убедитесь, что они одними из первых купили его. Это отстой по двум причинам:
- Ваш сайт захвачен не людьми, замедляя все для всех.
- Сценаристы в конечном итоге «выигрывают» продукт, заставляя завсегдатаев чувствовать себя обманутыми.
Очевидное, на первый взгляд, решение - создать несколько пялец, через которые ваши пользователи будут прыгать, прежде чем размещать свой заказ, но здесь есть как минимум три проблемы:
- Пользовательский опыт - отстой для людей, так как они должны расшифровать CAPTCHA, выбрать кошку или решить математическую задачу.
- Если предполагаемая выгода достаточно высока, а толпа достаточно велика, какая-то группа найдет способ обойти любую хитрость, ведущую к гонке вооружений. (Это особенно верно, чем проще твик: скрытая форма «комментарии», переупорядочение элементов формы, неправильная маркировка, скрытый текст «поймал» - все будет работать один раз, а затем его нужно будет изменить для борьбы с этой конкретной формой .)
- Даже если сценаристы не могут «решить» ваш твик, это не помешает им хлопнуть вашей первой страницей, а затем подать сигнал тревоги, чтобы сценарист выполнил заказ вручную. Учитывая, что они получают преимущество от решения [a], они, вероятно, все равно выиграют [b], так как они будут первыми, кто достигнет страницы заказа. Кроме того, 1. все еще происходит, что приводит к ошибкам сервера и снижению производительности для всех.
Другое решение состоит в том, чтобы следить за слишком частым попаданием IP-адресов, блокировать их от брандмауэра или иным образом предотвращать их упорядочение. Это может решить 2. и предотвратить [b], но снижение производительности при сканировании IP-адресов является значительным и, вероятно, вызовет больше проблем, таких как 1., чем сами сценаристы. Кроме того, возможность облачных сетей и зомби-спамботов делает проверку IP довольно бесполезной.
Третья идея, заставляющая форму заказа загружаться в течение некоторого времени (скажем, полсекунды), потенциально может замедлить выполнение быстрых заказов, но, опять же, сценаристы все равно будут первыми людьми, на любой скорости, не наносящей ущерба фактические пользователи.
цели
- Продайте предмет людям, не пишущим сценарий.
- Поддерживайте работу сайта на скорости, не замедленной ботами.
- Не доставляйте «нормальным» пользователям никаких заданий, чтобы доказать, что они люди.