Как просканировать тысячи сайтов и не сойти с ума — знакомимся с httpx
Представьте ситуацию: вам нужно проверить состояние нескольких сотен (или тысяч) поддоменов. Кто-то еще жив, кто-то переехал на HTTPS, а у кого-то отвалились сертификаты. Можно, конечно, написать Bash-скрипт на коленке с curl, но как только дело дойдет до многопоточности, обработки редиректов и попыток обойти WAF, ваш скрипт превратится в неуправляемого монстра.
Для таких задач существует httpx — швейцарский нож для работы с HTTP-запросами в промышленных масштабах. Это не просто «еще один сканер», а продуманный тулкит от команды ProjectDiscovery, который делает рутинную проверку инфраструктуры быстрой и, что немаловажно, надежной.
Что это за зверь и зачем он вам?
httpx — это CLI-инструмент на языке Go, созданный для тех, кому нужно быстро «прощупать» огромное количество хостов. Его главная фишка в том, что он берет на себя всю грязную работу: делает умные ретраи, корректно обрабатывает таймауты и умеет вытаскивать из ответов серверов практически любую информацию — от заголовков до скриншотов.
Кому он будет полезен?
- DevOps-инженерам: для инвентаризации сервисов и проверки доступности после деплоя.
- Специалистам по безопасности (AppSec): для поиска забытых «хвостов» в инфраструктуре и анализа поверхности атаки.
- Разработчикам: когда нужно быстро проверить, как ведут себя API на разных эндпоинтах.
Пять причин, почему httpx должен быть в вашем терминале
Инструментов для HTTP-запросов много, но httpx выделяется несколькими ключевыми особенностями.
1. Умный фолбэк с HTTPS на HTTP
По умолчанию инструмент сначала стучится по защищенному протоколу. Если HTTPS не отвечает, он автоматически пробует HTTP. Вам не нужно заранее знать, какой протокол поддерживает хост — httpx разберется сам.
2. Невероятная детализация ответов
Обычный статус-код 200 — это скучно. httpx может выдать вам:
- Заголовок страницы (
<title>). - Технологический стек (Wappalyzer под капотом).
- IP-адрес и CNAME записи.
- Хеши иконок (favicon) и тела ответа (помогает найти клоны сайтов).
- Наличие CDN или WAF (Cloudflare, Akamai и прочие).
3. Работа «из коробки» с CIDR и списками
Вам не нужно парсить диапазоны IP-адресов вручную. Просто скормите инструменту подсеть вроде 192.168.1.0/24, и он методично проверит каждый адрес. Кстати, он также отлично понимает формат выгрузки из Burp Suite.
4. Режим «без головы» (Headless)
Иногда простого GET-запроса мало. Если страница рендерится на клиенте через JS, httpx может запустить headless-браузер, дождаться отрисовки и даже сделать скриншот. Это киллер-фича для визуальной разведки.
5. Гибкая фильтрация и матчинг
Представьте, что вам нужны только те сайты, где в заголовке есть слово «Admin» и статус-код не 404. С httpx это делается одной командой:
httpx -l list.txt -title -mc 200 -ms "Admin"
Как это устроено внутри?
Проект написан на Go и использует библиотеку retryablehttp. Это критически важно для работы в нестабильных сетях или при сканировании через защитные барьеры (WAF). Если сервер начинает «капризничать», инструмент делает паузу (backoff) и пробует снова, не теряя данные.
Архитектура модульная: вы можете использовать его как готовую утилиту или как библиотеку в своем собственном Go-проекте. Это позволяет встраивать проверки доступности прямо в ваши микросервисы.
Практические кейсы: от теории к делу
Кейс №1: Быстрая инвентаризация
У вас есть файл domains.txt с тысячей доменов. Нужно понять, что на них крутится.
httpx -l domains.txt -sc -title -td -ip
Вы получите наглядный список: статус-код, заголовок страницы, определенные технологии (например, Nginx, React) и IP-адрес сервера.
Кейс №2: Поиск «битых» ссылок и редиректов
Хотите проследить всю цепочку редиректов?
httpx -u https://example.com -follow-redirects -location
Инструмент покажет, куда именно вас перебрасывает и на каком этапе цепочка обрывается.
Кейс №3: Сбор скриншотов для отчета
Когда нужно визуально оценить масштаб бедствия:
httpx -l targets.txt -screenshot -system-chrome
Инструмент создаст папку со скриншотами всех доступных страниц. Это в разы быстрее, чем открывать каждую ссылку вручную.
Как начать пользоваться?
Установка проще некуда (при условии, что у вас есть Go версии 1.24+):
go install -v github.com/projectdiscovery/httpx/cmd/httpx@latest
Интересно, что разработчики из ProjectDiscovery создали целую экосистему инструментов, которые отлично работают в связке. Например, можно сначала найти поддомены через subfinder, а затем передать их по пайпу в httpx:
subfinder -d example.com | httpx -sc -title
Итог: стоит ли оно того?
Если ваша работа хоть немного касается веба, инфраструктуры или безопасности — однозначно да. httpx экономит часы времени, заменяя собой громоздкие скрипты. Он быстрый, стабильный и, что самое приятное, очень активно развивается сообществом.
Короткий совет напоследок: не запускайте сканирование в 500 потоков на живых продакшн-серверах, если не хотите, чтобы админы пришли к вам с вопросами. У httpx отличные дефолтные настройки, но всегда лучше начинать с малого.
Попробовать проект можно здесь: github.com/projectdiscovery/httpx
Знакомы с этим инструментом или используете что-то другое? Делитесь в комментариях!
