Не позволяя сценаристам захлопнуть ваш сайт


489

Я принял ответ, но, к сожалению, я полагаю, что мы застряли в нашем первоначальном сценарии наихудшего случая: 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», но я надеюсь, что есть все менее навязчивые методы для всех реальных людей, которые хотят получить немного нашего дерьма.

Оригинальный вопрос

Скажем, вы продаете что-то дешевое, что имеет очень высокую воспринимаемую стоимость, а у вас очень ограниченное количество. Никто точно не знает, когда вы продадите этот предмет. И более миллиона человек регулярно приходят посмотреть, что вы продаете.

В итоге вы получаете сценаристов и ботов, пытающихся программно [а] выяснить, когда вы продаете указанный товар, и [б] убедитесь, что они одними из первых купили его. Это отстой по двум причинам:

  1. Ваш сайт захвачен не людьми, замедляя все для всех.
  2. Сценаристы в конечном итоге «выигрывают» продукт, заставляя завсегдатаев чувствовать себя обманутыми.

Очевидное, на первый взгляд, решение - создать несколько пялец, через которые ваши пользователи будут прыгать, прежде чем размещать свой заказ, но здесь есть как минимум три проблемы:

  • Пользовательский опыт - отстой для людей, так как они должны расшифровать CAPTCHA, выбрать кошку или решить математическую задачу.
  • Если предполагаемая выгода достаточно высока, а толпа достаточно велика, какая-то группа найдет способ обойти любую хитрость, ведущую к гонке вооружений. (Это особенно верно, чем проще твик: скрытая форма «комментарии», переупорядочение элементов формы, неправильная маркировка, скрытый текст «поймал» - все будет работать один раз, а затем его нужно будет изменить для борьбы с этой конкретной формой .)
  • Даже если сценаристы не могут «решить» ваш твик, это не помешает им хлопнуть вашей первой страницей, а затем подать сигнал тревоги, чтобы сценарист выполнил заказ вручную. Учитывая, что они получают преимущество от решения [a], они, вероятно, все равно выиграют [b], так как они будут первыми, кто достигнет страницы заказа. Кроме того, 1. все еще происходит, что приводит к ошибкам сервера и снижению производительности для всех.

Другое решение состоит в том, чтобы следить за слишком частым попаданием IP-адресов, блокировать их от брандмауэра или иным образом предотвращать их упорядочение. Это может решить 2. и предотвратить [b], но снижение производительности при сканировании IP-адресов является значительным и, вероятно, вызовет больше проблем, таких как 1., чем сами сценаристы. Кроме того, возможность облачных сетей и зомби-спамботов делает проверку IP довольно бесполезной.

Третья идея, заставляющая форму заказа загружаться в течение некоторого времени (скажем, полсекунды), потенциально может замедлить выполнение быстрых заказов, но, опять же, сценаристы все равно будут первыми людьми, на любой скорости, не наносящей ущерба фактические пользователи.

цели

  1. Продайте предмет людям, не пишущим сценарий.
  2. Поддерживайте работу сайта на скорости, не замедленной ботами.
  3. Не доставляйте «нормальным» пользователям никаких заданий, чтобы доказать, что они люди.

1
Я думаю, что у вас противоречивые цели: сохранить опыт таким, какой он есть, но избавиться от ботов. Я думаю, что вы не можете получить одно, не жертвуя частью другого.
максимум

Это вики сообщества, так что не стесняйтесь делать удар, но я в основном старался охватить каждую точку настолько четко, насколько мог, учитывая, что есть очевидные вещи, которые мы попробовали и которые мы уже обесценили
Дэйв Ратледж

Почему бы просто не кэшировать повторяющихся нарушителей, просто не обновлять страницу, которую они неоднократно запрашивают. IPv4 и MAC-адреса имеют общую длину 32 + 48 бит. Это 10 МБ для 1 миллиона пользователей, не должно быть проблемой. Комбинация IPv4 и MAC должна помочь вам более точно отслеживать всех пользователей
Джон Лейдегрен,

4
Я не очень понимаю, почему вы должны позволить анонимным пользователям видеть распродажу дерьма. Почему бы не предлагать это пользователям, которые вошли в систему? Если вы сделаете это, неизвестные пользователи не будут заходить на страницу слишком часто, а затем сможете запретить плохих пользователей.
Райан Гилл

1
Я думаю, что некоторые люди здесь упускают ключевой фактор: эти боты также настроены для входа и покупки. Они ДЕЙСТВИТЕЛЬНО знают действительную учетную запись и МОГУТ войти в систему. Кроме того, реальные люди, которые используют woot, сидят там в тот момент, когда появляется предмет, и нажимают F5, чтобы перезаряжаться каждые 2-5 секунд. Это действительно нормальное использование человеком.
CodingWithSpike

Ответы:


229

Как насчет реализации чего-то, что SO делает с CAPTCHA?

Если вы используете сайт нормально, вы, вероятно, никогда его не увидите. Если вам случается слишком часто перезагружать одну и ту же страницу, слишком быстро публиковать последующие комментарии или что-то еще, что вызывает тревогу, заставьте их доказать, что они люди. В вашем случае это, вероятно, будут постоянные перезагрузки одной и той же страницы, быстрое следование каждой ссылке на странице или слишком быстрое заполнение формы заказа, чтобы быть человеком.

Если они не пройдут проверку x раз подряд (скажем, 2 или 3), дайте этому IP тайм-аут или другую такую ​​меру. Затем в конце тайм-аута сбросьте их обратно на проверку снова.


Поскольку у вас есть незарегистрированные пользователи, получающие доступ к сайту, у вас есть только IP-адреса. Вы можете создавать сеансы для каждого браузера и отслеживать их, если хотите. И, конечно же, добавьте проверку человеком, если слишком много сессий создаются (повторно) подряд (в случае, если бот продолжает удалять куки).

Чтобы поймать слишком много невинных, вы можете разместить отказ от ответственности на странице проверки человеком: «Эта страница может также появиться, если слишком много анонимных пользователей просматривают наш сайт из того же места. Мы рекомендуем вам зарегистрироваться или войти, чтобы избежать это." (Отрегулируйте формулировку соответствующим образом.)

Кроме того, какова вероятность того, что пользователи X одновременно загружают одни и те же страницы с одного IP? Если они высокие, возможно, вам нужен другой механизм запуска для тревоги вашего бота.


Изменить: Другой вариант, если они терпят неудачу слишком много раз, и вы уверены в спросе продукта, чтобы заблокировать их и заставить их лично ПОЗВОНИТЬ вам удалить блок.

То, что люди звонят, кажется мерой глупости, но это гарантирует, что где-то за компьютером находится человек . Ключ заключается в том, чтобы блок был на месте только для условия, которое почти никогда не должно происходить, если это не бот (например, провалить проверку несколько раз подряд). Тогда он заставляет человека взаимодействовать - поднять трубку телефона.

В ответ на комментарий о том, чтобы они мне позвонили, очевидно, что здесь есть компромисс. Вы достаточно обеспокоены тем, чтобы ваши пользователи могли принимать пару телефонных звонков, когда они поступят в продажу? Если бы я был так обеспокоен тем, что продукт попадет на пользователей, я бы принял это решение, возможно, пожертвовав (небольшим) небольшим количеством своего времени в процессе.

Поскольку кажется, что вы полны решимости не позволить ботам одержать верх / хлопнуть своим сайтом, я считаю, что телефон может быть хорошим вариантом. Поскольку я не получаю прибыль от вашего продукта, я не заинтересован в получении этих звонков. Если бы вы разделили часть этой прибыли, я могу заинтересоваться. Так как это ваш продукт, вы должны решить, насколько вы заботитесь, и реализовать его соответствующим образом.


Другие способы освобождения блока не так эффективны: тайм-аут (но они могут снова захлопнуть ваш сайт после промывки-повторения), длительный тайм-аут (если это был действительно человек, пытающийся купить ваш продукт, они были бы SOL и были наказаны за провал проверки), электронную почту (легко сделать с помощью ботов), факс (то же самое) или обычную почту (занимает слишком много времени).

Конечно, вместо этого можно увеличить период ожидания для каждого IP-адреса каждый раз, когда они получают время ожидания. Просто убедитесь, что вы случайно не наказываете настоящих людей.


13
Google использует этот же подход, и у них есть только IP-адреса. Часто на работе я получаю CAPTCHA, прежде чем смогу искать в Google, потому что они видят поведение, похожее на бот с одного и того же IP-адреса. Я думаю, что этот подход (CAPTCHA после бота-подобного поведения) - лучшее, что вы получите.
Росс

7
Я уже просил Google спросить у меня капчу, но это была моя вина - я использовал их в качестве калькулятора, делая десятки почти одинаковых сумм.
Маркус Даунинг

Опция CAPTCHA для меня звучит как победитель. Вы наносите вред ботам, и если вы хорошо сбалансированы, вы никогда не должны мешать вашим законным пользователям.
Xan

