Панель
Detector API

документация api

Здесь только detector API: проверка IP по конфигу проекта. Вход, регистрация и кабинет сюда не входят. Основной адрес — GET/POST https://api.hydrogen.su/detect, ключ проекта берётся из его настроек.

Endpoints

Три адреса: проверка статуса и два способа отправить проверку

GEThttps://api.hydrogen.su/health

Проверка статуса detector-сервиса.

Авторизация: Нет

POSThttps://api.hydrogen.su/detect

Проверка IP по конфигу проекта и возврат нужного формата ответа.

Авторизация: api_key проекта

GEThttps://api.hydrogen.su/detect

Те же параметры проверки IP, но через query string.

Авторизация: api_key проекта

Параметры /detect

Одни и те же поля в query и в теле запроса

GET — строка запроса

https://api.hydrogen.su/detect?api_key=hpr_xxx&ip=1.2.3.4&response_mode=proxy_only&include_geo=true&include_usage=true&include_checks=true&fields=proxy&fields=country&fields=city&fields=verdict

POST — тело JSON

{
  "api_key": "hpr_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
  "ip": "1.2.3.4",
  "response_mode": "full | compact | proxy_only",
  "include_geo": false,
  "include_usage": true,
  "include_checks": true,
  "fields": ["proxy", "country", "city", "verdict"]
}

Что означает каждое поле

  • api_key — ключ проекта, обязателен.
  • ip — адрес для проверки, обязателен.
  • response_mode — full, compact или proxy_only.
  • include_geo — добавить гео-данные.
  • include_usage — вернуть расход и лимиты.
  • include_checks — вернуть шаги проверки.
  • fields — оставить в ответе только перечисленные поля.

Примеры cURL

Скопируйте и подставьте свой ключ

GET, только вердикт

curl -G https://api.hydrogen.su/detect \
  --data-urlencode "api_key=hpr_xxx" \
  --data-urlencode "ip=1.2.3.4" \
  --data-urlencode "response_mode=proxy_only"

POST, только вердикт

curl -X POST https://api.hydrogen.su/detect \
  -H "Content-Type: application/json" \
  -d '{"api_key":"hpr_xxx","ip":"1.2.3.4","response_mode":"proxy_only"}'

Вердикт и город со страной

curl -X POST https://api.hydrogen.su/detect \
  -H "Content-Type: application/json" \
  -d '{"api_key":"hpr_xxx","ip":"1.2.3.4","response_mode":"proxy_only","include_geo":true}'

Свой набор полей

curl -X POST https://api.hydrogen.su/detect \
  -H "Content-Type: application/json" \
  -d '{"api_key":"hpr_xxx","ip":"1.2.3.4","include_geo":true,"fields":["proxy","country","city","verdict"]}'

Чеки и настройки

Блоки детекта и параметры, которые задаются в проекте

Списки доступа

Быстрая фильтрация до активных сканов: whitelist пропускает, blacklist блокирует.

  • access.enabled: включает или выключает блок access-правил.
  • access.whitelistIps: список IP/CIDR, которые пропускаются сразу.
  • access.whitelistAsns: список ASN (например AS12345), которые пропускаются сразу.
  • access.blacklistAsns: ASN, которые блокируются сразу.
  • access.blacklistSubnets: подсети CIDR для мгновенной блокировки.
  • access.blockedCountries: список кодов стран (RU, US и т.д.) для блокировки.
  • access.normalizeAsnPrefix: нормализует ASN к формату AS12345.
  • access.normalizeSingleIpTo32: одиночный IP в subnet-листах нормализуется как /32.

Ошибка в whitelist может обойти остальные чеки. Добавляйте только доверенные диапазоны.

Выходные узлы Tor

Проверяет IP по актуальному списку Tor exit нод.

  • scanners.tor.enabled: включает TOR-проверку.
  • scanners.tor.sourceUrl: URL источника списка TOR exit нод.
  • scanners.tor.updateIntervalSec: фиксирован на 3600 сек (не редактируется в UI).

WireGuard

Пробует UDP-порты WireGuard и фиксирует признаки туннеля.

  • scanners.wireguard.enabled: включает модуль.
  • scanners.wireguard.udpPorts: список UDP портов для проверки.
  • scanners.wireguard.timeoutSec: timeout на порт (сек).

SOCKS

Проверяет типичные SOCKS-порты и собирает открытые совпадения.

  • scanners.socks.enabled: включает модуль.
  • scanners.socks.detectSocks5 / detectSocks4: фильтры протоколов.
  • scanners.socks.ports: список TCP портов для сканирования.
  • scanners.socks.timeoutSec: timeout на порт (сек).
  • scanners.socks.workersMultiplier: множитель параллелизма (нагрузка/скорость).

Сервисные порты

Проверяет открытые сервисные порты, типичные для прокси/VPN-инфры.

  • scanners.servicePorts.enabled: включает модуль.
  • scanners.servicePorts.ports: список сервисных TCP портов.
  • scanners.servicePorts.timeoutSec: timeout на порт (сек).

HTTP-прокси

Пробует детектировать HTTP proxy по ответам заголовков и прокси-сигнатурам.

  • scanners.httpProxyProbe.enabled: включает модуль.
  • scanners.httpProxyProbe.ports: порты для HTTP probe.
  • scanners.httpProxyProbe.timeoutSec: timeout запроса (сек).

Рекомендуется включать вместе с servicePorts для более стабильного детекта.

ProxyCheck API

Внешняя валидация через proxycheck.io. При включении стоит дороже по лимиту.

  • scanners.proxycheck.enabled: включает внешний чек.
  • scanners.proxycheck.timeoutSec: timeout внешнего API (сек).
  • scanners.proxycheck.keySource: global_settings или project_config.
  • scanners.proxycheck.privateKey: приватный ключ проекта (если keySource=project_config).

Для высокой нагрузки используйте private key проекта, чтобы не упираться в общий лимит.

Производительность и кеш

Управляет кэшем, параллелизмом и форматом геоданных.

  • runtime.enabled: включает runtime-оптимизации.
  • runtime.cacheWindowHours: окно валидности кэша (часы).
  • runtime.parallelActiveChecks: число параллельных активных проверок.
  • runtime.countryNameMapEnabled: нормализация названия страны.
  • runtime.formatCountryWithCode: формат страны с кодом, например Russia (RU).

Что возвращает /detect

Полный ответ, короткий и коды ошибок

full — по умолчанию

{
  "ok": true,
  "projectId": 12,
  "projectName": "My Project",
  "ip": "1.2.3.4",
  "proxy": false,
  "verdict": "clean",
  "source": "live_check",
  "reason": "no_proxy_signals_detected",
  "payload": { "checks": [...], "checkedAt": 1730000000 },
  "checkedAt": 1730000000,
  "usage": { "todayRequests": 21, "dailyLimit": 10000, "remainingRequests": 9979 },
  "geo": { "city": "Moscow", "country": "Russia", "countryCode": "RU" },
  "city": "Moscow",
  "country": "Russia",
  "countryCode": "RU"
}

proxy_only

{
  "ok": true,
  "ip": "1.2.3.4",
  "proxy": true,
  "verdict": "proxy"
}

Коды ошибок

  • 400 — некорректный IP.
  • 401 — неверный ключ проекта.
  • 429 — дневной лимит тарифа исчерпан.
  • 500 — внутренняя ошибка детектора.