День, коли ми виправили наш пайплайн реєстрації
Наші показники реєстрацій зростали щотижня. Команда була в захваті. Але дані здавалися хибними. Користувачі ніколи не поверталися. Електронні адреси виглядали дивно. Наш коефіцієнт активації падав.
Я проаналізував дані. Я не знайшов зростання. Я знайшов шум.
The Problem
Я запустив запит, щоб згрупувати реєстрації за IP-адресою. Одна IP-адреса зареєструвала сотні акаунтів за 24 години. Вона використовувала той самий браузерний відбиток. Скрипт звертався до нашого register endpoint. Він використовував одноразові домени електронної пошти. Це був бот, а не людина.
Наш пайплайн реєстрації був повністю відкритим.
The Solution
Ми побудували три рівні захисту за один спринт.
Layer 1: Throttling
Ми використали два типи обмеження частоти запитів (rate limiting).
- Тротлінг за IP: ми обмежуємо спроби реєстрації з однієї IP-адреси у короткому часовому вікні.
- Тротлінг за доменом: ми обмежуємо реєстрації з одного і того ж домену електронної пошти у тривалішому часовому вікні. Це зупиняє ботів, які використовують різні IP, але той самий домен.
Layer 2: Blocklists
- Заблоковані домени пошти: ми відхиляємо будь-яку реєстрацію з використанням одноразових доменів електронної пошти.
- Заблоковані user agents: ми відхиляємо запити від інструментів, що не є браузерами. Ми не надаємо жодних деталей зловмиснику.
Layer 3: IP Blocklist
Деякі IP-адреси є стійкими. Вони зловживають різними частинами нашої системи. Ми використовуємо жорсткий блоклист. Ці IP-адреси відхиляються для кожного запиту. Middleware зупиняє їх негайно.
The Results
Before the fix:
- Одна IP-адреса створювала сотні акаунтів за день.
- Більшість реєстрацій здійснювалася з одноразових доменів.
- Фейкові акаунти знижували наш коефіцієнт активації.
- Наші дані були некоректними.
After the fix:
- Масове створення реєстрацій (registration farming) впало до нуля.
- Реєстрації з одноразових доменів припинилися.
- Показники реєстрацій відображали реальні наміри людей.
- Наш коефіцієнт активації відновився.
Lessons Learned
- Сигнал важливіший за обсяг. Боти роблять такі метрики, як утримання (retention) та дохід, ненадійними.
- Невеликі виправлення коду вирішують великі проблеми. Ми використали три прості механізми.
- Рівні захисту необхідні. Одного обмеження недостатньо. Комбінація охоплює більше сфер.
- Контролюйте свої відповіді. Надавайте легітимним користувачам зворотний зв'язок. Зловмисникам — мовчання.
Зростання — це не лише залучення користувачів. Це залучення реальних користувачів. Ваші рішення щодо продукту залежать від якісних даних. Ці дані починаються з вашого register endpoint.
Source: https://dev.to/ogeobubu/the-day-we-fixed-our-signup-pipeline-3664