Вместо того, чтобы блокировать людей и использовать телефонный звонок, вы могли бы создать временный адрес электронной почты, такой как cur92Siva@site.com, но сгенерировать лицевую часть с изображением.
Сэм

Это тоже может сработать, если боты просто не привыкнут к системе и не смогут отсканировать адрес электронной почты. Суть телефонного звонка в том, что он на самом деле заставляет человека взаимодействовать и требует, чтобы пользователь сам объяснил свой голос. Владельцы ботов, вероятно, не хотят этого делать.
жк.

193

Вам нужно найти способ заставить ботов покупать вещи с завышенной ценой: 12-миллиметровый барашек: 20 долларов. Посмотрите, сколько ботов подхватили, прежде чем сценаристы решат, что вы играете в них.

Используйте прибыль, чтобы купить больше серверов и оплатить пропускную способность.


12
Что если они затем вернут товары или произведут возврат? Это может в конечном итоге стоить вам, а возвратные платежи могут повредить вашему бизнесу с процессорами кредитных карт. Боты также, вероятно, используют украденные карты, но это может усугубить уровень возвратных платежей, поскольку более высокие суммы будут оспариваться чаще.
Тай Квадрат

13
Не заряжайте их, но пометьте их как ботов, особенно за попытку купить предмет. Если какое-либо тело покупает поддельный предмет, просто пометьте их как бота и запретите их. Вы могли бы просто заблокировать их на несколько часов.
Кибби

4
Это имеет серьезное комедийное значение до тех пор, пока вы не рассердите сценариста, у которого случается больше умений, чем просто соскоба, и вызывает у вас настоящие проблемы, потому что вы его обманули.
MattBelanger

2
Если сценарист разозлится, они могут просто разоблачить себя, чтобы вы пометили их и передали правоохранительным органам.
Jacco

9
sqook: это не технологическое решение, а реальное решение. Поместить охранников с оружием в банки тоже самое. Это может показаться упрямым, но жулики тоже, так что будьте упрямы. Больно им там, где болит, пока они не остановятся.
Кристофер Махан

162

Мое решение было бы сделать бесполезной очистку экрана, добавив примерно 10 минутную задержку для ботов и скриптов.

Вот как я это сделаю:

  • Войдите и идентифицируйте любых повторных нападающих.

Вам не нужно регистрировать каждый IP-адрес при каждом попадании. Только отслеживать один из каждых 20 хитов или около того. Повторный преступник все равно будет обнаружен в случайном слежении за случаем.

  • Сохраняйте кеш своей страницы примерно на 10 минут раньше.

  • Когда повторяющийся нападающий / бот попадает на ваш сайт, дайте им 10-минутную кешированную страницу.

Они не сразу узнают, что получают старый сайт. Они смогут очистить его, и все, но они больше не выиграют ни одной гонки, потому что у "настоящих людей" преимущество будет 10 минут.

Льготы:

  • Нет хлопот или проблем для пользователей (например, CAPTCHA).
  • Реализуется полностью на стороне сервера. (не зависит от Javascript / Flash)
  • Обслуживание старой кэшированной страницы должно быть менее ресурсоемким, чем живая страница. Таким образом, вы можете уменьшить нагрузку на свои серверы!

Недостатки

  • Требуется отслеживание некоторых IP-адресов
  • Требуется хранить и поддерживать кэш старых страниц.

Что вы думаете?


1
Блин. Я потратил полтора часа на то, чтобы написать свою собственную пятивекторную схему для woot, и после долгих раздумий над своей пятой контрмерой (дросселем ботнета) мне пришлось признать свое поражение. Не работает И остальная часть моего часового решения - ну, это одно. abelenky, я снимаю тебе шляпу
Дженс Роланд,

7
Чтобы построить поверх этого: поместите IP-адреса в хэш подсчета LRU в памяти (увеличивайте и увеличивайте каждый раз, когда IP-адрес возвращается). Добавить эвристику, основанную на обратной информации IP, активности, загрузке изображений / js / cookie. Масштабируйте свой ответ тем, насколько серьезна атака, сводя к минимуму последствия ложных негативов.
SquareCog

1
(продолжение :) И моя техника никого не закрывает. Это просто дает им задержанную информацию. Никто в офисе не может выиграть приз, но это не проблема с точки зрения обслуживания клиентов / доступности.
abelenky

18
@bruceatk: Если вы дадите им специальную страницу, предназначенную только для ботов, они в конечном итоге научатся ее обнаруживать и научатся подделывать обычного клиента более точно. Давая старую страницу, у них не будет ИДЕИ, что они получают старые данные. Старые данные законны! Это просто бесполезно для соревнования / гонки.
abelenky

1
Большое спасибо тем, кто проголосовал за мою идею. Несмотря на то, что щедрость закончилась, я думаю, что эта идея имеет много достоинств с точки зрения того, что ее легче реализовать, чем капчу, с меньшей вероятностью преследовать людей и с большей вероятностью мешать ботам. Я надеюсь, что кто-то попробует это на каком-то сайте.
abelenky

54

Взгляните на эту статью Неда Батчелдера здесь . Его статья о том, как остановить спам-ботов, но те же самые методы могут легко применяться к вашему сайту.

Вместо того, чтобы останавливать ботов, заставляя людей идентифицировать себя, мы можем остановить ботов, затрудняя им успешную публикацию или заставляя их непреднамеренно идентифицировать себя как ботов. Это снимает с людей бремя и освобождает форму комментариев от видимых мер по защите от спама.

Эта техника, как я предотвращаю спам-ботов на этом сайте. Оно работает. Метод, описанный здесь, не смотрит на содержание вообще.

Некоторые другие идеи:

  • Создайте официальный механизм автоматического уведомления (RSS-канал? Twitter?), На который люди смогут подписаться, когда ваш продукт поступит в продажу. Это уменьшает потребность людей в создании сценариев.
  • Измените свою технику запутывания прямо перед тем, как новый предмет поступит в продажу. Поэтому, даже если авторы сценария могут усилить гонку вооружений, они всегда отстают на один день.

РЕДАКТИРОВАТЬ: Чтобы быть совершенно ясным, статья Неда выше описывает методы, чтобы предотвратить автоматическую ПОКУПКУ предметов путем предотвращения BOT проходить через формы для отправки заказа. Его методы не будут полезны для предотвращения того, чтобы боты соскребали домашнюю страницу с экрана, чтобы определить, когда Bandoler of Carrots появится в продаже. Я не уверен, что предотвратить это действительно возможно.

Что касается ваших комментариев об эффективности стратегий Неда: Да, он обсуждает honeypot, но я не думаю, что это его самая сильная стратегия. Его обсуждение SPINNER - первоначальная причина, по которой я упомянул его статью. Извините, я не прояснил это в своем оригинальном сообщении:

Спиннер - это скрытое поле, используемое для нескольких вещей: оно хэширует множество значений, которые предотвращают вмешательство и повторы, и используется для маскирования имен полей. Спиннер является хешем MD5:

  • Отметка времени,
  • IP-адрес клиента,
  • Идентификатор записи в блоге, который комментируется, и
  • Секрет.

Вот как вы можете реализовать это на WOOT.com:

Меняйте «секретное» значение, которое используется как часть хэша, каждый раз, когда новый предмет поступает в продажу. Это означает, что если кто-то собирается разработать BOT для автоматической покупки предметов, он будет работать только до тех пор, пока не поступит в продажу следующий товар !!

Даже если кто-то сможет быстро перестроить своего бота, все остальные пользователи уже купили BOC, и ваша проблема решена!

Другая стратегия, которую он обсуждает, - время от времени менять технику приманки (опять же, меняйте ее, когда новый предмет поступит в продажу):

  • Используйте CSS-классы (конечно, рандомизированные), чтобы установить отображение полей или содержащего элемента: нет.
  • Цвет полей такой же (или очень похожий) на фон страницы.
  • Используйте позиционирование, чтобы переместить поле за пределы видимой области страницы.
  • Сделайте элемент слишком маленьким, чтобы показать содержащееся в нем поле приманки.
  • Оставьте поля видимыми, но используйте позиционирование, чтобы покрыть их скрывающим элементом.
  • Используйте Javascript для осуществления любых этих изменений, требуя, чтобы бот имел полный движок Javascript.
  • Оставьте приманки такими же, как в других полях, но скажите людям, чтобы они ничего не вводили в них.

Я предполагаю, что моя общая идея - ИЗМЕНИТЬ ДИЗАЙН ФОРМЫ, когда каждый новый предмет поступает в продажу. Или, по крайней мере, измените его, когда новый BOC поступит в продажу.

Что, пару раз в месяц?

Если вы примете этот ответ, вы дадите мне знать, когда придет следующий? :)


+1 за RSS. Сделайте так, чтобы законные пользователи были вознаграждены.
Маркус Даунинг

RSS кажется хорошим решением, но может ли это повредить доходу от рекламы, от которого, я предполагаю, зависит этот сайт?
ТМ.

1
Я не совсем понимаю концепцию «блесны». Это просто лишняя часть данных, которая помещается в HTML <form>и отправляется после отправки? Потому что бот легко может это тоже почистить.
Понкадудл

