Зупинення скриптів від удару вашого веб-сайту


489

Я прийняв відповідь, але, на жаль, я вважаю, що ми дотрималися нашого початкового найгіршого сценарію: CAPTCHA всі, хто намагається придбати лайно . Коротке пояснення: кешування / веб-ферми унеможливлюють відстеження звернень, а будь-яке вирішення (надсилання не-кешованого веб-маяка, запис у єдину таблицю тощо) сповільнює роботу сайту гірше, ніж боти. Ймовірно, якесь дороге обладнання від Cisco або подібного може допомогти на високому рівні, але важко виправдати витрати, якщо CAPTCHA-ing всім є альтернатива. Пізніше спробую більш повне пояснення, а також прибиратимуть це для майбутніх шукачів (хоча інші можуть запросити спробувати, оскільки це вікі спільноти).

Ситуація

Йдеться про продаж сумки про дерьмо на сайті woot.com. Я президент Woot Workshop, дочірня компанія Woot, яка займається дизайном, пише описи продуктів, подкасти, повідомлення в блогах та модерує форуми. Я працюю з CSS / HTML і лише ледь знайомий з іншими технологіями. Я тісно співпрацюю з розробниками і обговорював усі відповіді тут (та багато інших ідей, які у нас були).

Юзабіліті є важливою частиною моєї роботи, і зробити сайт захоплюючим і веселим - це більшість решти його. Ось звідси випливають три цілі нижче. CAPTCHA завдає шкоди юзабіліті, а боти вкрадають задоволення та хвилювання від наших продажів на лайно.

Боти забивають нашу головну сторінку десятки разів за секунду скребком екрана (та / або скануванням нашого RSS) для продажу випадкової лайки. Щойно вони це бачать, він запускає другий етап програми, яка входить у систему, клацає «Я хочу один», заповнює форму та купує лайно.

Оцінка

lc : На stackoverflow та інших сайтах, які використовують цей метод, вони майже завжди мають справу з автентифікованими (увійшли в систему) користувачами, тому що завдання, яке намагається здійснити, вимагає цього.

На Woot, анонімні (не ввійшли в систему) користувачі можуть переглядати нашу домашню сторінку. Іншими словами, забиваючі боти можуть бути аутентифікованими (і по суті не відстежуються, за винятком IP-адреси).

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

О, і щоб люди називали нас, було б найгіршим можливим сценарієм. Чи можемо ми їх подзвонити?

BradC : Методи Неда Батчелдера виглядають досить круто, але вони досить міцно розроблені для того, щоб перемогти ботів, побудованих для мережі сайтів. Наша проблема - боти побудовані спеціально для того, щоб перемогти наш сайт. Деякі з цих методів, ймовірно, можуть працювати ненадовго, поки скрипти не перетворили своїх ботів, щоб ігнорувати медовий горщик, скріп екрану на розташовані поруч імена міток замість ідентифікаторів форми та використовувати керування браузером, що підтримує JavaScript.

 

Ще раз : "Якщо, звичайно, ажіотаж не є частиною вашої маркетингової схеми". Так, це точно. Несподіванка, коли предмет з’являється, а також хвилювання, якщо вам вдасться дістати його, мабуть, настільки ж важливіше, ніж лайно, яке ви насправді отримуєте. Все, що позбавляє перших приходів / перших служб, згубно спричиняє відчуття "перемоги" на лайно.

 

novatrust : І я, наприклад, вітаю нашого нового бота-пана. Ми фактично пропонуємо RSSfeeds, щоб дозволити стороннім програмам сканувати наш сайт на предмет інформації про продукт, але не випереджаючи HTML головного сайту. Якщо я правильно його інтерпретую, ваше рішення допомагає досягти мети 2 (проблеми з ефективністю), повністю пожертвувавши метою 1 і просто відмовившись від того, що боти будуть купувати більшу частину лайна. Я підкреслив вашу відповідь, тому що ваш останній абзац песимізм відчуває мене точно. Здається, тут немає жодної срібної кулі.

Решта відповідей, як правило, покладаються на відстеження IP-адрес, що, знову ж таки, видається як марним (з ботнетами / зомбі / хмарними мережами), так і згубним (вловлює багато невинних осіб, які приїжджають з однакових IP-адресатів).

Будь-які інші підходи / ідеї? Мої розробники продовжують говорити "давайте просто зробимо CAPTCHA", але я сподіваюся, що існує менше нав'язливих методів для всіх справжніх людей, які хочуть трохи нашого лайна.

Оригінальне запитання

Скажіть, ви продаєте щось дешеве, що має дуже високу сприйняту цінність, а у вас дуже обмежена кількість. Ніхто точно не знає, коли ви продасте цей предмет. І понад мільйон людей регулярно заходять, щоб побачити, що ви продаєте.

У вас закінчуються скрипти та боти, які намагаються програматично [a] розібратися, коли ви продаєте зазначений товар, і [b] переконайтеся, що вони одні з перших, хто придбав його. Це смокче з двох причин:

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

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

  • Користувальницький досвід підходить для людей, оскільки їм доводиться розшифровувати CAPTCHA, забрати кота або вирішити математичну задачу.
  • Якщо сприйнята вигода буде досить високою, а натовп досить великим, деяка група знайде свій шлях навколо будь-якого виправлення, що призведе до гонки озброєнь. (Особливо це стосується простішого налаштування; прихована форма "коментарів", перестановка елементів форми, неправильне позначення їх, прихований текст "gotcha" - все буде працювати один раз, а потім потрібно змінити для боротьби з націлюванням на цю конкретну форму .)
  • Навіть якщо скриптери не можуть "вирішити" ваш твік, це не заважає їм ляпати вашу головну сторінку, а потім надіслати сигнал тривоги для того, щоб скриптер заповнив замовлення вручну. Враховуючи те, що вони отримують перевагу у вирішенні [a], вони, ймовірно, все-таки переможуть [b], оскільки вони стануть першими людьми, які дістаються сторінки замовлення. Крім того, 1. все-таки трапляється, викликаючи помилки сервера та знижуючи продуктивність для всіх.

Ще одне рішення - слідкувати за тим, щоб IP-адреси потрапляли занадто часто, блокували їх між брандмауером або іншим чином не дозволяли їм замовляти. Це може вирішити 2. та запобігти [b], але ефективність сканування для IP-адрес є масовою і, ймовірно, спричинить більше проблем, таких як 1., ніж спринтери викликали самостійно. Крім того, можливість хмарних мереж та зомбі із спам-роботами робить перевірку ІР досить марною.

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

