Metadata-Version: 2.4
Name: httpprobe-axx
Version: 0.1.0
Summary: Учебный HTTP-клиент для white-hat: запросы и анализ заголовков безопасности
Author: Богдан
License-Expression: MIT
Project-URL: Homepage, https://pypi.org/project/httpprobe-axx/
Keywords: http,security,whitehat,education
Classifier: Programming Language :: Python :: 3
Classifier: Operating System :: OS Independent
Classifier: Intended Audience :: Education
Requires-Python: >=3.9
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: requests>=2.31
Dynamic: license-file

# httpprobe-axx

Учебный HTTP-клиент для white-hat: запросы и анализ заголовков безопасности.

⚠️ **Только для своих сайтов или с разрешения владельца.**
Это образовательный проект, а не инструмент для атак.

## Установка

    pip install httpprobe-axx

## Что умеет

- `get(url)` — GET-запрос
- `head(url)` — только заголовки
- `status(url)` — код ответа (200, 404, ...)
- `is_alive(url)` — отвечает ли сайт
- `security_headers(url)` — какие защитные заголовки есть
- `check_https(url)` — использует ли сайт HTTPS
- `report(url)` — красивый текстовый отчёт

## Пример

    import httpprobe_axx as h

    print(h.is_alive("https://example.com"))   # True
    print(h.report("https://github.com"))

Пример вывода:

    === Отчёт по https://github.com ===

    HTTPS: ✅ да
    Итоговый URL: https://github.com/
    Статус: 200
    Ответ за: 280 мс

    Заголовки безопасности:
      ✅ Strict-Transport-Security
      ✅ Content-Security-Policy
      ✅ X-Frame-Options
      ✅ X-Content-Type-Options
      ✅ Referrer-Policy
      ❌ Permissions-Policy
          → Ограничение API браузера

    Итог: 5/6 защитных заголовков присутствуют

## Какие заголовки проверяются

| Заголовок | Зачем |
|---|---|
| Strict-Transport-Security | Заставляет браузер использовать HTTPS |
| Content-Security-Policy | Защита от XSS и инъекций |
| X-Frame-Options | Защита от clickjacking |
| X-Content-Type-Options | Запрет MIME-sniffing |
| Referrer-Policy | Контроль утечки referrer |
| Permissions-Policy | Ограничение API браузера |

## Обработка ошибок

    import httpprobe_axx as h

    try:
        r = h.get("https://несуществующий-сайт.рф")
    except h.ProbeError as e:
        print("Не получилось:", e)

## Лицензия

MIT — делай что хочешь, только укажи автора.

Автор: Богдан, 12 лет.