44

В: Как бы вы помешали сценаристам отбивать ваш сайт сотни раз в секунду?
A: Вы не делаете. Нет способа предотвратить подобное поведение внешних агентов.

Вы можете использовать широкий спектр технологий для анализа входящих запросов и эвристической попытки определить, кто является, а не человеком ... но это потерпит неудачу. В конце концов, если не сразу.

Единственное жизнеспособное долгосрочное решение - изменить игру так, чтобы сайт не был дружественным к ботам или был менее привлекательным для сценаристов.

Как ты это делаешь? Ну, это другой вопрос! ;-)

...

ОК, некоторые варианты были даны (и отклонены) выше. Я не очень хорошо знаком с вашим сайтом, просмотрев его только один раз, но поскольку люди могут читать текст на изображениях, а боты не могут легко это сделать, измените объявление на изображение. Не капча , просто изображение -

  • генерировать изображение (кешируется, конечно), когда страница запрашивается
  • оставьте имя источника изображения таким же, чтобы игра не выдавалась
  • Большую часть времени изображение будет содержать обычный текст и выровнено так, чтобы отображаться как часть встроенной HTML-страницы.
  • когда игра включена, изображение меняется на текст объявления
  • В тексте объявления указывается URL-адрес и / или код, который необходимо ввести вручную, чтобы получить приз. CAPTCHA код, если хотите, но это, вероятно, не обязательно.
  • для дополнительной безопасности код может быть одноразовым токеном, сгенерированным специально для запроса / IP / агента, так что повторяющиеся запросы генерируют разные коды. Или вы можете предварительно сгенерировать несколько случайных кодов (одноразовый блокнот), если генерация по требованию слишком сложна.

Проведите временные испытания реальных людей, отвечающих на это, и игнорируйте («упс, произошла ошибка, извините! Пожалуйста, попробуйте еще раз») ответы быстрее, чем (скажем) половину этого времени. Это событие также должно вызвать оповещение разработчиков о том, что по крайней мере один бот выяснил код / ​​игру, поэтому пришло время изменить код / ​​игру.

В любом случае продолжайте периодически менять игру, даже если ее не запускают никакие боты, просто чтобы тратить время сценаристов. В конце концов, сценаристы должны устать от игры и уйти в другое место ... мы надеемся ;-)

Одно последнее предложение: когда приходит запрос на вашу главную страницу, поместите его в очередь и ответьте на запросы по порядку в отдельном процессе (для этого может потребоваться взломать / расширить веб-сервер, но, скорее всего, это произойдет. стоит). Если другой запрос от того же IP / агента поступает, когда первый запрос находится в очереди, игнорируйте его. Это должно автоматически сбросить нагрузку с ботов.

РЕДАКТИРОВАТЬ: другой вариант, помимо использования изображений, заключается в использовании JavaScript для заполнения текста купить / не покупать; боты редко интерпретируют JavaScript, поэтому они не увидят его


1
Я хотел бы убедиться, что «текст по умолчанию» также меняется. Это помешает приложению для очистки просто сравнивать изображение с предыдущим и ждать значительных изменений. +1. Отличная идея.
Фрэнк Крюгер

1
Поправка к «окончательному предложению»: если второй запрос поступает с адреса во время ожидания предыдущего запроса с того же адреса, отбросьте первый запрос и поместите второй в очередь. Это будет действовать как штраф за удар по сайту вместо того, чтобы позволить загрузке страницы.
Дейв Шерохман

@ [Фрэнк Крюгер]: я думал, что подразумевал это, но после перечитывания я думаю, что я не сделал - спасибо, что указал на это! Также может быть полезно, чтобы текстовое изображение по умолчанию изменилось всего на несколько пикселей, чтобы связываться со сравнениями, и / или генерировать почти невидимый текст в виде водяного знака для дальнейшего беспорядка с ботами
Стивен А. Лоу,

@ [Дейв Шерохман]: вы можете, но это может привести к тому, что очередь откачается; может быть, лучше просто отбросить новые запросы, чтобы немедленно сбросить нагрузку - тестирование / профилирование определенно покажет, что лучше, но спасибо за хорошее предложение!
Стивен А. Лоу

Не могу вынести, что ты сказал ему, чтобы в основном сдаться, я знаю, ты думаешь, что это невозможно, но я не согласен. Если есть желание, всегда есть способ. Такое легкое поражение действительно скучно и печально, если ориентальный плакат читает, это можно сделать, но после анализа журналов трафика необходимо будет разработать индивидуальное решение, вы можете помешать текущим методам и доказать это в будущем, чтобы предотвратить неиспользованные методы. Кроме того, JavaScript, веб-браузер управления запускает JavaScript в режиме реального времени, нет необходимости в другом движке - они могут связываться с Dom и запускать свой собственный JavaScript! Оппс
Erx_VB.NExT.Coder

30

Я не знаю, насколько это возможно: ... перейти в наступление.

Выясните, какие данные сканируют боты. Подайте им данные, которые они ищут, когда вы НЕ продаете дерьмо. Делайте это так, чтобы не беспокоить и не запутывать пользователей. Когда боты запустят вторую фазу, они войдут в систему и заполнят форму, чтобы купить roombas за 100 долларов вместо BOC. Конечно, это предполагает, что боты не особенно устойчивы.

Другая идея состоит в том, чтобы реализовать случайные падения цен в течение периода продажи сумок. Кто купил бы случайную дерьмовую сумку за 150 долларов, когда вы ясно заявили, что она стоит всего 20 долларов? Никто, кроме чрезмерно усердных ботов. Но через 9 минут это 35 долларов ... потом через 17 минут это 9 долларов. Или что угодно.

Конечно, короли-зомби смогут реагировать. Смысл в том, чтобы их ошибки стали для них очень дорогостоящими (и заставили их платить вам за то, что вы сражаетесь с ними).

Все это предполагает, что вы хотите разозлить некоторых бот-лордов, что не может быть рекомендовано на 100%.


Не думайте, что злить бот-лордов желательно, но у вас есть интересная идея.
Шон Миллер

7
Я согласен, и мне нравится эта повторяющаяся идея дурачить ботов, чтобы они делали фиктивные покупки. Это окупаемость, и, поскольку они уже нарушают ToS, они вряд ли могут жаловаться.
Николас Флинт

22

Таким образом, проблема, по-видимому, заключается в следующем: боты хотят, чтобы их "bag 'o дерьмо", потому что он имеет высокую воспринимаемую стоимость при низкой воспринимаемой цене. Иногда вы предлагаете этот предмет, и боты прячутся, ожидая, пока он появится, и затем они покупают предмет.

Поскольку кажется, что владельцы ботов получают прибыль (или потенциально получают прибыль), хитрость заключается в том, чтобы сделать это невыгодным для них, побуждая их покупать дерьмо.

Во-первых, всегда предлагайте "bag 'o crap".

Во-вторых, убедитесь, что дерьмо обычно дерьмо.

В-третьих, часто вращайте дерьмо.

Просто нет?

Вам понадобится постоянное "почему наше дерьмо иногда дерьмо?" ссылка рядом с предложением объяснить людям, что происходит.

Когда бот видит, что дерьмо есть, и дрянь автоматически покупается, получатель будет ужасно расстроен тем, что заплатил 10 долларов за сломанную зубочистку. А потом пустой мешок для мусора. А потом немного грязи с нижней части вашей обуви.

Если они купят достаточно этого дерьма за относительно короткий промежуток времени (и у вас повсюду большие заявления об отказе от ответственности, объясняющие, почему вы это делаете), они потеряют справедливую «сумку за наличные» на вашем » сумка "дерьмо". Даже вмешательство человека с их стороны (проверка того, что дерьмо не является дерьмом) может потерпеть неудачу, если вы будете часто вращать дерьмо. Черт возьми, может быть, боты заметят и не купят ничего, что было в ротации слишком короткое время, но это означает, что люди купят не дерьмо.

Черт, ваши постоянные клиенты могут быть настолько удивлены, что вы можете превратить это в огромную маркетинговую победу. Начните публиковать информацию о том, сколько карпа продается. Люди вернутся, чтобы посмотреть, как сильно укушены боты.

Обновление: я ожидаю, что вы могли бы получить несколько звонков сразу с жалобами людей. Я не думаю, что вы можете остановить это полностью. Однако, если это убивает ботов, вы всегда можете остановить его и перезапустить позже.


15
  1. Продайте предмет людям, не пишущим сценарий.

  2. Поддерживайте работу сайта на скорости, не замедленной ботами.

  3. Не доставляйте «нормальным» пользователям никаких заданий, чтобы доказать, что они люди.

Вы, вероятно, не хотите слышать это, но # 1 и # 3 являются взаимоисключающими.

В интернете никто не знает, что ты собака