Цілі

  1. Продавайте предмет людям без сценарію.
  2. Тримайте сайт із швидкістю, яка не уповільнюється ботами.
  3. Не переймайтеся "нормальними" користувачами будь-якими завданнями, щоб довести, що вони люди.

1
Я думаю, що у вас є суперечливі цілі: Зберігайте досвід таким, яким він є, але позбавляйтеся від ботів. Я думаю, що ти не можеш отримати одного, не приносячи в жертву частини іншого.
макс

Це вікі спільноти, тож не соромтеся робити удар, але я, як правило, намагався висвітлити кожну точку так чітко, наскільки я міг вважати, що є очевидні речі, щоб спробувати, що ми вже спробували та знищили.
Дейв Рутлідж

Чому б не просто кешувати повторних порушників, просто не оновлювати ту сторінку, яку вони повторно вимагають. IPv4 та MAC адреси - це 32 + 48 біт. Це 10 Мб для 1 мільйона користувачів, це не повинно бути проблемою. Поєднання IPv4 та MAC повинно допомогти точніше відстежувати всіх типів користувачів
John Leidegren

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

1
Я думаю, що деяким людям тут не вистачає ключового фактора: ці боти створені для входу та придбання. Вони дійсно знають дійсний обліковий запис і МОЖУТЬ увійти в систему. Також справжні люди, які використовують woot, сидять там у той момент, коли предмет з’явиться, і натисніть F5, щоб перезавантажувати кожні 2-5 сек. Це дійсно нормальне використання людини.
CodingWithSpike

Відповіді:


229

Як щодо впровадження чогось типу SO як з CAPTCHA?

Якщо ви нормально використовуєте сайт, його, ймовірно, ніколи не побачите. Якщо ви часто перезавантажуєте одну і ту ж сторінку, занадто швидко публікуйте послідовні коментарі або щось інше, що спрацьовує тривожною силою, змушуйте їх довести, що вони люди. У вашому випадку це, ймовірно, постійні перезавантаження однієї і тієї ж сторінки, після швидкого переходу за кожним посиланням на сторінці, або заповнення форми замовлення занадто швидко, щоб бути людиною.

Якщо вони не перевіряють х разів поспіль (скажімо, 2 або 3), введіть цей IP час та іншим часом. Потім наприкінці тайм-ауту знову скиньте їх до чека.


Оскільки у вас є незареєстровані користувачі, які отримують доступ до сайту, у вас є лише IP-адреси. Ви можете опублікувати сеанси для кожного браузера і відстежувати цей шлях, якщо бажаєте. І, звичайно, киньте перевірку на людину, якщо занадто багато сеансів (повторно) створюється поспіль (якщо бот продовжує видаляти файли cookie).

Щодо того, щоб зловити занадто багато невинних, ви можете надіслати відмову на сторінці перевірки людини: "Ця сторінка також може з'являтися, якщо занадто багато анонімних користувачів переглядають наш сайт з того самого місця. Ми радимо вам зареєструватися або увійти, щоб уникнути це ". (Відповідно виправте формулювання.)

Крім того, які шанси на те, що люди X завантажують одні й ті самі сторінки одночасно з однієї IP-адреси? Якщо вони високі, можливо, вам потрібен інший механізм спуску для тривоги вашого бота.


Редагувати: Ще один варіант - якщо вони надто багато разів виходять з ладу, і ви впевнені в попиті продукту, заблокувати їх і змусити їх особисто ЗАЗВІТИ вас, щоб видалити блок.

Дозволити людям телефонувати здається асиніновим заходом, але це гарантує, що за комп'ютером є людина . Ключовим моментом є те, що блок повинен бути встановлений лише для стану, який майже ніколи не повинен відбуватися, якщо це не бот (наприклад, невдача перевіряти кілька разів поспіль). Тоді ВИГОЛОВАЄ людську взаємодію - забрати телефон.

У відповідь на коментар про те, що вони мені дзвонять, тут явно є такий компроміс. Ви достатньо турбуєтесь про те, щоб ваші користувачі не приймали пару телефонних дзвінків, коли вони продаються? Якби я був так заклопотаний тим, що продукт потрапляє до людей, я повинен був би прийняти це рішення, можливо, приносячи в жертву (невеликий) трохи свого часу.

Оскільки, здається, ви налаштовані не дозволяти ботам отримати перевагу / забивати ваш сайт, я вважаю, що телефон може бути хорошим варіантом. Оскільки я не отримую прибуток від вашого продукту, я не маю інтересу отримувати ці дзвінки. Якщо ви поділилися частиною цього прибутку, проте, я можу зацікавитись. Оскільки це ваш продукт, ви повинні вирішити, наскільки ви піклуєтесь і реалізувати відповідно.


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

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


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

7
Раніше в Google я просив CAPTCHA, але це була моя вина - я використовував їх як калькулятор, роблячи десятки майже однакових сум.
Marcus Downing

Варіант CAPTCHA для мене звучить як переможець. Ви болісно болієте, і якщо ви добре збалансовані, ви ніколи не повинні потрапляти у законних користувачів.
xan

Замість того, щоб виключати людей та використовувати телефонний дзвінок, чи можете ви створити тимчасову електронну адресу, наприклад cur92Siva@site.com, але створити передню частину із зображенням.
Сем

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

193

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

Використовуйте прибуток, щоб придбати більше серверів і оплатити пропускну здатність.


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

13
Не стягуйте їх, а позначайте їх як ботів, спеціально для спроб придбати предмет. Якщо будь-який орган купує кволий предмет, то просто позначте їх як бота та заборонить їх. Ви могли, ймовірно, просто замкнути їх на кілька годин.
Кіббі

4
Це має серйозне значення для комедії, поки ви не зліте малюка сценарію, який, мабуть, має більше навичок, ніж просто вискоблювання вуто, і не заподіює вам справжніх проблем, тому що ви зірвали його.
MattBelanger

2
Якщо малюк за сценарієм розсердиться, він може просто виставити себе достатньо, щоб ви позначили їх та передали правоохоронцям.
Жако

