документация api
Здесь только detector API: проверка IP по конфигу проекта. Вход, регистрация и кабинет сюда не входят. Основной адрес — GET/POST https://api.hydrogen.su/detect, ключ проекта берётся из его настроек.
Endpoints
Три адреса: проверка статуса и два способа отправить проверку
https://api.hydrogen.su/healthПроверка статуса detector-сервиса.
Авторизация: Нет
https://api.hydrogen.su/detectПроверка IP по конфигу проекта и возврат нужного формата ответа.
Авторизация: api_key проекта
https://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=verdictPOST — тело 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— внутренняя ошибка детектора.