Ну, никто не знает, что ты бот тоже. Нет никакого программного способа сказать, есть ли человек на другом конце соединения, не требуя, чтобы человек сделал что-то. Предотвращение работы скриптов / ботов в Интернете - вот почему CAPTCHA были изобретены. Не похоже, что это какая-то новая проблема, на которую не затрачено много усилий. Если бы был лучший способ сделать это, который не требовал бы реальных пользователей, как это делает CAPTCHA, все бы уже использовали его.

Я думаю, вам нужно признать тот факт, что если вы хотите, чтобы боты не попадали на страницу заказа, хорошая капча - единственный способ сделать это. Если спрос на ваше случайное дерьмо достаточно высок, и люди готовы пойти на все, чтобы получить его, CAPTCHA не откладывает законных пользователей.


+1, если они этого хотят, капча их не остановит ... и за мультфильм.
Мартин

13

Метод, используемый Woot для борьбы с этой проблемой, меняет игру - буквально. Когда они представляют чрезвычайно желаемый предмет для продажи, они заставляют пользователей играть в видеоигры, чтобы заказать их.

Это не только успешно борется с ботами (они могут легко вносить незначительные изменения в игру, чтобы избежать автоматических игроков, либо даже предоставлять новую игру для каждой продажи), но также создает впечатление, что пользователи "выигрывают" желаемый предмет, замедляя процесс заказа.

Он все еще продается очень быстро, но я думаю, что решение хорошее - переоценка проблемы и изменение параметров привели к успешной стратегии, где просто технических решений просто не было.


Вся ваша бизнес-модель основана на принципах «первым пришел - первым обслужен». Вы не можете сделать то, что сделали радиостанции (они больше не делают первого звонящего победителем, они делают 5-го, 20-го или 13-го звонящего победителем) - это не соответствует вашей основной функции.

Нет, нет способа сделать это без изменения опыта заказа для реальных пользователей.

Допустим, вы реализуете все эти тактики. Если я решу, что это важно, я просто заставлю 100 человек работать со мной, мы создадим программное обеспечение для работы на наших 100 отдельных компьютерах и будем заходить на ваш сайт 20 раз в секунду (5 секунд между обращениями для каждого пользователя / куки / аккаунт / IP адрес).

У вас есть два этапа:

  1. Просмотр главной страницы
  2. заказ

Вы не можете поставить капчу, блокирующую # 1 - это приведет к потере реальных клиентов («Что? Я должен решить капчу каждый раз, когда я хочу видеть последний woot?!?»).

Моя небольшая группа следит за тем, чтобы вместе мы получали около 20 проверок в секунду, и тот, кто увидит изменение, сначала предупреждает всех остальных (автоматически), кто снова загрузит первую страницу, перейдет по ссылке заказа и выполнит транзакцию ( что также может произойти автоматически, если вы не внедрили капчу и не измените ее для каждого wootoff / boc).

Вы можете поставить капчу перед # 2, и хотя вы не хотите это делать, это может быть единственным способом убедиться, что даже если боты смотрят главную страницу, реальные пользователи получают продукты.

Но даже с капчей моя маленькая группа из 100 все равно имела бы значительное преимущество первопроходца - и вы никак не можете сказать, что мы не люди. Если вы начнете синхронизировать наши обращения, мы просто добавим немного дрожания. Мы могли случайным образом выбрать, какой компьютер должен был обновляться, поэтому порядок доступа постоянно меняется, но все равно выглядит достаточно похожим на человека.

Во-первых, избавьтесь от простых ботов

Вам нужен адаптивный брандмауэр, который будет наблюдать за запросами, и если кто-то делает очевидную глупость - обновляет более одного раза в секунду на одном и том же IP-адресе, то использует тактику для их замедления (отбрасывать пакеты, отправлять обратно отказанные или 500 ошибок и т. Д.). ).

Это должно значительно снизить ваш трафик и изменить тактику, которую используют пользователи ботов.

Во-вторых, сделайте сервер невероятно быстрым.

Вы действительно не хотите слышать это ... но ...

Я думаю, что вам нужно полностью индивидуальное решение снизу вверх.

Вам не нужно связываться со стеком TCP / IP, но вам может потребоваться разработка очень, очень, очень быстрого настраиваемого сервера, специально предназначенного для корреляции пользовательских соединений и надлежащего реагирования на различные атаки.

Apache, lighthttpd и т. Д. Отлично подходят для гибкости, но вы запускаете специализированный веб-сайт, и вам действительно нужно уметь и делать больше, чем нынешние серверы (как при обработке трафика, так и при соответствующей борьбе с ботами). ).

Размещая в основном статическую веб-страницу (обновляемую каждые 30 секунд или около того) на пользовательском сервере, вы не только сможете обрабатывать в 10 раз больше запросов и трафика (поскольку сервер не выполняет ничего, кроме получения запроса и чтения страница из памяти в буфер TCP / IP), но она также даст вам доступ к метрикам, которые могут помочь вам замедлить работу ботов. Например, сопоставляя IP-адреса, вы можете просто заблокировать более одного соединения в секунду на один IP. Люди не могут двигаться быстрее этого, и даже люди, использующие один и тот же NAT-адрес, будут блокироваться редко. Вы хотели бы сделать медленный блок - оставьте соединение в покое на целую секунду, прежде чем официально завершить сеанс. Это может привести к брандмауэру, чтобы дать более длительные блоки особенно вопиющим преступникам.

Но реальность такова, что независимо от того, что вы делаете, нет никакого способа отличить человека от бота, когда он специально создан человеком для одной цели. Бот - это просто прокси для человека.

Вывод

В конце концов, вы не можете отличить человека и компьютер за просмотр главной страницы. Вы можете остановить ботов на этапе заказа, но у пользователей ботов все еще есть преимущество первопроходца, и у вас все еще есть огромная нагрузка для управления.

Вы можете добавить блоки для простых ботов, которые поднимут планку, и меньше людей будут беспокоиться об этом. Этого может быть достаточно.

Но без изменения вашей базовой модели вам не повезло. Лучшее, что вы можете сделать, - это позаботиться о простых случаях, сделать сервер настолько быстрым, что обычные пользователи не заметят, и продать столько товаров, что даже если у вас будет несколько миллионов ботов, их получит столько обычных пользователей, сколько они захотят. ,

Вы можете подумать о создании honeypot и пометить учетные записи пользователей как пользователей ботов, но это будет иметь негативную обратную реакцию сообщества.

Каждый раз, когда я думаю о «ну, как насчет этого ...», я всегда могу противопоставить это подходящей стратегии бота.

Даже если вы сделаете первую страницу капчей, чтобы попасть на страницу заказа («Кнопка заказа этого элемента синего цвета с розовыми блестками, где-то на этой странице»), боты просто откроют все ссылки на странице и будут использовать любую, какая придет вернуться со страницей заказа. Это просто не способ победить.

Сделайте серверы быстрыми, вставьте reCaptcha (единственный, который я нашел, который нелегко обмануть, но он, вероятно, слишком медленный для вашего приложения) на странице заказа, и подумайте о способах слегка изменить модель, чтобы обычные пользователи имеют такой же шанс, как и пользователи ботов.

-Адам


«Каждый раз, когда я думаю о« ну, как насчет этого ... », я всегда могу противопоставить это подходящей стратегии бота». При разработке своей системы аутентификации я пришел к одному и тому же выводу, НО - здесь есть одно отличие, заставляет меня усомниться в этой логике: ложные срабатывания не являются большой проблемой
Дженс Роланд

(продолжение) Например, если несколько настоящих пользователей здесь и там не могут получить специальные предложения, это на самом деле не является серьезным нарушителем (если они не знают, что им не хватает). В системе AUTH, это является dealbreaker - вы не хотите , чтобы пользователи быть предотвращено входа в
Jens Roland

(продолжение) Это означает, что вы можете сделать систему Woot более строгой, чем «традиционные» меры противодействия спамботам, и из-за этого вы можете эффективно блокировать ботов.
Дженс Роланд

(однако, теперь, когда я обдумал этот вопрос, я не могу придумать, как это работает, и это также предотвратит «атаки» дистрибьютера / ботнета)
Дженс Роланд,

11

Отказ от ответственности: Этот ответ совершенно не связан с программированием. Тем не менее, он в первую очередь пытается атаковать причину сценариев.

Другая идея заключается в том, что если у вас действительно есть ограниченное количество для продажи, почему бы вам не изменить его по методике «первым пришел - первым обслужен»? Если, конечно, реклама не является частью вашей маркетинговой схемы.

Есть много других вариантов, и я уверен, что другие могут подумать о некоторых других:

  • очередь заказов (система предварительного заказа) - некоторые сценарии могут по-прежнему находиться в начале очереди, но, вероятно, быстрее просто ввести информацию вручную.

  • лотерейная система (каждый, кто пытается ее заказать, входит в систему) - таким образом, люди со сценариями имеют те же шансы, что и те, у кого нет.

  • Очередь срочных приоритетов - если действительно высокая воспринимаемая ценность, люди могут быть готовы платить больше. Реализуйте очередь заказов, но позволяйте людям платить больше, чтобы их помещали в очередь выше.

  • аукцион (в этом заслуга Дэвида Шмитта, комментарии мои). Люди все еще могут использовать скрипты, чтобы стрелять в последнюю минуту, но это не только меняет структуру ценообразования, люди ожидают, что будут бороться с другими , Вы также можете сделать что-то, чтобы ограничить количество ставок за определенный период времени, заставить людей заранее позвонить для получения кода авторизации и т. Д.