9
sqook: це не технологічне рішення, а реальне світове рішення. Поставити охоронців із зброєю в банки - це одне й те саме. Це може здатися твердим, але шахраї, тому будьте жорсткі. Шкода їм там, де боляче, поки вони не зупиняться.
Крістофер Махан

162

Моє рішення полягало б у тому, щоб зробити знімок екрана нічим не потрібним, вводячи приблизно 10 хвилин затримки для "ботів та сценаріїв".

Ось як я це зробив:

  • Увійдіть і визначте будь-які повторні удари.

Вам не потрібно реєструвати кожну IP-адресу при кожному зверненні. Відстежуйте лише один з кожні 20 звернень. Повторний злочинець все одно з’явиться в рандомізованому випадковому відстеженні.

  • Зберігайте кеш своєї сторінки приблизно на 10 хвилин раніше.

  • Коли повторювальник / бот потрапляє на ваш сайт, надайте їм 10-хвилинну кешовану сторінку.

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

Переваги:

  • Немає клопоту чи проблем для користувачів (наприклад, CAPTCHA).
  • Реалізовано повністю на стороні сервера. (відсутність опори на Javascript / Flash)
  • Обслуговування старої, кешованої сторінки має бути меншою продуктивністю, ніж сторінки, що перебуває в реальному часі. Ви можете таким чином зменшити навантаження на ваші сервери!

Недоліки

  • Потрібно відстежувати деякі IP-адреси
  • Потрібно зберігати та підтримувати кеш старих сторінок.

Як ти гадаєш?


1
Блін. Я просто витратив півтори години на написання власної п'ятивекторної схеми для вуто, і, довго і наполегливо розмірковуючи над своїм п’ятим контрзаходом (дроселем ботнету), мені довелося визнати поразку. Це не працює. А решта мого годинного рішення - ну, це. abelenky, я накидаю тобі капелюх
Jens Roland,

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

1
(продовження :) І моя техніка нікого не відключає / забороняє. Це просто дає їм затримку інформації. Ніхто в офісі не може виграти приз, але це не є великою проблемою з точки зору обслуговування клієнтів / доступності.
abelenky

18
@bruceatk: Якщо ви надасте їм спеціальну сторінку, призначену лише для ботів, вони з часом навчаться її виявляти і навчитись точніше підробляти звичайного клієнта. Надавши стару сторінку, вони не матимуть ІДЕЯ, що вони отримують старі дані. Старі дані є законними! Це просто марно для змагань / гонок.
абеленький

1
Велика подяка тим, хто підтримав мою ідею. Незважаючи на те, що щедрість закінчилася, я вважаю, що ця ідея має багато заслуг з точки зору того, що її легше реалізувати, ніж капчу, меншу ймовірність домагатись людям і, швидше за все, фольгувати ботів. Я сподіваюся, що хтось спробує це спробувати на якомусь веб-сайті.
абеленький

54

Погляньте на цю статтю Неда Батчелдера тут . У його статті йдеться про припинення спам-ботів, але ті самі методи легко застосувати до вашого сайту.

Замість того, щоб зупиняти ботів шляхом того, щоб люди себе ідентифікували, ми можемо зупинити ботів, ускладнивши їм успішну публікацію або ненавмисно ідентифікуючи себе як ботів. Це знімає тягар з людей і залишає форму коментарів без видимих ​​заходів проти спаму.

Ця методика запобігає спам-ботам на цьому веб-сайті. Це працює. Описаний тут метод зовсім не розглядає вміст.

Деякі інші ідеї:

  • Створіть офіційний механізм автоматичного сповіщення (RSS-канал? Twitter?), На який люди можуть підписатися, коли ваш продукт надійде у продаж. Це зменшує потребу людей робити сценарії.
  • Змініть техніку обфускування безпосередньо перед продажем нового товару. Тож навіть якщо сценаристи можуть перерости гонку озброєнь, вони завжди на день.

EDIT: Щоб бути абсолютно зрозумілим, стаття Неда вище описує методи запобігання автоматизованому ЗАКУПКУВАННЯ предметів, запобігаючи BOT проходити через форми для подання замовлення. Його методи не були б корисними для запобігання ботам від вишкрібання домашньої сторінки екраном, щоб визначити, коли Бандолер з моркви вийде на продаж. Я не впевнений, що запобігти тому, що дійсно можливо.

Що стосується ваших коментарів щодо ефективності стратегій Неда: Так, він обговорює медові горщики, але я не думаю, що це його найсильніша стратегія. Його обговорення Спінера - первісна причина, коли я згадував його статтю. Вибачте, що я не зробив цього зрозумілішим у своєму початковому дописі:

Спінер - це приховане поле, яке використовується для кількох речей: воно поєднує в собі ряд значень, що запобігають фальсифікації та повторному виконанню, і використовується для затемнення імен полів. Шпинер - це хеш MD5:

  • Позначка часу,
  • IP-адреса клієнта,
  • Ідентифікатор запису коментованого запису в блозі та
  • Секрет.

Ось як ви могли це реалізувати на WOOT.com:

Змінюйте "секретне" значення, яке використовується як частина хешу кожного разу, коли новий товар надійде у продаж. Це означає, що якщо хтось збирається спроектувати BOT для автоматичного придбання предметів, він буде працювати лише до наступного товару, який надійде у продаж !!

Навіть якщо хтось зможе швидко відновити свого бота, всі інші фактичні користувачі вже придбали BOC, і ваша проблема вирішена!

Інша стратегія, яку він обговорює, - час від часу змінювати техніку медоносів (знову ж, міняти її, коли новий товар надійде у продаж):

  • Використовуйте класи CSS (рандомізовані звичайно), щоб встановити поля або містить елемент, який відображатиметься: жоден.
  • Пофарбуйте поля таким же (або дуже схожим на) фоном сторінки.
  • Використовуйте позиціонування, щоб перемістити поле з видимої області сторінки.
  • Зробіть елемент занадто малим, щоб відображати поле, що міститься в медоносі.
  • Залиште поля видимими, але використовуйте позиціонування, щоб покрити їх затемнюючим елементом.
  • Використовуйте Javascript, щоб здійснити будь-яку з цих змін, вимагаючи, щоб бот мав повний механізм Javascript.
  • Залиште медоносні горщики, як на інших полях, але скажіть людям нічого не вводити в них.

Я здогадуюсь, що моя загальна ідея полягає у ЗМІНІ ДИЗАЙНУ ФОРМИ, коли кожен новий товар надійде у продаж. Або в LEAST, поміняйте його, коли новий BOC надійде у продаж.

