pfpulse.tech API
Решение капч Яндекса и генерация Android-отпечатков — через REST API. Два HTTP-запроса для капч (create + result), один GET для fingerprints. Разворачивать ничего не нужно.
Аутентификация
API поддерживает два способа авторизации. Для внешних интеграций используйте API-ключ:
curl -X POST https://pfpulse.tech/captcha/create \ -H "X-API-Key: YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{"type":"SmartCaptcha","click":"...","task":"..."}'
curl -X POST "https://pfpulse.tech/captcha/create?key=YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{"type":"SmartCaptcha","click":"...","task":"..."}'
API-ключ создаётся в личном кабинете. Для Fingerprint API — дополнительно нужна привязка IP (whitelist).
Серверы
API доступен через два маршрута. Оба принимают одинаковые ключи и запросы — разница только в сетевом маршруте.
https://pfpulse.tech
Оптимальный маршрут для клиентов вне РФ.
https://api.pfpulse.tech
Прямой маршрут для клиентов из России. Используйте если pfpulse.tech недоступен.
Выбор сервера доступен в конструкторе запроса в личном кабинете.
Для капч замените домен в URL: api.pfpulse.tech/captcha/create вместо pfpulse.tech/captcha/create.
Quickstart
SmartCaptcha — два запроса:
# 1) создаём задачу curl -X POST https://pfpulse.tech/captcha/create \ -H "X-API-Key: YOUR_KEY" \ -H "Content-Type: application/json" \ -d '{ "type": "SmartCaptcha", "click": "<base64 PNG/JPG — картинка с иконками>", "task": "<base64 PNG/JPG — целевые силуэты>" }' # ← {"task_id": "9051d4b4-…", "status": "pending"} # 2) забираем результат curl -X POST https://pfpulse.tech/captcha/result \ -H "Content-Type: application/json" \ -d '{"task_id": "9051d4b4-…"}' # ← {"status": "ready", "solution": "coordinates:x=34.7,y=108.0;…", "solve_time_ms": 87}
PazlCaptcha:
curl -X POST https://pfpulse.tech/captcha/create \ -H "X-API-Key: YOUR_KEY" -H "Content-Type: application/json" \ -d '{"type": "PazlCaptcha", "image": "<base64 PNG>", "task": "[10,24,5,9,8,...]"}' # result → {"solution": "14"} — номер шага слайдера
TextCaptcha:
curl -X POST https://pfpulse.tech/captcha/create \ -H "X-API-Key: YOUR_KEY" -H "Content-Type: application/json" \ -d '{"type": "TextCaptcha", "task": "<base64 PNG/JPG>"}' # result → {"solution": "молоко дерево"} — 2 слова
Fingerprint:
curl "https://pfpulse.tech/api/v1/fingerprint/generate?browser=chrome" \ -H "X-API-Key: YOUR_KEY" # ← JSON ~375KB с полным отпечатком устройства
SmartCaptcha
PRODUCTIONЯндекс-капча с силуэтами: на click-картинке — 5-7 иконок, на task-картинке — те, что нужно кликнуть (слева-направо). Решение = координаты кликов в правильном порядке.
Запрос
{
"type": "SmartCaptcha",
"click": "<base64 PNG/JPG>", // картинка с иконками
"task": "<base64 PNG/JPG>", // целевые силуэты
"coord_space": "native" // optional: "native" (default) | "css300"
}
coord_space: native — пиксели исходной картинки;
css300 — нормированные в 300×300 (для CSS-виджета).
Ответ
"solution": "coordinates:x=34.7,y=108.0;x=234.3,y=72.3;x=72.5,y=62.6;..."
Пары (x,y) через ; — в порядке силуэтов на task-картинке.
Рекомендуем human-like задержки 100-300 мс между кликами.
PazlCaptcha
PRODUCTIONПазл/калейдоскоп-капча: картинка разбита на сетку, строки сдвинуты swap-операциями. Слайдер снизу контролирует количество swap'ов. Решение = номер правильного шага слайдера.
Запрос — два формата
{
"type": "PazlCaptcha",
"image": "<base64 PNG>", // картинка паззла
"task": "[10,24,5,9,8,...]" // JSON-массив swap-индексов
}
image — из JS-стейта imageSrc, в base64.
task — массив из JS-стейта, чётная длина.
Регекспы: imageSrc:"(https://[^"]+)", task:"(\[[\d,]+\])".
{
"type": "PazlCaptcha",
"task": "<base64 полной HTML-страницы капчи>"
}
Сервер сам парсит HTML, скачивает картинку и решает.
Ответ
"solution": "14" // шаг слайдера (0..max, где max = len(task)/2)
Применение: кнопка «→» N раз, или drag ползунка в позицию N/max.
TextCaptcha
PRODUCTION БЕСПЛАТНОТекстовая капча Яндекса — два искажённых русских слова на картинке. Точность 97.8%, решение ~1 с. Бесплатно на период тестирования.
Запрос
{
"type": "TextCaptcha",
"task": "<base64 PNG/JPG — картинка с текстом>"
}
Ответ
"solution": "молоко дерево" // 2 русских слова через пробел
Тарифы на капчи и Fingerprint — на отдельной странице
payments Смотреть тарифыФормат ответа
Все эндпоинты — JSON.
POST /captcha/create
{ "task_id": "9051d4b4-...", "status": "pending" }
POST /captcha/result
// Готово { "task_id": "...", "status": "ready", "solution": "...", "solve_time_ms": 87 } // Ещё решается { "task_id": "...", "status": "pending" } // Ошибка { "task_id": "...", "status": "error", "error": "причина" }
Коды ошибок
- Неизвестный
type - Нет обязательных полей (SmartCaptcha:
click+task, PazlCaptcha:image+task) - Битая картинка / не base64 / <100 байт / >200 КБ
status: "error""no detections"— не нашли элементы (шумная картинка)"counter mismatch"— внутренняя несогласованность"timeout"— не уложились в SLA
При ошибке запросите новую капчу — retry той же картинкой не поможет.
TTL задачи истёк (120 сек) или неверный ID.
Polling
POST /captcha/create→task_id- Ждёте 1-2 сек (solve обычно <200 мс, но буфер на сеть)
POST /captcha/resultс{"task_id": "..."}"pending"— повторить через 2-5 сек"ready"— забирайтеsolution"error"— запросите новую капчу- TTL задачи — 120 сек
Лимиты и SLA
/createFingerprint API
PRODUCTIONГенерация Android-отпечатков из базы 457 реальных устройств. Canvas, WebGL, AudioContext, сенсоры, шрифты — снятые с настоящих телефонов. Подписка по req/min, привязка IP.
Эндпоинт
GET /api/v1/fingerprint/generate -H "X-API-Key: YOUR_KEY"
Параметры
browser — см. версии ниже (default: chrome)
profile — v1 (default) или v2
version — фильтр по версии браузера (для v2)
perfectCanvas — true для perfect canvas хешей
Ответ
// ~375KB JSON { "ua": "Mozilla/5.0 ... Chrome/147.0...", "canvas": "0cd58ae4...", "webgl": { ... }, "audio": { ... }, "battery": { ... }, "sensor": { ... }, "plugins": [ ... ], "fonts": [ ... ], "perfectcanvas": { ... } // если perfectCanvas=true }
V1 и V2
Два профиля генерации на выбор.
9 браузеров, Chrome 146, проверенные отпечатки.
curl "https://pfpulse.tech/api/v1/fingerprint/generate?browser=chrome&profile=v1" \ -H "X-API-Key: YOUR_KEY"
6 браузеров, Chrome 145-147, дифференциация YaBrowser/YaApp, фильтр по версиям.
curl "https://pfpulse.tech/api/v1/fingerprint/generate?browser=yaapp&version=26.3&profile=v2" \ -H "X-API-Key: YOUR_KEY"
Legacy API режим
Поддерживаем совместимый формат для клиентов, которые используют стороннюю API-схему
(поля status: 1/0, response). Документация legacy-режима — по запросу.