1
Спасибо. Видите, я знал, что были другие.
жк.

любая лотерейная система будет просто перегружена, чтобы увеличить шансы в пользу бота
Энди Дент

Нет, если вы ограничите его одним адресом на человека / домохозяйство / (физический) адрес, это не будет
lc.

11

Независимо от того, насколько безопасными считали нацисты их связь, союзники часто ломали их сообщения. Независимо от того, как вы пытаетесь помешать ботам использовать ваш сайт, владельцы ботов будут обходить его. Извините, если это делает вас нацистами :-)

Я думаю, что требуется другое мышление

  • Не пытайтесь остановить ботов от использования вашего сайта
  • Не идите на исправление, которое работает сразу, играйте в длинную игру

Имейте в виду, что не имеет значения, является ли клиент вашего сайта человеком или ботом, оба просто платят клиентам; но одно имеет несправедливое преимущество перед другим. Некоторые пользователи без особой социальной жизни (отшельники) могут быть такими же раздражающими для других пользователей вашего сайта, как и боты.

Запишите время, когда вы публикуете предложение, и время, когда аккаунт решает его купить.

Это дает вам отчет о том, как быстро клиент покупает вещи.

Изменяйте время суток, когда вы публикуете предложения.

Например, иметь 3-часовое окно, начинающееся в какое-то непонятное время суток (полночь?). Только боты и отшельники будут постоянно обновлять страницу в течение 3 часов, чтобы получить заказ в течение нескольких секунд. Никогда не меняйте базовое время, только размер окна.

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

01: Вы можете увидеть, какие аккаунты регулярно покупают товары в течение нескольких секунд после их появления. Предполагая, что они могут быть ботами.

02: Вы также можете посмотреть на окно времени, использованное для предложений, если оно составляет 1 час, то ранними покупателями будут люди. Человек редко обновляется в течение 4 часов. Если прошедшее время между публикацией / покупкой не зависит от продолжительности окна, то это бот. Если время публикации / покупки мало для маленьких окон и увеличивается для больших окон, это отшельник!

Теперь вместо того, чтобы мешать ботам использовать ваш сайт, у вас есть достаточно информации, чтобы сказать вам, какие учетные записи, безусловно, используются ботами, и какие учетные записи, вероятно, будут использоваться отшельниками. То, что вы делаете с этой информацией, зависит от вас, но вы, безусловно, можете использовать ее, чтобы сделать свой сайт более справедливым для людей, у которых есть жизнь.

Я думаю, что запрещать учетные записи ботов было бы бессмысленно, это было бы похоже на то, чтобы позвонить Гитлеру и сказать: «Спасибо за позиции ваших подводных лодок!» Каким-то образом вам нужно использовать информацию таким образом, что владельцы аккаунтов не поймут. Посмотрим, смогу ли я что-нибудь придумать .....

Обработка заказов в очереди:

Когда клиент размещает заказ, он сразу же получает электронное письмо с подтверждением, сообщающее ему, что его заказ помещается в очередь и будет уведомлен, когда он будет обработан. Я сталкиваюсь с подобными вещами при заказе / рассылке на Amazon, и это меня совсем не беспокоит. Я не возражаю, если через несколько дней я получу электронное письмо с сообщением о том, что мой заказ отправлен, если я сразу получу электронное письмо с сообщением, что Амазонка знает, что я хочу книгу. В вашем случае это будет электронная почта для

  1. Ваш заказ был размещен и находится в очереди.
  2. Ваш заказ был обработан.
  3. Ваш заказ отправлен.

Пользователи думают, что они в честной очереди. Обрабатывайте свою очередь каждые 1 час, чтобы обычные пользователи также испытывали ее, чтобы не вызывать подозрений. Обрабатывать заказы с аккаунтов ботов и отшельников можно только после того, как они были в очереди в течение «среднего времени заказа человека + х часов». Эффективно сокращая ботов для людей.


Что это обозначает? :-)
Питер Моррис

Ах, спасибо :-) Я упоминаю о нацистах, потому что меня очень интересуют рассказы о Второй мировой войне о парке Блетчли :-) В некоторых историях о том, как сообщения были разбиты, использовался другой ментальный подход к проблеме, например, предполагая, что операторы слишком ленивы, чтобы изменить коды с прошлой ночи :-)
Питер Моррис

10

Я говорю, выставить информацию о ценах с помощью API. Это не интуитивное решение, но оно помогает вам контролировать ситуацию. Добавьте некоторые ограничения в API, чтобы сделать его немного менее функциональным, чем веб-сайт.

Вы можете сделать то же самое для заказа. Вы можете экспериментировать с небольшими изменениями в функциональности / производительности API, пока не получите желаемый эффект.

Есть прокси и ботнеты, чтобы победить проверки IP. Есть сценарии чтения капчи, которые очень хороши. В Индии даже есть группы рабочих, которые за небольшую цену побеждают капчи. Любое решение, которое вы можете найти, может быть разумно побеждено. Даже решения Неда Батчелдера можно обойти, используя элемент управления WebBrowser или другой смоделированный браузер в сочетании со списком ботнетов или прокси.


8

В настоящее время для этого мы используем балансировщики нагрузки BigIP последнего поколения от F5. BigIP имеет расширенные функции управления трафиком, которые могут идентифицировать скребки и ботов на основе частоты и моделей использования даже из множества источников за одним IP. Затем он может регулировать их, предоставлять им альтернативный контент или просто помечать их заголовками или файлами cookie, чтобы вы могли идентифицировать их в коде своего приложения.


Это именно то решение, которое я собирался предложить, особенно автоматическое регулирование. Вы можете свернуть свои собственные, просто полагаясь на регулярный или расширенный анализ сигналов.
WDS

7

Во-первых, позвольте мне напомнить, что нам нужно сделать здесь. Я понимаю, что я просто перефразирую исходный вопрос, но важно, чтобы мы получили это 100% прямо, потому что есть много хороших предложений, которые дают 2 или 3 из 4 правильных, но, как я покажу, вам понадобится многогранный подход, чтобы покрыть все требования.

Требование 1: Избавиться от «хлопанья ботом»:

Ускоренный «грохот» вашей первой страницы ухудшает производительность вашего сайта и лежит в основе проблемы. «Хлопание» происходит как от ботов с одним IP, так и, предположительно, от ботнетов. Мы хотим избавиться от обоих.

Требование 2: Не связывайтесь с пользовательским интерфейсом:

Мы могли бы довольно эффективно исправить ситуацию с ботом, внедрив неприятную процедуру проверки, например, позвонив человеку-оператору, решив кучу CAPTCHA или подобное, но это все равно, что заставить каждого невинного пассажира самолета прыгать через сумасшедшие обручи безопасности только для малой вероятности ловить самых глупых террористов. Ой, подождите - мы на самом деле это делаем. Но давайте посмотрим , можем ли мы не сделать это на woot.com.

Требование 3: Избежать «гонки вооружений»:

Как вы упомянули, вы не хотите быть втянутыми в гонку вооружений спамботов. Таким образом, вы не можете использовать простые настройки, такие как скрытые или перемешанные поля формы, математические вопросы и т. Д., Поскольку они по сути являются мерами неясности, которые можно легко определить и обойти.

Требование 4: Срыв ботов «тревоги»:

Это может быть самым сложным из ваших требований. Даже если мы сможем выполнить эффективную задачу проверки личности, боты все равно смогут опросить вашу главную страницу и предупредить сценариста о появлении нового предложения. Мы хотим, чтобы эти боты также были неосуществимыми. Это более сильная версия первого требования, поскольку боты не только не могут выдавать быстродействующие запросы, снижающие производительность, но и не могут выдавать достаточно повторных запросов, чтобы вовремя отправить «тревогу» в сценарий, чтобы выиграть предложение.


Хорошо, давайте посмотрим, сможем ли мы удовлетворить все четыре требования. Во-первых, как я уже говорил, ни одна мера не поможет. Вам нужно будет объединить пару трюков, чтобы добиться этого, и вам придется проглотить две неприятности:

  1. Небольшое количество пользователей будет необходимо прыгать через обручи
  2. Небольшое количество пользователей не сможет получить специальные предложения

Я понимаю, что это раздражает, но если мы сможем сделать «маленькое» число достаточно маленьким , я надеюсь, что вы согласитесь, что положительные моменты перевешивают отрицательные.

Первая мера: пользовательское регулирование:

Это легкая задача, и я уверен, что вы уже делаете это. Если пользователь вошел в систему и продолжает обновлять 600 раз в секунду (или что-то в этом роде), вы перестаете отвечать и говорите ему, чтобы он остыл. На самом деле, вы, вероятно, дросселируете его запросы значительно раньше, но вы поняли идею. Таким образом, авторизованный бот будет заблокирован / заблокирован, как только он начнет опрашивать ваш сайт. Это легкая часть. Боты, не прошедшие проверку подлинности, - это наша настоящая проблема.