Що таке що, пару разів / місяць?

Якщо ви приймете цю відповідь, чи не дасте мені відповідь, коли настане наступний? :)


+1 для RSS. Зробіть так, щоб законні користувачі були винагороджені.
Marcus Downing

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

1
Я не дуже розумію концепцію "прядильника". Це лише зайвий фрагмент даних, який розміщується всередині html <form>та надсилається після подання? Тому що бот також може легко зішкребти це.
Ponkadoodle

44

Питання: Як би ви відмовили скриптерів від удару вашого сайту сотні разів в секунду?
A: Ти цього не робиш. Не можна запобігти такій поведінці зовнішніх агентів.

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

Єдиним життєздатним довгостроковим рішенням є зміна гри, щоб сайт не був зручним для ботів або був менш привабливим для сценаристів.

Як ти це робиш? Ну, це вже інше питання! ;-)

...

Гаразд, деякі варіанти були наведені (і відхилені) вище. Я не дуже знайомий з вашим сайтом, оглянувши його лише один раз, але оскільки люди можуть читати текст у зображеннях, а боти не можуть це легко зробити, змініть оголошення на зображення. Не КАПЧА , а зображення -

  • генерувати зображення (кешоване звичайно), коли запитується сторінка
  • збережіть назву джерела зображення однаковою, щоб не відводити гру
  • більшу частину часу в зображенні буде звичайний текст, і він буде вирівнюватися, щоб здаватися частиною вбудованої HTML-сторінки
  • коли гра "включена", зображення змінюється на текст оголошення
  • У тексті оголошення розкривається URL-адреса та / або код, який потрібно ввести вручну, щоб отримати приз. CAPTCHA код, якщо вам подобається, але це, мабуть, не потрібно.
  • для додаткової безпеки код може бути одноразовим маркером, створеним спеціально для запиту / IP / агента, так що повторні запити генерують різні коди. Або ви можете заздалегідь створити купу випадкових кодів (одноразовий майданчик), якщо генерування на вимогу надто оподатковує.

Виконуйте тести часу, які реагують на це реальні люди, і ігноруйте ("ой, помилка, вибачте! Будь ласка, спробуйте ще раз") відповіді швидше, ніж (скажімо) половину цього часу. Ця подія також повинна попередити розробників про те, що принаймні один бот з'ясував код / ​​гру, тому настав час змінити код / ​​гру.

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

Одне остаточне пропозиція: коли надходить запит на вашу головну сторінку, поставте його в чергу і відповідайте на запити в порядку окремого процесу (можливо, вам доведеться зламати / розширити веб-сервер, щоб це зробити, але це, швидше за все, буде варто). Якщо інший запит того ж IP / агента надходить, коли перший запит стоїть у черзі, ігноруйте його. Це повинно автоматично скинути навантаження з ботів.

РЕДАКТУВАННЯ: Інший варіант, крім використання зображень, полягає у використанні javascript для заповнення тексту "купувати / не купувати"; боти рідко інтерпретують javascript, тому вони не побачать його


1
Я би переконався, що "текст за замовчуванням" також змінюється. Це не дасть додатку для вискоблювання просто порівнювати зображення з попереднім зображенням і чекати значних змін. +1. Чудова ідея.
Френк Крюгер

1
Поправка до "остаточної пропозиції": Якщо другий запит надходить з адреси, тоді як попередній запит з тієї ж адреси очікує, відкиньте перший запит і поставте другий у чергу. Це буде діяти як штраф за забивання сайту замість того, щоб дозволити завантаження сторінки.
Дейв Шерохман

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

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

Не витримую, що ви сказали йому в основному поступатися, я знаю, ви вважаєте, що це неможливо, але я не згоден. Якщо є воля, завжди, безумовно, є спосіб. Дозволити нанести поразку настільки легко, це насправді не надихає і сумує, якщо оригінал читає афішу, це можна зробити, але рішення потрібно буде розробити на замовлення після аналізу журналів трафіку, ви можете запобігти поточним методам і надалі довести це, щоб ще не допустити невикористані методи. Також перегляньте JavaScript, керування веб-браузером запускає JavaScript в режимі реального часу, не потрібно іншого двигуна - вони можуть возитися з Dom і запускати свій власний JavaScript! Opps
Erx_VB.NExT.Coder

30

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

З’ясуйте, для яких даних сканують боти. Подавайте їм ті дані, які вони шукають, коли ви НЕ продаєте лайно. Робіть це таким чином, що не турбуватиме або не бентежить користувачів людини. Коли боти запускають другу фазу, вони ввійдуть у систему та заповнять форму, щоб придбати $ 100 roombas замість BOC. Звичайно, це передбачає, що боти не є особливо надійними.

Інша ідея полягає у здійсненні випадкових падінь цін протягом періоду продажу сумки про лайно. Хто б купив випадкову сумку про лайно за 150 доларів, коли Ви ЧИСТО ДЕРЖАВАТИ, що вона коштує лише 20 доларів? Ніхто, крім надмірних ботів. Але потім через 9 хвилин це $ 35 доларів ... потім через 17 хвилин це 9 доларів. Або що завгодно.

Звичайно, королі-зомбі зможуть реагувати. Справа в тому, щоб зробити їх помилки дуже дорогими (і змусити їх платити вам за боротьбу з ними).

Все це передбачає, що ви хочете розізлити деяких лордів-ботів, що може бути не на 100% доцільним.


Не думайте, що жаліти лордів-ботів бажано, але тут у вас є цікава ідея.
Шон Міллер

7
Я погоджуюся, і мені подобається ця повторювана ідея обдурити ботів у фіктивних закупівлях. Це окупність, і оскільки вони вже порушують ToS, вони навряд чи можуть поскаржитися.
Nicholas Flynt

22

Отож, справді, проблема здається: боти хочуть, щоб їх "сумка" була лайна, оскільки вона має високу сприйняту цінність при низькій ціні. Ви іноді пропонуєте цей товар і боти ховаються, чекаючи, чи є в наявності, а потім вони купують товар.

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

По-перше, завжди пропонуйте "мішок" про лайно ".

По-друге, переконайтеся, що звичайне лайно - це звичайне лайно.

По-третє, часто обертайте лайно.

Просто, ні?

