API Reference

Как отправлять визиты вручную и интегрировать сервер со сторонними системами.

Выполнить визит

Запускает браузерный визит для одного лида. Сервер создаёт мгновенный профиль Vision Browser, открывает URL, заполняет форму входа и закрывает профиль.

POST /run/{token}

Замените {token} на значение server.token из вашего конфига. Если server.token пустой — аутентификация отключена.

Заголовки запроса
Content-Type: application/json
Тело запроса
{
  "url":     "https://broker.com/autologin?lead_id=123",
  "ip":      "1.2.3.4",
  "ua":      "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36",
  "geo":     "ua",
  "lang":    "uk-UA,uk;q=0.9,en;q=0.8",
  "referer": "https://landing.example.com/",
  "proxy":   "socks5://proxy.host:1080",
  "pauth":   "user:pass",
  "name":    "Иван",
  "last":    "Шевченко",
  "email":   "ivan@example.com",
  "pass":    "secret123"
}
Поле Тип Обязательное Описание
url string Да Целевой URL для перехода (страница автологина).
ip string Нет IP-адрес лида. Отправляется в заголовках X-Forwarded-For и X-Real-IP.
ua string Нет User-agent строка. Передаётся в заголовке запроса к целевой странице.
geo string Нет Код страны лида (например, ua, de). Информационное поле.
lang string Нет Значение заголовка Accept-Language (например, uk-UA,uk;q=0.9).
referer string Нет Заголовок Referer, отправляемый на целевую страницу.
proxy string Нет URL прокси. Форматы: socks5://host:port, http://host:port или просто host:port (по умолчанию HTTP).
pauth string Нет Авторизация прокси в формате user:pass.
name string Нет Имя лида. Заполняется в input[name=name], input[name=first_name] или input[id*=name].
last string Нет Фамилия лида. Передаётся в запросе, заполняется в поля фамилии где применимо.
email string Нет Email-адрес. Заполняется в input[type=email], input[name=email], input[name=login] или input[id*=email].
pass string Нет Пароль. Заполняется в input[type=password].
Ответы
СтатусТелоЗначение
200 {"success":true} Визит выполнен успешно.
200 {"success":false,"error":"..."} Визит был предпринят, но не удался (ошибка навигации, таймаут и т.д.).
400 plain text Некорректный JSON в теле запроса.
403 plain text Неверный токен в URL.
503 {"success":false,"error":"busy"} Все воркеры заняты. Повторите позже или увеличьте visit.workers в конфиге.
Health check

Возвращает статус сервера. Аутентификация не требуется. Используйте для проверки работоспособности.

GET /health
Ответ
{"status":"ok"}
Тест через curl

Эта команда позволяет отправить тестовый визит из командной строки. Замените localhost:8765 и change-me на реальный адрес сервера и токен.

Пример
curl -s -X POST http://localhost:8765/run/change-me \
  -H "Content-Type: application/json" \
  -d '{
    "url":     "https://example.com/autologin",
    "ip":      "1.2.3.4",
    "ua":      "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36",
    "geo":     "ua",
    "lang":    "uk-UA,uk;q=0.9",
    "referer": "",
    "proxy":   "socks5://proxy.host:1080",
    "pauth":   "user:pass",
    "name":    "Иван",
    "last":    "Шевченко",
    "email":   "ivan@example.com",
    "pass":    "secret123"
  }'
Интеграция с AlterCPA Autologiner

Хак-модуль Autologiner в AlterCPA отправляет лидов через один URL с разделителем |JSON|. Всё, что идёт после |JSON|, сериализуется как JSON-объект и отправляется POST-запросом на адрес перед разделителем. Сервер печатает готовый URL при запуске — просто скопируйте его из терминала.

Вставьте в AlterCPA → хак Autologiner → поле api
http://IP-ВАШЕГО-СЕРВЕРА:8765/run/change-me|JSON|url={url}&ip={ip}&ua={ua}&geo={geo}&lang={lang}&referer={referer}&proxy={proxy}&pauth={pauth}&name={name}&last={last}&email={email}&pass={pass}
Совет: Если AlterCPA и autologin работают на одной машине — используйте localhost или 127.0.0.1. Если на разных — используйте LAN-IP или внешний IP сервера, убедившись, что файервол пропускает входящий TCP на порт 8765.
Справочник по конфигу

Файл autologin-config.yaml создаётся автоматически при первом запуске. Отредактируйте его перед повторным запуском.

server:
  port: 8765          # порт HTTP-сервера
  token: "change-me"  # токен безопасности в /run/{token}; пустая строка — без авторизации

browser:
  type: vision        # антидетект браузер — поддерживается только "vision"
  api_token: ""       # API-токен Vision Browser (Vision → Settings)
  local_url: ""       # необязательно: переопределить URL локального API Vision

visit:
  timeout: 30         # таймаут загрузки страницы, секунды
  headless: true      # запускать браузер в скрытом режиме
  wait_after: 3       # минимальная пауза после загрузки, секунды
  wait_after_max: 8   # максимальная пауза (случайная между wait_after и этим значением)
  workers: 5          # максимум одновременных визитов

log:
  file: ""            # путь к лог-файлу; пусто = вывод в консоль
  level: info         # debug | info | warn | error