Вторая мера: некоторая форма регулирования IP, как предлагают почти все:

Независимо от того, что вам придется делать некоторые удушения на основе IP, чтобы помешать «хлопать бот». Поскольку для вас важно разрешить неаутентифицированным (не вошедшим в систему) посетителям получать специальные предложения, изначально у вас есть только IP-адреса, и хотя они не идеальны, они делают работу против одного IP - бот. Ботнеты - это другой зверь, но я вернусь к ним. Сейчас мы сделаем несколько простых ударов, чтобы победить быстрых ботов с одним IP.

Падение производительности незначительно, если вы запускаете проверку IP перед любой другой обработкой, используете прокси-сервер для логики регулирования и сохраняете IP-адреса в древовидной структуре, оптимизированной для поиска в memcached.

Третья мера: закрытие дросселя с помощью кэшированных ответов:

При быстром срабатывании ботов с одним IP-адресом нам все еще приходится обращаться к медленным ботам с одним IP, т.е. боты, которые специально настроены так, чтобы «летать под радаром», размещая запросы немного дальше друг от друга, чем предотвращает регулирование.

Чтобы мгновенно сделать медленных ботов с одним IP бесполезными, просто используйте стратегию, предложенную abelenky: раздайте 10-минутные кэшированные страницы всем IP-адресам, которые были обнаружены за последние 24 часа (или около того). Таким образом, каждый IP получает один «шанс» в день / час / неделю (в зависимости от выбранного вами периода), и не будет видимого раздражения для реальных пользователей, которые просто нажимают «перезагрузить», за исключением того, что они не выигрывают предложение.

Прелесть этой меры в том, что она также мешает «тревожным ботам», если они не происходят из ботнета.

(Я знаю, что вы, вероятно, предпочли бы, чтобы реальным пользователям было разрешено обновляться снова и снова, но нет способа отличить человека, обновляющего спам, от бота, рассылающего запросы, без CAPTCHA или подобного)

Четвертая мера: reCAPTCHA:

Вы правы, что CAPTCHA наносит вред пользовательскому опыту и его следует избегать. Тем не менее, в _one_ ситуации они могут быть вашим лучшим другом: если вы разработали очень строгую систему для предотвращения ботов, то - из-за ее ограниченности - также ловит ряд ложных срабатываний; тогда CAPTCHA, служащая последним средством , позволит тем реальным пользователям, которые попали в ловушку вашего регулирования (таким образом, избежать досадных ситуаций DoS).

Самое приятное, конечно, это когда ВСЕ боты попадают в вашу сеть, а CAPTCHA беспокоит крайне мало реальных пользователей.

Если вы, обслуживая 10-минутные кэшированные страницы, также предлагаете альтернативный, необязательный , проверенный CAPTCHA «обновитель главной страницы», то люди, которые действительно хотят обновлять страницу , все же могут сделать это без получения старой кэшированной страницы. , но за счет необходимости решать CAPTCHA для каждого обновления. То есть раздражение, но дополнительные один раз для твердолобых пользователей, которые имеют тенденцию быть более снисходительной , потому что они знают , что они игровая систему , чтобы улучшить свои шансы, и что улучшенные возможности не приходят бесплатно.

Пятая мера: Приманка дерьмо:

У Кристофера Махана была идея, которая мне очень понравилась, но я бы придал ей другое значение. Каждый раз, когда вы готовите новое предложение, готовьте также два других «предложения», которые ни один человек не выберет, например, 12-мм грецкий орех за 20 долларов. Когда предложение появится на первой странице, поместите все три «предложения» на одном изображении с номерами, соответствующими каждому предложению. Когда пользователь / бот на самом деле переходит к заказу предмета, ему нужно будет выбрать (радио-кнопку) то предложение, которое они хотят, и, поскольку большинство ботов просто догадываются, в двух из трех случаев боты будут покупать ничего не стоящие мусор.

Естественно, это не относится к «тревожным ботам», и есть (тонкий) шанс, что кто-то сможет построить бота, который сможет выбрать правильный предмет. Однако риск случайной покупки мусора должен заставить сценаристов полностью отказаться от полностью автоматизированных ботов.

Шестая мера: дросселирование ботнета:

[Удалено]

Хорошо ............ Теперь я провел большую часть вечера, размышляя об этом, пробуя разные подходы ... глобальные задержки ... токены на основе файлов cookie ... обслуживание в очереди ... "незнакомец душит" .... И это просто не работает. Это не так. Я понял, что основная причина, по которой вы еще не приняли никакого ответа, заключается в том, что никто не предложил способ предотвратить атаку распределенной / зомби-сети / ботнета .... поэтому я действительно хотел взломать его. Мне кажется, я решил проблему с ботнетом для аутентификации в другом потоке , поэтому у меня также были большие надежды на вашу проблему. Но мой подход не относится к этому. У вас есть только IP-адреса, и достаточно большой ботнет не обнаруживает себя ни в одном анализе, основанном на IP-адресах.

Итак, вот оно : моя шестая мера - ничто. Ничего. Zip. Если ботнет не мал и / или достаточно быстро , чтобы попасть в обычный IP дросселем, я не вижу каких - либо эффективных мер против ботнетов , которая не связана явного человека верификации , такие как CAPTHAs. Извините, но я думаю, что сочетание пяти вышеперечисленных мер - ваш лучший выбор. И вы, вероятно, могли бы справиться с одним только 10-минутным трюком Абеленки.


Очень хорошо заявлено. Спасибо за ваш вклад.
Шон Миллер

3. не означает ли это, что вы предоставляете старые страницы всем AOL, если предположить, что из пула IP AOL поступило несколько ботов?
Энди Дент

@Andy: только если все пользователи AOL имеют одинаковые IP-адреса, которые боты использовали при рассылке спама.
Дженс Роланд

6

Как насчет введения задержки, которая требует взаимодействия с человеком, как своего рода «игра CAPTCHA». Например, это может быть небольшая флэш-игра, в которой в течение 30 секунд они должны взрывать клетчатые шары и избегать взрывов сплошных шаров (избегая проблем с дальтонизмом!). В игре будет задано начальное число случайных чисел, и то, что игра передаст обратно на сервер, будет координатами и отметками времени нажатых точек вместе с используемым начальным числом.

На сервере вы моделируете игровую механику, используя это начальное число, чтобы увидеть, действительно ли щелчки лопнули шары. Если они это сделали, они были не только людьми, но и потратили 30 секунд, чтобы утвердить себя. Дайте им идентификатор сессии.

Вы позволяете этому идентификатору сеанса делать то, что ему нравится, но если делает слишком много запросов, они не могут продолжить без повторного воспроизведения.


Забавная идея, но полностью и полностью разрушает пользовательский опыт. Нормальные люди, посещающие сайт, будут думать об этом как о 30 секундах бесполезного ожидания. 30 секунд бесполезного ожидания при просмотре интернета или использовании веб-приложений никоим образом не приемлемы.
Арве Систад

нормальные люди, посещающие их, не будут вызывать задержку, только кто-то делает необоснованное количество запросов. Идея является немного языком в щеку, но я могу видеть , что это работает , если целевая аудитория используются для маленьких флеш игры :)
Paul Dixon

Занимательная (и почти безошибочная) идея, но я был бы раздражен (особенно во время безумства Bag Of Canaries), и это потребовало бы значительно большей обработки на их серверах для выполнения проверки (что является большой частью проблемы). Также боты могут лопать пузыри. Вам придется часто менять правила.
Groxx

Предполагая, что каждой игре выдан токен, и вы знаете время, когда вы выпустили токены, вам нужно попытаться обработать токен только один раз, и только через 30 и, скажем, через 300 секунд после его выпуска. Прелесть этого в том, что даже если бот лопнул, он все еще ждал 30 секунд, чтобы сделать это.
Пол Диксон

Плюс давайте не будем забывать, что идея заключается в ограничении трафика. На странице может быть написано: «Мы очень заняты, если вы спешите, поиграйте в эту игру на 30 секунд или повторите попытку через несколько минут ...»
Пол Диксон,

5

Уже опубликовано несколько других / лучших решений, но для полноты я решил упомянуть следующее:

Если ваша главная проблема - снижение производительности, и вы смотрите на настоящий удар , тогда вы на самом деле имеете дело с атакой DoS, и вам, вероятно, следует попытаться справиться с ней соответствующим образом. Один из распространенных подходов - просто отбрасывать пакеты с IP в брандмауэре после количества соединений в секунду / минуту / и т. Д. Например, стандартный брандмауэр Linux iptables имеет стандартную функцию сопоставления операций 'hashlimit', которую можно использовать для сопоставления запросов соединения за единицу времени с IP-адресом.