Вам знадобиться постійне "чому наше лайно іноді лайно?" посилання поруч із пропозицією, щоб пояснити людям, що відбувається.

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

Якщо вони купують достатньо цієї лайки за відносно короткий проміжок часу (а у вас є великі відмови, що пояснюють, чому ви це робите), вони втратять справедливу "сумку" готівкою "на вашому" мішок 'o crap ". Навіть втручання людини з їх боку (перевірка того, щоб лайно не було лайно) може провалитися, якщо ви обертаєте лайно досить часто. Чорт забирай, можливо, боти помітять і не купуватимуть нічого, що було в обертанні занадто короткий час, але це означає, що люди купуватимуть не-лайно.

Чорт забирає, ваших постійних клієнтів може так розвеселити, що ви можете перетворити це на величезну маркетингову виграш. Почніть розміщувати, скільки продається коропа "лайно". Люди повернуться просто, щоб побачити, як важко боти вкусили.

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


15
  1. Продавайте предмет людям без сценарію.

  2. Тримайте сайт із швидкістю, яка не уповільнюється ботами.

  3. Не переймайтеся "нормальними" користувачами будь-якими завданнями, щоб довести, що вони люди.

Напевно, ви не хочете цього чути, але №1 та №3 взаємовиключні.

В Інтернеті ніхто не знає, що ти собака

Ну, і ніхто не знає, що ти бот. Немає програмного способу сказати, чи є людина на іншому кінці зв'язку, не вимагаючи від людини щось робити. Захист скриптів / ботів робити речі в Інтернеті - це ціла причина, що CAPTCHA були винайдені. Це не так, як це якась нова проблема, на яку не було витрачено багато зусиль. Якби був кращий спосіб зробити це, той, який не залучав би клопоту до реальних користувачів, що робить CAPTCHA, усі вже використовували б це.

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


+1, якщо вони цього хочуть, капчу не зупинить їх ... і для мультфільму.
Мартін

13

Метод, який Вут використовує для боротьби з цією проблемою, - це зміна гри - буквально. Коли вони представляють надзвичайно бажаний товар для продажу, вони змушують користувачів грати у відеоігри, щоб замовити його.

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

Він все ще продається дуже швидко, але я вважаю, що рішення добре - переоцінка проблеми та зміна параметрів призвели до успішної стратегії, де строго технічних рішень просто не існувало.


Уся ваша бізнес-модель заснована на "першому приході, першому поданому". Ви не можете робити те, що зробили радіостанції (вони вже не роблять переможця першого абонента, переможцем стає 5-й чи 20-й або 13-й) - це не відповідає вашій основній функції.

Ні, немає способу зробити це, не змінивши досвід замовлення реальних користувачів.

Скажімо, ви реалізуєте всі ці тактики. Якщо я вирішу, що це важливо, я просто змушу 100 людей працювати зі мною, ми створимо програмне забезпечення для роботи на наших 100 окремих комп’ютерах і натисніть на ваш сайт 20 разів на секунду (5 секунд між доступом для кожного користувача / cookie / рахунок / IP-адреса).

У вас є два етапи:

  1. Перегляд титульної сторінки
  2. Замовлення

Ви не можете поставити блокування Captcha №1 - це втратить реальних клієнтів ("Що? Я повинен вирішувати капчу щоразу, коли хочу побачити останню версію?!?").

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

Ви можете поставити капчу перед №2, і, хоча ви не любите це робити, це може бути єдиним способом переконатися, що навіть якщо боти переглядають головну сторінку, реальні користувачі отримують продукти.

Але навіть з captcha моя маленька група із 100 все одно матиме значну перевагу в першому русі - і ви не можете сказати, що ми не люди. Якщо ви почнете призначати наш доступ, ми просто додамо трохи тремтіння. Ми могли випадковим чином вибрати, який саме комп'ютер потрібно оновити, щоб порядок доступу постійно змінювався - але все ще виглядає досить людським.

Спочатку позбудьтеся простих ботів

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

Це має суттєво знизити ваш трафік та змінити тактику, яку використовують користувачі-боти.

По-друге, зробіть сервер надзвичайно швидким.

Ти справді не хочеш цього чути ... але ...

Я думаю, що вам потрібно повністю рішення на замовлення знизу вгору.

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

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

