Проблема: Необходимость тестирования API, защищённых аутентификацией, через curl. Без корректной передачи учётных данных запрос возвращает 401/403, что блокирует анализ.

Причины: Разные API используют различные механизмы аутентификации (Basic, Bearer, API-ключ, Cookie, Digest). curl требует явного указания соответствующего заголовка или флага.

Решение: Выбрать подходящий тип аутентификации и передать учётные данные безопасно (не в открытую в команде — использовать переменные окружения).

1. Basic Auth
bash
curl -u "${USER}:${PASS}" https://api.example.com/resource

Альтернатива (явный заголовок):
bash
curl -H "Authorization: Basic $(echo -n "${USER}:${PASS}" | base64)" https://api.example.com/resource


2. Bearer Token (JWT/OAuth2)
bash
curl -H "Authorization: Bearer ${TOKEN}" https://api.example.com/resource


3. API Key в заголовке (X-API-Key, X-Key и т.п.)
bash
curl -H "X-API-Key: ${API_KEY}" https://api.example.com/resource


4. Cookie-based (сессия)
bash
curl --cookie "PHPSESSID=${SESSION_ID}" https://api.example.com/resource

Или сохранить/отправить cookies через `-c`/`-b`:
bash
curl -c cookies.txt -u user:pass https://api.example.com/login
curl -b cookies.txt https://api.example.com/resource


5. Digest Auth
bash
curl --digest -u "${USER}:${PASS}" https://api.example.com/resource


6. OAuth2 Client Credentials (получение token)
bash
TOKEN=$(curl -s -X POST -d "grant_type=client_credentials&client_id=${ID}&client_secret=${SECRET}" \
https://auth.example.com/token | jq -r '.access_token')
curl -H "Authorization: Bearer ${TOKEN}" https://api.example.com/resource


Дополнительно (для тестов):
- Пропуск проверки TLS самоподписанных сертификатов: `-k` (только в изолированной среде)
- Детальный вывод заголовков/ответа: `-v` или `-i`
- Использование `--insecure` (аналог `-k`) — не рекомендуется в production