Хотя этот вопрос, вероятно, был бы более уместным для следующего SO-производного, упомянутого в последнем SO-подкасте, он еще не запущен, поэтому я думаю, что это нормально, чтобы ответить :)

РЕДАКТИРОВАТЬ:
Как отмечает novatrust, все еще существуют интернет-провайдеры, которые на самом деле НЕ назначают IP своим клиентам, поэтому клиент-скрипт такого провайдера фактически отключил бы всех клиентов от этого провайдера.


К сожалению, некоторые интернет-провайдеры имеют общие IP-адреса выхода. Например, AOL имеет ограниченную коллекцию IP-адресов, под которыми участники отображаются: webmaster.info.aol.com/proxyinfo.html Ваше решение наложит жесткое ограничение на количество пользователей для многих интернет-провайдеров.
Роберт Венейблс

Вау, я удивлен Вещи, как это все еще продолжается?
Фальстро

Святая корова. Я предполагаю, что AOL не будет заходить на мой сайт тогда.
Карл

5

Напишите обратный прокси-сервер на сервере Apache перед вашим приложением, который реализует Tarpit (статья в Википедии) для наказания ботов. Он будет просто управлять списком IP-адресов, которые подключены за последние несколько секунд. Вы обнаруживаете пакет запросов с одного IP-адреса, а затем экспоненциально задерживаете эти запросы, прежде чем ответить.

Конечно, несколько человек могут приходить с одного и того же IP-адреса, если они подключены к сети через NAT, но маловероятно, что человек будет против того, чтобы ваше время ответа составляло от 2 мс до 4 мс (или даже 400 мс), тогда как бот будет затруднен по нарастающей задержке довольно быстро.


4
  1. Предоставьте канал RSS, чтобы они не поглощали вашу пропускную способность.
  2. При покупке заставьте всех ждать в течение случайного промежутка времени до 45 секунд или чего-то, в зависимости от того, что именно вы ищете. Каковы ваши временные ограничения?
  3. Дайте каждому 1 минуту, чтобы ввести свое имя для рисунка, а затем случайным образом выбрать людей. Я думаю, что это самый справедливый путь.
  4. Контролируйте учетные записи (включайте несколько раз в сеанс и сохраняйте их?) И добавляйте задержки к учетным записям, которые кажутся ниже порога человеческой скорости. Это, по крайней мере, заставит ботов запрограммироваться на замедление и соревнование с людьми.

Это интересные концепции, но «случайный выбор» и период ожидания удаляют большую часть «безумия», от которого, как мне кажется, зависит работа. Забирая срочность, вид рушит сайт.
ТМ.

Если это похоже на рисунок, то ему приходится иметь дело с законами об азартных играх. Не стоит того.
jmucchiello

4

Прежде всего, по определению, невозможно поддерживать транзакции без сохранения состояния, то есть по-настоящему анонимные, и в то же время иметь возможность отделять ботов от законных пользователей.

Если мы сможем принять предпосылку, что мы можем наложить определенную цену на совершенно нового шутника-посетителя на его первых страницах, я думаю, у меня есть возможное решение. Из-за отсутствия лучшего названия я собираюсь назвать это решение «визитом в DMV».

Допустим, есть автосалон, который предлагает новый автомобиль каждый день, и что в некоторые дни вы можете купить экзотический спортивный автомобиль за 5 долларов США (лимит 3), плюс 5 долларов США за доставку в пункт назначения.

Уловка в том, что дилерский центр требует, чтобы вы посетили дилерский центр и предъявили действительные водительские права, прежде чем войти через дверь, чтобы посмотреть, какой автомобиль продается. Кроме того, вы должны были указать действительные водительские права, чтобы совершить покупку.

Таким образом, посетителю, впервые посещающему этот автосалон (назовем его Бобом), отказывают во въезде и направляют в офис DMV (который удобно расположен по соседству) для получения водительских прав.

Другие посетители с действительными водительскими правами допускаются после показа его водительских прав. Человек, который раздражает себя, слоняясь весь день, приставая к продавцам, захватывая брошюры и освобождая от бесплатного кофе и печенья, в конечном итоге будет отвергнут.

Теперь вернемся к Бобу без лицензии - все, что ему нужно сделать, это один раз пережить визит в DMV. После этого он может посещать автосалон и покупать автомобили в любое время, если захочет, если только он случайно не оставит свой кошелек дома или его лицензия не будет уничтожена или аннулирована.

Водительские права в этом мире почти невозможно подделать.

Посещение DMV предполагает сначала получение формы заявки в очереди «Начни здесь». Боб должен перенести заполненное заявление в окно № 1, где первый из многих унылых государственных служащих возьмет его заявление, обработает его, и, если все в порядке, поставит печать на окне и отправит его в следующее окно. Итак, Боб переходит от окна к окну, ожидая, когда пройдёт каждый шаг его приложения, пока он, наконец, не доберется до конца и не получит лицензию своего привода.

Нет смысла пытаться «замкнуть накоротко» DMV. Если формы не заполняются правильно в трех экземплярах или если в каком-либо окне даны неправильные ответы, приложение разрывается и несчастный клиент отправляется обратно на старт.

Интересно, что независимо от того, насколько полно или пусто офис, для обслуживания в каждом последующем окне требуется примерно одинаковое количество времени. Даже когда вы единственный человек в очереди, персоналу нравится заставлять вас подождать минуту за желтой линией, прежде чем произнести «Далее!».

Однако в DMV все не так ужасно. Пока идет ожидание и обработка, чтобы получить лицензию, вы можете посмотреть очень интересный и информативный рекламный ролик для автосалона, пока вы находитесь в вестибюле DMV. На самом деле, информационный ролик работает достаточно долго, чтобы покрыть количество времени, которое вы тратите на получение лицензии.

Немного более техническое объяснение:

Как я сказал на самом верху, становится необходимым иметь некоторую информацию о состоянии отношений клиент-сервер, которая позволяет вам отделять людей от ботов. Вы хотите сделать это таким образом, чтобы не чрезмерно наказывать анонимного (не прошедшего проверку подлинности) посетителя-человека.

Этот подход, вероятно, требует обработки на стороне клиента AJAX-y. Абсолютно новый посетитель в woot получает "Добро пожаловать новый пользователь!" страница, заполненная текстом и графикой, которая (при соответствующем регулировании на стороне сервера) занимает несколько секунд для полной загрузки. Пока это происходит (и посетитель предположительно занят чтением страниц приветствия), его идентификационный токен медленно собирается.

Скажем, для обсуждения токен (он же «водительское удостоверение») состоит из 20 блоков. Чтобы получить каждый последующий фрагмент, код на стороне клиента должен отправить действительный запрос на сервер. Сервер включает в себя намеренную задержку (скажем, 200 миллисекунд), перед отправкой следующего фрагмента вместе с «штампом», необходимым для выполнения следующего запроса фрагмента (т. Е. Штампы, необходимые для перехода от одного окна DMV к следующему). В общем, около 4 секунд должно пройти, чтобы завершить чанк-вызов-ответ-чанк-вызов-ответ -...- процесс чанка-вызов-ответ-завершение.

В конце этого процесса у посетителя появляется токен, который позволяет ему перейти на страницу описания продукта и, в свою очередь, перейти на страницу покупки. Токен является уникальным идентификатором для каждого посетителя и может использоваться для регулирования его активности.

На стороне сервера вы принимаете просмотры страниц только от клиентов, которые имеют действительный токен. Или, если важно, чтобы в конечном итоге все могли видеть страницу, наложите штраф на время на запросы, в которых отсутствует действительный токен.

Теперь, чтобы это было относительно мягко по отношению к законному посетителю, чтобы процесс выдачи токенов происходил относительно незаметно в фоновом режиме. Отсюда необходимость в странице приветствия с развлекательной копией и графикой, которая намеренно немного замедлена.

Этот подход вынуждает ботов отказаться от использования либо существующего токена, либо требует минимального времени установки для получения нового токена. Конечно, это не очень помогает против сложных атак с использованием распределенной сети фальшивых посетителей.


4

Вы не можете полностью предотвратить ботов, даже с капчей. Тем не менее, вы можете усложнить написание и поддержку бота и, следовательно, уменьшить количество. В частности, вынуждая их ежедневно обновлять своих ботов, вы потеряете интерес большинства.

Вот несколько идей, которые затрудняют написание ботов:

  • Требуется запуск функции JavaScript. В Javascript писать бота гораздо сложнее. Может потребоваться капча, если они не используют javascript, чтобы по-прежнему разрешать пользователям, не являющимся javascript (минимально).

  • Время нажатия клавиш при вводе в форму (снова через JavaScript). Если это не по-человечески, то отвергни это. Боль подражать человеку, набирающему текст в боте.

  • Напишите свой код, чтобы ежедневно обновлять ID вашего поля новым случайным значением. Это заставит их ежедневно обновлять своего бота, что является болью.

  • Напишите свой код, чтобы ежедневно переупорядочивать свои поля (очевидно, в некотором смысле это не случайно для ваших пользователей). Если они полагаются на полевой порядок, это отключит их и снова потребует ежедневного обслуживания их кода бота.

  • Вы можете пойти еще дальше и использовать Flash-контент. Флэш - это совершенно больно писать бота против.