Обслуговуючи в основному статичну веб-сторінку (оновлюється кожні 30 секунд або близько того) на користувальницькому сервері, ви повинні не тільки мати можливість обробляти 10 разів кількість запитів та трафік (адже сервер не робить нічого, крім отримання запиту та читання сторінки з пам'яті в буфер TCP / IP), але вона також надасть вам доступ до показників, які можуть допомогти вам сповільнити роботи. Наприклад, співвідносивши IP-адреси, ви можете просто заблокувати більше одного з'єднання в секунду за IP. Люди не можуть пройти швидше, і навіть люди, які використовують ту саму NATED IP-адресу, будуть лише нечасто заблоковані. Ви хочете зробити повільний блок - залиште з'єднання в спокої на повну секунду, перш ніж офіційно припинити сеанс. Це може подати в брандмауер, щоб надати більш тривалі блоки блоку особливо кривдним порушникам.

Але реальність полягає в тому, що незалежно від того, що ви робите, немає жодного способу сказати людині окрім бота, коли бот призначений для людини, побудований з єдиною метою. Бот - це просто проксі для людини.

Висновок

Зрештою, ви не можете сказати людині та комп’ютеру, крім того, щоб переглядати головну сторінку. Ви можете зупинити ботів на кроці замовлення, але користувачі ботів все-таки мають перевагу першого переїзду, і ви все ще маєте величезне навантаження для управління.

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

Але не змінюючи основної моделі, вам не пощастило. Найкраще, що ви можете зробити, це подбати про прості справи, зробити так, щоб сервер настільки швидко постійні користувачі не помічали, і продавали стільки предметів, що навіть якщо у вас є кілька мільйонів ботів, стільки постійних користувачів, скільки бажають, вони отримають їх .

Ви можете розглянути можливість створення сотника та позначення облікових записів користувачів як користувачів ботів, але це матиме величезний негативний зворотній зв'язок спільноти.

Кожен раз, коли я думаю про "ну, що робити з цим ...", я завжди можу протистояти цьому за допомогою відповідної стратегії бота.

Навіть якщо ви зробите заголовок титульної сторінки, щоб потрапити на сторінку замовлення ("Кнопка замовлення цього товару синя з рожевими блискітками, десь на цій сторінці"), боти просто відкриють усі посилання на сторінці та використовують те, що відбудеться. назад зі сторінкою для замовлення. Це просто не спосіб перемогти це.

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

-Адам


"Кожен раз, коли я думаю про" ну, що робити з цим ... "Я завжди можу протистояти цьому за допомогою відповідної стратегії бота". Я прийшов до того ж висновку, коли розробляв мою систему аутентифікації, АЛЕ - тут є одна різниця, що змушує мене сумніватися в тому, що логіка: помилкові позитиви не є великою проблемою
Jens Roland,

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

(продовження) Це означає, що ви можете розробити систему Вут більш обмежувальною, ніж «традиційні» контрзаходи проти спамботів, і через це, можливо, ви зможете ефективно перешкодити ботам.
Єнс Роланд

(однак, тепер, коли я задумався над цим, я не можу придумати спосіб, який працює, який також зірве «атаки» distribuutd / botnet)
Jens Roland,

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 має розширені функції управління трафіком, які дозволяють ідентифікувати боти scrapersand на основі частоти та моделей використання навіть з набору джерел, що стоять за єдиним IP. Потім можна придушити їх, подати їм альтернативний вміст або просто позначити їх заголовками чи файлами cookie, щоб ви могли ідентифікувати їх у коді програми.


Це саме рішення, яке я збирався запропонувати, особливо автоматичне дроселювання. Ви можете скачати свій власний, просто покладається на звичайний та розширений аналіз сигналу.
вд

7

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

Вимога 1: Позбавлення від "ботового удару":

Швидке загоряння вашої першої сторінки заважає роботі вашого сайту і є основою проблеми. "Слэммінг" походить як від ботів з однією IP-адресою, так і - нібито - з ботнетів. Ми хочемо позбутися обох.

Вимога 2: Не псуйтесь із користувацьким досвідом:

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

Вимога 3: Уникання 'гонки озброєнь':

Як ви згадуєте, ви не хочете потрапляти в гонку зброї спамботів. Таким чином, ви не можете використовувати прості налаштування, як-от приховані або змішані поля форм, математичні запитання тощо, оскільки вони по суті є неприхованими заходами, які можна тривіально визначити і обійти.

Вимога 4: Збивання ботів "тривоги":

Це може бути найскладнішим із ваших вимог. Навіть якщо ми можемо зробити ефективну проблему перевірки людини, боти все-таки можуть опитати вашу головну сторінку та попередити скриптера, коли з’явиться нова пропозиція. Ми також хочемо зробити цих ботів нездійсненними. Це більш сильна версія першої вимоги, оскільки боти не лише можуть видавати запити на швидку пожежу, що пошкоджують продуктивність, - вони навіть не можуть надсилати достатньо повторних запитів, щоб вчасно надіслати скрипт, щоб перемогти. пропозиція.


Гаразд, так давайте, якщо ми зможемо виконати всі чотири вимоги. По-перше, як я вже згадував, жоден захід не збирається робити трюк. Для цього вам доведеться поєднати пару хитрощів, і вам доведеться проковтнути два роздратування:

  1. Невелика кількість користувачів знадобиться перестрибувати обручі
  2. Невелика кількість користувачів не зможе отримати спеціальні пропозиції

Я усвідомлюю, що це дратує, але якщо ми зможемо зробити «маленьке» число невеликим , я сподіваюся, що ви погодиться, що позитиви переважають негативи.

Перший захід: На основі користування дроселювання:

Цей не є головним, і я впевнений, що ви це вже робите. Якщо користувач увійшов у систему та продовжує оновлюватись 600 разів на секунду (чи щось таке), ви припиняєте реагувати та говорите йому охолодити його. Насправді ви, ймовірно, заглушуєте його прохання значно раніше, але ви отримуєте ідею. Таким чином, бот, який увійшов у систему, буде заборонений / заглушений, як тільки він почне опитувати ваш сайт. Це легка частина. Неаутентифіковані боти - наша справжня проблема, тому для них:

Другий захід: Деяка форма IP-затримки, як це запропонували майже всі:

Незважаючи ні на що, вам доведеться зробити деяке дроселювання на основі IP, щоб зірвати «бот-ляскання». Оскільки вам здається важливим дозволити відвідувачам, які не зареєструвались, не отримували спеціальних пропозицій, у вас є лише IP-адреси, які, хоча вони не є ідеальними, вони роблять. роботу проти одного IP - бот. Ботнети - це інший звір, але я повернусь до тих. Наразі ми зробимо кілька простих дроселів, щоб обіграти боти, які швидко прострілюють один IP.

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

Третя міра: маскування дроселя кешованими відповідями:

Коли прискорені боти з однією 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-дросель, я не бачу жодної ефективної міри проти ботнетів, яка не передбачає явної перевірки людьми, наприклад, CAPTHA. Вибачте, але я вважаю, що комбінувати вищевказані п’ять заходів - найкраще. І ви, напевно, могли б просто чудово виконати лише 10-хвилинний кеш-абеленки з абеленкою.


Дуже добре заявлено. Дякуємо за ваш внесок.
Шон Міллер

Чи не означає, що ви обслуговуєте старі сторінки для всього AOL, якщо припустити, що декілька ботів надходять із IP пулу AOL?
Енді Дент,

@Andy: Тільки якщо всі користувачі AOL мають однакові IP-адреси, які використовували боти під час спаму.
Єнс Роланд

6

Як щодо введення затримки, яка вимагає взаємодії між людьми, як-от "гра CAPTCHA". Наприклад, це може бути маленька флеш-гра, де протягом 30 секунд вони повинні лопнути кльошеві кульки і уникати тріщин суцільних куль (уникаючи проблем із сліпотою кольорів!). У грі буде дано насінням випадкового числа, і те, що гра передає назад на сервер, будуть координати та часові позначки натиснутих точок, а також використане насіння.

На сервері ви моделюєте ігрову механіку, використовуючи це насіння, щоб побачити, чи справді клацання лопнули б кульки. Якщо вони це зробили, то не тільки вони були людьми, але їм було потрібно 30 секунд, щоб перевірити себе. Дайте їм ідентифікатор сеансу.

Ви дозволяєте цьому ідентифікатору сеансу робити те, що йому подобається, але якщо надсилається занадто багато запитів, вони не можуть продовжуватися без повторної гри.


Весела ідея, але повністю і повністю руйнує досвід користувача. Звичайні люди, які відвідують сайт, сприйматимуть це як 30 секунд марного очікування. 30 секунд марного очікування під час перегляду Інтернету або використання веб-додатків жодним чином не прийнятні.
Arve Systad

звичайні відвідувачі не запускатимуть затримки, лише хтось робить необгрунтовану кількість запитів. Ідея - це трохи язика в щоках, але я можу побачити, як вона працює, якщо цільова аудиторія звикне до маленьких флеш-ігор :)
Пол Діксон

