Остановите мошенничество при регистрации с помощью трех проверок API без необходимости ввода кода
Капчи вредят конверсии, и боты все равно их решают. Оцените каждую регистрацию с помощью VPN, одноразовой электронной почты и проверки черного списка IP-адресов менее чем за 120 мс и бросьте вызов только верхним 5%.
Боты дешевле вашего бюджета на капчу. Коммерческая ферма очистки очищает reCAPTCHA v2 по цене около 1 доллара за тысячу, поэтому парсер, которому нужно 50 000 одноразовых учетных записей, тратит меньше на капчи, чем на VPS для запуска скрипта. Между тем, ваши реальные пользователи решают задачу с отрывом от 3 до 15%.
Лучший забор – это балл. Три вызова API дадут вам достаточный сигнал, чтобы пропустить 95% регистраций без проблем и проблем или заблокировать оставшуюся часть. Общая задержка менее 120 мс на P99.
Три сигнала, три конечных точки
У каждой регистрации есть IP-адрес и адрес электронной почты. Этого достаточно, чтобы задать три узких вопроса.
Является ли IP-адрес VPN, выходом Tor или центром обработки данных?
Реальные регистрации потребителей редко происходят в блоке AWS CIDR. Выходной узел Tor почти никогда не подписывается на бесплатную пробную версию вашего SaaS. /v1/vpn-detect конечная точка проверяет все три.
{
"ip": "34.102.55.10",
"is_vpn": true,
"is_tor": false,
"is_datacenter": true,
"provider": "Google Cloud",
"risk_score": 60
}
Использует ли электронная почта одноразовый домен?
Одноразовые провайдеры (mailinator, guerillamail, tempmail) меняют входящие почтовые ящики за считанные минуты. Если регистрация попадает в одноразовый домен, пользователь не намерен получать последующие действия. /v1/disposable-email/check отмечает более 700 известных поставщиков, а также эвристические шаблоны.
{
"email": "user@mailinator.com",
"domain": "mailinator.com",
"is_disposable": true,
"is_free": false,
"provider": "Mailinator"
}
Находится ли IP-адрес в Богонском диапазоне или в списке репутации?
IP-адреса Богона никогда не должны попадать на ваш сервер из открытого Интернета; они указывают на поддельный заголовок или сломанный прокси. Подозрительный обратный DNS (имена хостов с «прокси», «tor», «спам») — еще один дешевый сигнал. /v1/ip-blocklist/check возвращает уровень риска плюс разбивку по каждой проверке.
{
"ip": "185.220.101.5",
"is_private": false,
"is_bogon": false,
"reverse_dns": "tor-exit-1.example.org",
"risk_level": "high"
}
Вес и оценка в одной функции
Вызовите все три параллельно, добавьте взвешенные точки, зафиксируйте до 100 и вынесите вердикт. Пороговые значения настраиваются для каждого продукта; начните с 20 и 70 как вызов и блокируйте сокращения.
// signup-score.ts
type Verdict = 'allow' | 'challenge' | 'block';
export async function scoreSignup(input: {
ip: string;
email: string;
}): Promise<{ score: number; verdict: Verdict; signals: Record<string, unknown> }> {
const [vpn, email, blocklist] = await Promise.all([
fetch('https://api.botoi.com/v1/vpn-detect', postJson({ ip: input.ip })).then(r => r.json()),
fetch('https://api.botoi.com/v1/disposable-email/check', postJson({ email: input.email })).then(r => r.json()),
fetch('https://api.botoi.com/v1/ip-blocklist/check', postJson({ ip: input.ip })).then(r => r.json()),
]);
let score = 0;
if (vpn.is_tor) score += 80;
else if (vpn.is_datacenter) score += 50;
else if (vpn.is_vpn) score += 35;
if (email.is_disposable) score += 60;
else if (email.is_free) score += 10;
if (blocklist.risk_level === 'high') score += 40;
else if (blocklist.risk_level === 'medium') score += 20;
const verdict: Verdict = score >= 70 ? 'block' : score >= 20 ? 'challenge' : 'allow';
return { score: Math.min(score, 100), verdict, signals: { vpn, email, blocklist } };
}
function postJson(body: unknown): RequestInit {
return {
method: 'POST',
headers: {
'Content-Type': 'application/json',
Authorization: \`Bearer \${process.env.BOTOI_API_KEY}\`,
},
body: JSON.stringify(body),
};
}
Несколько замечаний по поводу весов. Tor — сильный сигнал; Только 80 баллов переводят запрос в блок-диапазон. IP-адреса центров обработки данных улавливают много трафика ботов, но также и законных пользователей, постоянно подключенных к VPN, поэтому 50 баллов ставят их под сомнение, а не блокируют. Одноразовые электронные письма получают 60 баллов, потому что реальные пользователи почти никогда не выбирают mailinator.
Подключите его к маршруту регистрации
Поместите вызов оценки непосредственно перед созданием пользователя. Отклонить блокировку, потребовать подтверждение электронной почты в группе вызова, оставить все остальное нетронутым.
// app/api/signup/route.ts (Next.js)
import { NextResponse } from 'next/server';
import { scoreSignup } from '@/lib/signup-score';
export async function POST(req: Request) {
const body = await req.json();
const ip = req.headers.get('x-forwarded-for')?.split(',')[0] ?? '0.0.0.0';
const result = await scoreSignup({ ip, email: body.email });
if (result.verdict === 'block') {
await auditLog({ type: 'signup.blocked', ip, email: body.email, score: result.score });
return NextResponse.json({ error: 'signup_rejected' }, { status: 403 });
}
const user = await createUser({
email: body.email,
password: body.password,
requiresEmailVerification: result.verdict === 'challenge',
riskScore: result.score,
});
return NextResponse.json({ user });
}
Проверяйте каждое решение
Вы не можете настроить пороги без данных. Сохраняйте оценку и необработанные сигналы при каждой регистрации.
// Persist the score and signals with the user row for later calibration.
await db.signupAudit.insert({
userId: user.id,
ip,
score: result.score,
verdict: result.verdict,
signals: result.signals,
createdAt: new Date(),
});
Еженедельную калибровку на предмет оттока и злоупотреблений
Делайте отчет раз в неделю. Предсказывает ли более высокий балл более высокий отток клиентов, процент возвратов средств или количество сообщений о злоупотреблениях? Если вы наберете 60 регистраций с оттоком 80% и 10 регистраций с оттоком 4%, ваши веса откалиброваны, и вы можете ужесточить порог блокировки. Если градиент плоский, измените вес.
-- rerun weekly: does the score predict churn and abuse?
SELECT
FLOOR(score / 10) * 10 AS score_bucket,
COUNT(*) AS signups,
ROUND(100.0 * SUM(CASE WHEN churned THEN 1 ELSE 0 END) / COUNT(*), 1) AS churn_pct,
ROUND(100.0 * SUM(CASE WHEN abuse_reported THEN 1 ELSE 0 END) / COUNT(*), 1) AS abuse_pct
FROM signup_audit
WHERE created_at > NOW() - INTERVAL '90 days'
GROUP BY 1
ORDER BY 1;
Цель — монотонная кривая. Каждая группа оценок должна иметь худшие результаты, чем та, которая находится под ней. Если нет, добавьте сигнал (отпечаток устройства, скорость регистрации из того же /24) или сбросьте груз, который не тянет на себя собственный вес.
Где это подходит по сравнению с капчей
| Подход | Трение для реальных пользователей | Стоимость для злоумышленника | Задержка P99 |
|---|---|---|---|
| реКАПЧА v2 | снижение на 3-15% | 1 доллар за 1000 решений | 300-800 мс |
| hCaptcha Enterprise | падение на 2-8% | $1-2 за 1000 | 250-600 мс |
| 3-сигнальная оценка | 0% для 95% пользователей | Необходимо получить чистый IP + реальный почтовый ящик. | 80-120 мс |
Оценка не заменяет проверку, если вам нужны защищенные от ботов потоки входа в банк США. Это правильный вариант по умолчанию для подписки SaaS, информационного бюллетеня и пробных версий.
Что это не распространяется
- Ввод учетных данных при входе в систему: используйте пароль или ограничение скорости для учетной записи.
- Скоординированные пакеты регистрации с резидентных прокси: добавьте ограничения скорости за 24 часа и за минуту электронной почты плюс регистрация.
- Пользователи, выполняющие проверку электронной почты с использованием одноразового адреса: установите 24-часовую блокировку доступа к функциям для группы испытаний.
Получите ключ API и вставьте его
Получите бесплатный ключ по адресу botoi.com/api/signup. Уровень бесплатного пользования охватывает 1000 оценок в день, чего достаточно для проведения калибровки по количеству регистраций за последнюю неделю. Платные планы начинаются с 9 долларов США в месяц за 10 000 запросов в день.
Полная ссылка для каждой конечной точки: API обнаружения VPN, Одноразовый API проверки электронной почты, и API проверки черного списка IP-адресов.
FAQ
- Почему бы вместо этого не использовать капчу?
- Стоимость конвертации капчи (типичное снижение: от 3 до 15% реальных пользователей) и коммерческие фермы CAPTCHA решают reCAPTCHA v2 менее чем за 1 доллар за тысячу. Оценка с помощью сигналов позволяет избежать проблем для 95% регистраций и проверяет только подозрительную часть.
- Какие сигналы учитываются в счете?
- Третье: IP-флаги VPN/Tor/центра обработки данных, одноразовый или одноразовый домен электронной почты и попадания в черный список IP-адресов (богоны, подозрительные имена хостов). Каждый возвращается менее чем за 50 мс. Взвесьте их, чтобы получить оценку риска от 0 до 100, а затем примите решение по пороговому значению.
- Вредит ли блокировка IP-адресов центров обработки данных реальным пользователям?
- Корпоративные и потребительские IP-адреса не соответствуют блокам CIDR центра обработки данных. Единственные реальные пользователи, которых это касается, — это люди, пользующиеся постоянно включенными VPN, а это обычно меньшинство, которого можно направить на дополнительный путь проверки, а не заблокировать полностью.
- Как мне справиться со слабым сигналом середины?
- Оценка выше 70: блок. Оценка ниже 20: разрешено. От 20 до 70: требуется подтверждение электронной почты или повышение уровня (код SMS, ключ доступа). Вы переносите трение на полосу риска, а не на всю воронку.
- Могу ли я проверить подсчет очков на основе исторических регистраций?
- Да. Воспроизведите последние 90 дней регистрации через три конечных точки, объедините результаты с помощью столбцов оттоков, возвратов и отчетов о злоупотреблениях, а также откалибруйте свои пороговые значения, прежде чем применять какие-либо меры. Каждая конечная точка остается стабильной при повторных вызовах с одним и тем же входом.
Начните разработку с botoi
150+ API-эндпоинтов для поиска, обработки текста, генерации изображений и утилит для разработчиков. Бесплатный тариф, без банковской карты.