Как правило, если вы начнете думать о том, чтобы не мешать им, а заставлять их работать больше, вы, вероятно, сможете достичь цели, которую ищете.


Люди иногда участвуют в наборе текста, не относящемся к человеку, - образуют наполнители.
Лорен Печтел

Вы должны учитывать очень разные стили / скорости печати - от hunt'n'peck до touchtyping. Нетрудно написать бота, который падает где-то посередине. Такие вещи, как переменные идентификаторы полей и порядок, могут быть обойдены путем чтения и анализа формы, что не очень сложно.
Корнел

4

Придерживайтесь 5-минутной задержки во всех анонсах продукта для незарегистрированных пользователей. Случайные пользователи на самом деле не заметят этого, и не зарегистрированные пользователи все равно будут зарегистрированы.


3

Я не вижу большого бремени, которое вы требуете от проверки входящих IP-адресов. Напротив, я сделал проект для одного из моих клиентов, который анализирует журналы HTTP-доступа каждые пять минут (это могло быть в режиме реального времени, но он не хотел этого по некоторым причинам, которые я никогда полностью не понимал) и создает правила брандмауэра для блокировки подключений с любых IP-адресов, которые генерируют чрезмерное количество запросов, если только адрес не может быть подтвержден как принадлежащий законной поисковой системе (Google, Yahoo и т. д.).

Этот клиент запускает службу веб-хостинга и запускает это приложение на трех серверах, которые обрабатывают в общей сложности 800-900 доменов. Пиковая активность находится в диапазоне тысяч обращений в секунду, и никогда не возникало проблем с производительностью - брандмауэры очень эффективны при отбрасывании пакетов с адресов из черного списка.

И да, технология DDOS определенно существует, что может победить эту схему, но он не видит, чтобы это произошло в реальном мире. Напротив, он говорит, что это значительно снизило нагрузку на его серверы.


3

Мой подход заключается в том, чтобы сосредоточиться на нетехнологических решениях (в противном случае вы вступаете в гонку вооружений, которую вы проиграете или, по крайней мере, потратите много времени и денег). Я бы сфокусировался на деталях для выставления счетов / отгрузки - вы можете найти ботов, найдя несколько доставок на один адрес или несколько сборов для одного метода оплаты. Вы даже можете сделать это для разных предметов в течение нескольких недель, поэтому, если пользователь получил предыдущий предмет (очень быстро отвечая), ему может быть назначен какой-то «гандикап» на этот раз.

Это также может иметь побочный эффект (я думаю, что это будет полезно, но я могу ошибаться в маркетинге для вашего случая), возможно, расширения круга людей, которым везет и которые приобретают вут.


3

Наиболее чисто технические решения уже были предложены. Поэтому я предлагаю другой взгляд на проблему.

Насколько я понимаю, боты создаются людьми, которые искренне пытаются купить сумки, которые вы продаете. Проблема в -

  1. Другие люди, которые не управляют ботами, заслуживают шанса купить, и вы предлагаете ограниченное количество сумок.
  2. Вы хотите привлечь людей на свой сайт и просто продать сумки.

Вместо того, чтобы пытаться избежать ботов, вы можете позволить потенциальным покупателям сумок подписаться на электронную почту или даже SMS-уведомление, чтобы получать уведомления о продаже. Вы можете даже дать им одну-две минуты (специальный URL-адрес, с которого начинается продажа, генерируется случайным образом и отправляется с почтой / SMS).

Когда эти покупатели идут покупать, они находятся на вашем сайте, вы можете показать им все, что хотите, на боковых баннерах или что-то еще. Те, кто работает с ботами, предпочтут просто зарегистрироваться на вашем сервисе уведомлений.

Бегуны ботов могут по-прежнему запускать ботов в вашем уведомлении, чтобы завершить покупку быстрее. Некоторые решения могут быть предложены в один клик.

Кстати, вы упомянули, что ваши пользователи не зарегистрированы, но похоже, что покупатели этих сумок - не случайные покупатели, а люди, которые с нетерпением ждут таких продаж. Таким образом, они могут захотеть зарегистрироваться, чтобы получить преимущество в попытке «выиграть» сумку.

По сути, я предлагаю попробовать взглянуть на проблему как на социальную, а не техническую.

Асаф


2

Пользовательские агенты с временной блокировкой, которые делают так много запросов в минуту. Например, если у вас есть кто-то, запрашивающий страницу ровно каждые 5 секунд в течение 10 минут, он, вероятно, не пользователь ... Но может быть сложно сделать это правильно.

Если они запускают оповещение, перенаправляйте каждый запрос на статическую страницу с как можно меньшим количеством DB-IO, сообщая им, что им будет разрешено вернуться через X минут.

Важно добавить, что вы, вероятно, должны применять это только к запросам страниц и игнорировать все запросы к медиа (js, images и т. Д.).


Я сделал это в личном проекте, кажется, хороший метод. Вам просто нужно помнить все IP-адреса, когда они попадают на вашу страницу, и настроить правила для того, что значит слишком часто заходить на вашу страницу. Проблема в том, что ОП сказал, что проверка IP-адресов слишком дорога, чего я не понимаю.
Карл

Если вы реализуете проверку IP самостоятельно (то есть в своей базе данных, из своего PHP-скрипта или чего-то еще), то это будет довольно дорого. Заставьте брандмауэр сделать это за вас, и это станет намного более осуществимым.
rmeador

rmeador: Также кажется, что было бы намного сложнее определить, был ли запрос для HTML или другого медиа. Если у вас есть 20 внешних объектов на вашей странице, вы просматриваете как минимум 21 запрос нового пользователя в течение 1-2 секунд.
Oli

2

Предотвращение DoS нанесло бы поражение # 2 из целей @ davebug, которые он изложил выше: «Поддерживать сайт на скорости, не замедляемой ботами», но нет необходимости решать # 1: «Продавать предмет людям, не использующим сценарии»

Я уверен, что сценарист мог бы написать что-то для катания только под чрезмерным пределом, который все равно был бы быстрее, чем человек мог пройти через формы заказа.


2

Хорошо, так что спаммеры конкурируют с обычными людьми, чтобы выиграть аукцион "болотное дерьмо"? Почему бы не сделать следующий аукцион буквальным "мешком с дерьмом"? Спаммеры платят хорошие деньги за сумку, полную собачьих дел, и мы все смеемся над ними.


2

Здесь важно изменить систему, чтобы снять нагрузку с вашего сервера, не дать ботам выиграть мешок с дерьмом БЕЗ оповещения ботлордов, что вы играете с ними, или они пересмотрят свою стратегию. Я не думаю, что есть какой-то способ сделать это без некоторой обработки с вашей стороны.

Таким образом, вы записываете хиты на своей домашней странице. Всякий раз, когда кто-то попадает на страницу, это соединение сравнивается с его последним обращением, и если оно было слишком быстрым, то отправляется версия страницы без предложения. Это может быть сделано с помощью какого-то механизма балансировки нагрузки, который отправляет ботов (слишком быстрые попадания) на сервер, который просто обслуживает кэшированные версии вашей домашней страницы; реальных людей отправляют на хороший сервер. Это снимает нагрузку с главного сервера и заставляет ботов думать, что они по-прежнему обслуживают страницы правильно.

Еще лучше, если предложение может быть отклонено каким-либо образом. Тогда вы все еще можете делать предложения на поддельном сервере, но когда бот заполняет форму и говорит: «Извините, вы не достаточно быстры» :) Тогда они определенно будут думать, что они все еще в игре.


2

Откуда вы знаете, что есть сценарии, размещающие заказы?

Суть вашей проблемы в том, что вы не можете отделить сценарии от законных пользователей и, следовательно, не можете их заблокировать, так почему же вы знаете, что сценарии вообще существуют?

Если у вас есть способ ответить на этот вопрос, то у вас есть набор характеристик, которые вы можете использовать для фильтрации сценариев.


2

Давайте перевернем проблему с ног на голову - у вас есть боты, покупающие вещи, которые вы хотите, чтобы реальные люди покупали, как насчет того, чтобы сделать реальный шанс, что боты будут покупать вещи, которые вы не хотите, чтобы реальные люди покупали.

Имеют случайный шанс для некоторых не отображаемых html, что роботы-скребки сочтут реальную ситуацию, но реальные люди не увидят (и не забывайте, что настоящие люди включают в себя слепых, так что рассмотрите программы чтения с экрана и т. Д.), И это происходит, чтобы купить что-то непомерно дорогое (или не совершает фактическую покупку, но получает детали платежа для вас, чтобы поместить в банлист).

Даже если боты переключаются на «предупреждение пользователя» вместо «совершения покупки», если вы можете получить достаточное количество ложных срабатываний, вы можете сделать его достаточно бесполезным для людей (может быть, не для всех, но некоторое снижение мошенничества лучше, чем вообще ничего) не беспокоить.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.