Розважальна (і майже безглузда) ідея, але я був би роздратований (особливо під час несамовитості Bag of Canaries), і це вимагатиме значно більшої обробки на їх серверах для перевірки (що є великою частиною проблеми). Також боти можуть лопнути бульбашки. Вам доведеться часто змінювати правила.
Groxx

Якщо припустити, що кожній грі видається маркер, і ви знаєте час, коли ви видали жетони, вам потрібно лише спробувати обробити маркер один раз, і лише між 30 і скажімо 300 секунд після його видачі. Краса полягає в тому, що навіть якщо бот розірвав міхур, вони все ще чекали 30 секунд, щоб зробити це.
Пол Діксон

Плюс не будемо забувати ідею обмежити трафік. Сторінка могла б сказати: "Ми дуже зайняті, якщо ви поспішаєте, пограйте в цю гру протягом 30 секунд або спробуйте знову через кілька хвилин ...
Пол Діксон

5

Є вже кілька інших / кращих рішень, які вже розміщені, але для повноти я подумав, що згадаю це:

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

Хоча це питання, ймовірно, буде більш придатним для наступного похідного SO, згаданого в останньому SO-podcast, він ще не запущений, тому, мабуть, відповісти нормально :)

EDIT:
Як зазначає novatrust, все ще є провайдери, які насправді НЕ призначають IP-адреси своїм клієнтам, тому ефективно, клієнт-скрипт такого провайдера відключить усіх клієнтів від цього провайдера.


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

Нічого собі, я вражений. Такі речі все ще тривають?
falstro

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

5

Напишіть реверс-проксі на сервері apache перед програмою, яка реалізує Tarpit (стаття Вікіпедії) для покарання ботів. Він буде просто керувати списком IP-адрес, які підключилися за останні кілька секунд. Ви виявляєте пакет запитів з однієї IP-адреси, а потім експоненціально затримуєте ці запити, перш ніж відповісти.

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


4
  1. Введіть RSS-канал, щоб вони не з'їдали вашу пропускну здатність.
  2. Купуючи, змушуйте всіх чекати випадкову кількість часу до 45 секунд чи щось, залежно від того, що саме ви шукаєте. Які саме ваші часові обмеження?
  3. Дайте кожному 1 хвилину, щоб ввести своє ім’я для малюнка, а потім випадковим чином виберіть людей. Я думаю, що це найсправедливіший спосіб.
  4. Контролюйте облікові записи (включайте кілька разів у сеанс і зберігайте їх?) Та додайте затримки до облікових записів, які, здається, знаходяться нижче межі швидкості для людини. Це, принаймні, змусить ботів запрограмуватись для уповільнення та конкуренції з людьми.

Це цікаві поняття, але "випадковий вибір" та період очікування знімає велику частину "шаленості", від якої я здогадуюсь, що це залежить. Знімаючи термін терміновості, ви робите сайт.
ТМ.

Якщо це виглядає як малюнок, то йому доводиться мати справу із законами азартних ігор. Не варто.
jmucchiello

4

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

Якщо ми можемо прийняти передумову, що ми можемо накласти певну вартість відвідувачеві, що займається новим брендом, на своєму першому зверненні до сторінки, я думаю, що я маю можливе рішення. У зв'язку з відсутністю кращого імені, я нескінченно називаю це рішення "Візит до DMV".

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

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

Так, відвідувачеві, який вперше (назвемо його Боб) цьому автодилеру відмовляють у в'їзді, і він направляється до офісу DMV (який зручно розташований прямо поруч) для отримання водійських прав.

Іншим відвідувачам, які мають дійсне посвідчення водія, дозволяється в'їзд, після того, як він покаже його посвідчення. Людина, яка робить собі неприємність, коли цілий день вигулює, скупає продавців, хапає брошури та випорожнює безкоштовну каву та печиво, врешті-решт буде відвернута.

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

Посвідчення водія в цьому світі майже неможливо підробити.

Візит до DMV передбачає спочатку отримання форми заявки у черзі "Почати тут". Боб повинен віднести заповнену заявку до вікна №1, де перший із багатьох потворних державних службовців візьме його заяву, обробить її, і якщо все в порядку, відмітьте заявку на вікно та відправте його до наступного вікна. І так, Боб переходить від вікон до вікна, чекаючи, коли пройде кожен крок його заявки, поки він нарешті не досягне кінця і не отримає ліцензію свого драйвера.

Немає сенсу намагатися "коротке замикання" на DMV. Якщо форми не заповнюються правильно в трьох примірниках, або будь-які неправильні відповіді, дані в будь-якому вікні, додаток розривається, і невдалий замовник відправляється назад до початку.

Цікаво, що, незалежно від того, наскільки офісний чи повний або порожній, для обслуговування в кожному наступному вікні потрібно приблизно стільки ж часу. Навіть коли ви єдина людина в черзі, здається, що персонал любить змусити вас зачекати хвилину за жовтою лінією, перш ніж вимовити "Далі!"

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

Трохи більш технічне пояснення:

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

Такий підхід, ймовірно, вимагає обробки AJAX-y на стороні клієнта. Новий відвідувач, котрий благає бренд, отримує "Ласкаво просимо нового користувача!" сторінка, наповнена текстом та графікою, для завантаження якої (за допомогою відповідного натискання на сторону сервера) потрібно кілька секунд. Поки це відбувається (і відвідувач, ймовірно, зайнятий читанням вітальної сторінки), його ідентифікаційний маркер поступово збирається.

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

В кінці цього процесу відвідувач має маркер, який дозволяє йому перейти на сторінку з описом продукту і, в свою чергу, перейти на сторінку придбання. Маркер - це унікальний ідентифікатор кожного відвідувача, і його можна використовувати для придушення його діяльності.

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

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

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


