---
sidebar_label: "Обзор"
title: "HTTP-клиент - CyberGo HTTPC | Быстрый и безопасный"
description: "CyberGo HTTPC — безопасный HTTP-клиент Go со встроенными TLS 1.2+, защитой от SSRF, экспоненциальной задержкой повторов, цепочкой middleware и пулом соединений."
---

# HTTPC

Безопасная библиотека HTTP-клиента с безопасностью по умолчанию, встроенными интеллектуальными повторными попытками, цепочкой промежуточного ПО и повторным использованием пула объектов.

## Возможности

- **TLS 1.2+** - принудительная минимальная версия TLS, по умолчанию TLS 1.2-1.3
- **Защита от SSRF** - блокировка подключений к приватным IP по умолчанию, настраиваемые исключения CIDR
- **Интеллектуальные повторные попытки** - экспоненциальная задержка с джиттером, настраиваемая стратегия повторов
- **Управление пулом соединений** - высокопроизводительное переиспользование соединений с поддержкой HTTP/2
- **Цепочка промежуточного ПО** - встроенные middleware для логирования, аудита, метрик, восстановления, Request ID и др.
- **Загрузка файлов** - поддержка докачки, обратный вызов прогресса, проверка контрольной суммы
- **DNS-over-HTTPS** - встроенное разрешение DoH для снижения риска перехвата DNS
- **Повторное использование пула объектов** - внутренние объекты ответов и построители строк переиспользуются через sync.Pool, снижая нагрузку на GC

## Установка

```bash
go get github.com/cybergodev/httpc
```

## Попробуйте за 30 секунд

```go
package main

import (
    "fmt"
    "github.com/cybergodev/httpc"
)

func main() {
    result, err := httpc.Get("https://httpbin.org/get")
    if err != nil {
        panic(err)
    }

    fmt.Println(result.StatusCode()) // 200
}
```

## С чего начать

Выберите путь чтения в зависимости от вашей цели:

| Цель | Рекомендация |
|------|-------------|
| Начать за 5 минут | [Быстрый старт](./getting-started/) |
| Практика за 30 минут | [Практическое руководство](./guides/tutorial) |
| Найти конкретный пример | [Шпаргалка](./getting-started/cheatsheet) |
| Изучить безопасность | [Обзор безопасности](./security/) |
| Посмотреть API | [Справочник API](./api-reference/) |

## Основные концепции

HTTPC предлагает три варианта использования: от простого к гибкому:

```text
Функции пакета       Экземпляр клиента               Доменный клиент
httpc.Get()  →  client, _ := httpc.New()  →  dc, _ := httpc.NewDomain(url)
Одноразовый запрос  Настраиваемая конфигурация    Управление сессиями/Cookie
```

### Предустановки конфигурации

| Предустановка | Сценарий применения |
|---------------|---------------------|
| `DefaultConfig()` | Общие сценарии, безопасные значения по умолчанию |
| `SecureConfig()` | Чувствительные к безопасности сценарии, строгие таймауты |
| `PerformanceConfig()` | Высокая пропускная способность, большой пул соединений |
| `TestingConfig()` | Тестовая среда, отключены проверки безопасности |
| `MinimalConfig()` | Лёгкие скрипты, без повторов и перенаправлений |