4

Ви не можете повністю запобігти ботам, навіть із капчу. Однак ви можете змусити писати та підтримувати бота, а отже, зменшити кількість. Зокрема, змушуючи їх щодня оновлювати своїх ботів, ви змусите більшість втрачати інтерес.

Ось кілька ідей, які ускладнюють написання ботів:

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

  • Час натискання клавіш під час введення форми (знову через javascript). Якщо це не по-людськи, то відкиньте його. Боляче імітувати людське друкування в боті.

  • Напишіть свій код, щоб щодня оновлювати свій ідентифікатор поля на нове випадкове значення. Це змусить їх щодня оновлювати свого бота, що болить.

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

  • Ви можете піти ще далі та використовувати Flash-вміст. Flash - це зовсім болісно писати бота.

Як правило, якщо ви почнете думати про те, щоб не заважати їм, а змусити їх більше працювати, ви, ймовірно, можете досягти мети, яку ви шукаєте.


Люди іноді беруть участь у друкуванні, що не є людиною, хоча формують наповнювачі.
Лорен Печтел

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

4

Дотримуйтесь 5-хвилинної затримки для всіх оголошень про товар для незареєстрованих користувачів. Випадкові користувачі насправді цього не помітять, а випадкові користувачі все одно будуть зареєстровані.


3

Я не бачу великого тягаря, який ви вимагаєте від перевірки вхідних IP-адрес. Навпаки, я робив проект для одного з своїх клієнтів, який аналізує журнали доступу до HTTP кожні п’ять хвилин (це могло бути в режимі реального часу, але він не хотів цього з якихось причин, які я ніколи не розумів повністю) і створює правила брандмауера для блокування з'єднань з будь-яких IP-адрес, які генерують надмірну кількість запитів, якщо адреса не може бути підтверджена як належна до законної пошукової системи (google, yahoo тощо).

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

І так, напевно існує технологія DDOS, яка б перемогла цю схему, але він не бачить цього в реальному світі. Навпаки, він каже, що це значно знижує навантаження на його сервери.


3

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

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


3

Більшість чисто технічних рішень вже запропоновані. Тому я запропоную інший погляд на проблему.

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

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

Замість того, щоб намагатися уникати ботів, ви можете дозволити потенційним покупцям мішків підписатися на електронну пошту чи навіть оновлення SMS, щоб отримувати повідомлення про те, коли відбудеться продаж. Ви навіть можете дати їм хвилину або дві головного початку (спеціальна URL-адреса, з якої починається продаж, випадковим чином генерується та надсилається за допомогою пошти / SMS).

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

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

До речі, ви згадали, що ваші користувачі не зареєстровані, але це здається, що ті, хто купує ці сумки, - не випадкові покупці, а люди, які сподіваються на ці продажі. Таким чином, вони можуть бути готові зареєструватися, щоб отримати перевагу в спробі "виграти" сумку.

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

Асаф


2

Користувальницькі агенти часового блоку, які роблять так багато запитів в хвилину. Наприклад, якщо у вас хтось запитує сторінку рівно кожні 5 секунд протягом 10 хвилин, вони, ймовірно, не користувачі ... Але це може бути складним, щоб виправити це правильно.

Якщо вони викликають сповіщення, перенаправляйте кожен запит на статичну сторінку з якомога меншою кількістю DB-IO з повідомленням, яке повідомляє їм, що вони будуть дозволені через X хвилин.

Важливо додати, що ви, ймовірно, повинні застосовувати це лише для запитів на сторінки та ігнорувати всі запити для медіа (js, зображення тощо).


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

Якщо ви реалізуєте перевірку IP-адреси самостійно (тобто у своїй базі даних, зі свого сценарію PHP або будь-якого іншого), це буде досить дорого. Запропонуйте брандмауер зробити це за вас, і це стане набагато реальнішим.
rmeador

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

2

Запобігання DoS призведе до поразки №2 із цілей @ davebug, які він виклав вище, "Тримайте сайт із швидкістю, не уповільненою ботами", але не потрібно вирішувати №1: "Продайте товар людям, які не розробляють сценарії".

Я впевнений, що сценарист може написати щось для катання просто за надмірною межею, яка все-таки буде швидшою, ніж людина може пройти форми замовлення.


2

Гаразд, тому спамері конкурують із звичайними людьми, щоб виграти аукціон "бог з лайна"? Чому б не зробити наступний аукціон буквальним «мішком лайна»? Спамери отримують хороші гроші за сумку, наповнену собачкою, і ми всі з них сміємося.


2

Тут важливо - змінити систему, щоб зняти навантаження з вашого сервера, щоб боти не вигравали сумку лайна БЕЗ того, щоб ботлорди знали, що ви їх граєте, або вони переглянуть свою стратегію. Я не думаю, що існує спосіб зробити це без якоїсь обробки в кінці.

Таким чином ви записуєте звернення на свою домашню сторінку. Щоразу, коли хтось потрапляє на сторінку, це з'єднання порівнюється з його останнім зверненням, і якщо воно було занадто швидким, то йому надсилається версія сторінки без пропозиції. Це можна зробити за допомогою якогось механізму балансування навантаження, який надсилає ботів (надто швидкі звернення) до сервера, який просто обслуговує кешовані версії вашої домашньої сторінки; реальні люди надсилаються на хороший сервер. Це знімає завантаження з основного сервера і змушує ботів думати, що вони все ще правильно обслуговуються сторінки.

Ще краще, якщо пропозицію можна якось відхилити. Тоді ви все ще можете робити пропозиції на штучному сервері, але коли бот заповнить форму, скажіть: "Вибачте, ви не були досить швидкими" :) Тоді вони обов'язково подумають, що вони все ще в грі.


2

Звідки ви знаєте, що існують замовники, які розміщують замовлення?

Суть вашої проблеми полягає в тому, що ви не можете відокремити скрипти від законних користувачів і, отже, не можете їх заблокувати, тож як ви знаєте, що взагалі існують скрипти?

Якщо у вас є спосіб відповісти на це питання, то у вас є набір характеристик, які ви можете використовувати для фільтрації скриптів.


2

Давайте повернемо проблему - у вас є боти, які купують речі, які ви хочете купувати реальними людьми, а як зробити реальний шанс, що боти придбають речі, які вам не потрібні хочете купувати справжні люди.

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

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.