
Быстрый, многозондовый HTTP-инструментарий для разведки и сбора информации. Проверяет TLS, CSP, заголовки, технологический стек и CDN. Поддерживает сопоставление, фильтрацию и вывод в JSON для автоматизированного тестирования безопасности.
Возможности • Установка • Использование • Документация • Примечания • Присоединиться к Discord
httpx — это быстрый и многоцелевой HTTP-инструментарий, позволяющий запускать несколько проверок с использованием библиотеки retryablehttp. Он предназначен для обеспечения надёжности результатов при увеличенном количестве потоков.
httpx требует go >=1.25.0 для успешной установки. Выполните следующую команду, чтобы получить репозиторий:
go install -v github.com/projectdiscovery/httpx/cmd/httpx@latest
Чтобы узнать больше об установке httpx, см. https://docs.projectdiscovery.io/tools/httpx/install.
| ❗ Предупреждение |
|---|
| Этот проект находится в активной разработке. Ожидайте кардинальных изменений в релизах. Перед обновлением просматривайте журнал изменений. |
| Этот проект в первую очередь создавался как самостоятельный CLI-инструмент. Запуск его в качестве сервиса может представлять угрозу безопасности. Рекомендуется использовать с осторожностью и дополнительными мерами безопасности. |
httpx -h
Эта команда отобразит справку по инструменту. Ниже приведены все поддерживаемые флаги.
httpx is a fast and multi-purpose HTTP toolkit that allows running multiple probes using the retryablehttp library.
Usage:
./httpx [flags]
Flags:
INPUT:
-l, -list string входной файл со списком хостов для обработки
-rr, -request string файл с сырым запросом
-u, -target string[] целевой хост(ы) для проверки
-im, -input-mode string режим входного файла (burp)
PROBES:
-sc, -status-code отображать код состояния ответа
-cl, -content-length отображать длину тела ответа
-ct, -content-type отображать тип содержимого ответа
-location отображать адрес перенаправления ответа
-favicon отображать mmh3-хэш для файла '/favicon.ico'
-hash string отображать хэш тела ответа (поддерживается: md5,mmh3,simhash,sha1,sha256,sha512)
-jarm отображать JARM-отпечаток
-rt, -response-time отображать время ответа
-lc, -line-count отображать количество строк в теле ответа
-wc, -word-count отображать количество слов в теле ответа
-title отображать заголовок страницы
-bp, -body-preview отображать первые N символов тела ответа (по умолчанию 100)
-server, -web-server отображать имя сервера
-td, -tech-detect отображать используемые технологии на основе датасета wappalyzer
-cff, -custom-fingerprint-file string путь к файлу пользовательских отпечатков для определения технологии
-method отображать HTTP-метод запроса
-ws, -websocket отображать сервер, использующий websocket
-ip отображать IP-адрес хоста
-cname отображать CNAME хоста
-extract-fqdn, -efqdn извлекать домены и поддомены из тела и заголовков ответа в формате jsonl/csv
-asn отображать информацию ASN хоста
-cdn отображать используемый CDN/WAF (по умолчанию true)
-probe отображать статус проверки
HEADLESS:
-ss, -screenshot включить сохранение скриншота страницы с помощью безголового браузера
-system-chrome включить использование локально установленного Chrome для скриншотов
-ho, -headless-options string[] запустить безголовый Chrome с дополнительными параметрами
-esb, -exclude-screenshot-bytes исключить байты скриншота из JSON-вывода
-ehb, -exclude-headless-body исключить безголовый заголовок из JSON-вывода
-no-screenshot-full-page отключить сохранение полноразмерного скриншота страницы
-st, -screenshot-timeout value установить тайм-аут для скриншота в секундах (по умолчанию 10s)
-sid, -screenshot-idle value установить время ожидания перед созданием скриншота в секундах (по умолчанию 1s)
-jsc, -javascript-code string[] выполнить JavaScript-код после навигации
MATCHERS:
-mc, -match-code string сопоставить ответ с указанным кодом состояния (-mc 200,302)
-ml, -match-length string сопоставить ответ с указанной длиной содержимого (-ml 100,102)
-mlc, -match-line-count string сопоставить тело ответа с указанным количеством строк (-mlc 423,532)
-mwc, -match-word-count string сопоставить тело ответа с указанным количеством слов (-mwc 43,55)
-mfc, -match-favicon string[] сопоставить ответ с указанным хэшем фавикона (-mfc 1494302000)
-ms, -match-string string[] сопоставить ответ с указанной строкой (-ms admin)
-mr, -match-regex string[] сопоставить ответ с указанным regex (-mr admin)
-mcdn, -match-cdn string[] сопоставить хост с указанным CDN-провайдером (cloudfront, fastly, google и т.д.)
-mrt, -match-response-time string сопоставить ответ с указанным временем ответа в секундах (-mrt '< 1')
-mdc, -match-condition string сопоставить ответ с условием DSL-выражения
EXTRACTOR:
-er, -extract-regex string[] отображать содержимое ответа, совпадающее с regex
-ep, -extract-preset string[] отображать содержимое ответа, совпадающее с предопределённым regex (url,ipv4,mail)
FILTERS:
-fc, -filter-code string фильтровать ответы по указанному коду состояния (-fc 403,401)
-fpt, -filter-page-type string[] фильтровать ответы по указанному типу страницы (например, -fpt login,captcha,parked)
-fep, -filter-error-page [УСТАРЕЛО: используйте -fpt] фильтровать ответы с помощью ML-определения страниц ошибок
-fd, -filter-duplicates отфильтровать почти дублирующиеся ответы (сохраняется только первый ответ)
-fl, -filter-length string фильтровать ответы по указанной длине содержимого (-fl 23,33)
-flc, -filter-line-count string фильтровать тело ответа по указанному количеству строк (-flc 423,532)
-fwc, -filter-word-count string фильтровать тело ответа по указанному количеству слов (-fwc 423,532)
-ffc, -filter-favicon string[] фильтровать ответы по указанному хэшу фавикона (-ffc 1494302000)
-fs, -filter-string string[] фильтровать ответы по указанной строке (-fs admin)
-fe, -filter-regex string[] фильтровать ответы по указанному regex (-fe admin)
-fcdn, -filter-cdn string[] фильтровать хост по указанному CDN-провайдеру (cloudfront, fastly, google и т.д.)
-frt, -filter-response-time string фильтровать ответы по указанному времени ответа в секундах (-frt '> 1')
-fdc, -filter-condition string фильтровать ответы по условию DSL-выражения
-strip удаляет все теги в ответе. Поддерживаемые форматы: html,xml (по умолчанию html)
-lof, -list-output-fields список полей для вывода (через запятую)
-eof, -exclude-output-fields string[] исключить поля вывода на основе условия
RATE-LIMIT:
-t, -threads int количество потоков (по умолчанию 50)
-rl, -rate-limit int максимальное количество запросов в секунду (по умолчанию 150)
-rlm, -rate-limit-minute int максимальное количество запросов в минуту
MISCELLANEOUS:
-pa, -probe-all-ips проверять все IP-адреса, связанные с одним хостом
-p, -ports string[] порты для проверки (синтаксис nmap: например http:1,2-10,11,https:80)
-path string путь или список путей для проверки (через запятую, файл)
-tls-probe отправлять HTTP-проверки на извлечённые TLS-домены (dns_name)
-csp-probe отправлять HTTP-проверки на извлечённые CSP-домены
-tls-grab выполнять сбор данных TLS(SSL)
-pipeline проверять и отображать серверы, поддерживающие HTTP1.1 pipeline
-http2 проверять и отображать серверы, поддерживающие HTTP2
-vhost проверять и отображать серверы, поддерживающие VHOST
-ldv, -list-dsl-variables вывести имена ключей полей JSON-вывода, поддерживающие DSL-матчер/фильтр
UPDATE:
-up, -update обновить httpx до последней версии
-duc, -disable-update-check отключить автоматическую проверку обновлений httpx
OUTPUT:
-o, -output string файл для записи результатов
-oa, -output-all имя файла для записи результатов во всех форматах
-sr, -store-response сохранять HTTP-ответы в выходную директорию
-srd, -store-response-dir string сохранять HTTP-ответы в пользовательскую директорию
-ob, -omit-body исключить тело ответа из вывода
-csv сохранять вывод в формате CSV
-csvo, -csv-output-encoding string задать кодировку вывода
-j, -json сохранять вывод в формате JSONL(ines)
-irh, -include-response-header включать HTTP-заголовки ответа в JSON-вывод (только -json)
-irr, -include-response включать HTTP-запрос/ответ (заголовки + тело) в JSON-вывод (только -json)
-irrb, -include-response-base64 включать HTTP-запрос/ответ в кодировке base64 в JSON-вывод (только -json)
-include-chain включать цепочку перенаправлений HTTP в JSON-вывод (только -json)
-store-chain включать цепочку перенаправлений HTTP в ответы (только -sr)
-svrc, -store-vision-recon-cluster включать кластеры визуальной разведки (только -ss и -sr)
-pr, -protocol string используемый протокол (unknown, http11, http2, http3)
-fepp, -filter-error-page-path string путь для сохранения отфильтрованных страниц ошибок (по умолчанию "filtered_error_page.json")
-rdb, -result-db сохранять результаты в базе данных
-rdbc, -result-db-config string путь к файлу конфигурации базы данных
-rdbt, -result-db-type string тип базы данных (mongodb, postgres, mysql)
-rdbcs, -result-db-conn string строка подключения к БД (env: HTTPX_DB_CONNECTION_STRING)
-rdbn, -result-db-name string имя базы данных (по умолчанию "httpx")
-rdbtb, -result-db-table string имя таблицы/коллекции (по умолчанию "results")
-rdbbs, -result-db-batch-size int размер пакета для вставок в БД (по умолчанию 100)
-rdbor, -result-db-omit-raw исключать сырые данные запроса/ответа из БД
CONFIGURATIONS:
-config string путь к файлу конфигурации httpx (по умолчанию $HOME/.config/httpx/config.yaml)
-r, -resolvers string[] список пользовательских резолверов (файл или через запятую)
-allow string[] разрешённый список IP/CIDR для обработки (файл или через запятую)
-deny string[] запрещённый список IP/CIDR для обработки (файл или через запятую)
-sni, -sni-name string пользовательское TLS SNI-имя
-random-agent включить случайный User-Agent (по умолчанию true)
-auto-referer устанавливать заголовок Referer равным текущему URL
-H, -header string[] пользовательские HTTP-заголовки для отправки с запросом
-http-proxy, -proxy string прокси (http|socks) для использования (например http://127.0.0.1:8080)
-unsafe отправлять сырые запросы, минуя нормализацию Go
-resume возобновить сканирование с использованием resume.cfg
-fr, -follow-redirects следовать HTTP-перенаправлениям
-maxr, -max-redirects int максимальное количество перенаправлений на хост (по умолчанию 10)
-fhr, -follow-host-redirects следовать перенаправлениям на том же хосте
-rhsts, -respect-hsts соблюдать заголовки HSTS при запросах перенаправления
-vhost-input получить список vhost'ов в качестве входных данных
-x string проверяемые HTTP-методы, используйте 'all' для проверки всех методов
-body string тело POST-запроса для включения в HTTP-запрос
-s, -stream потоковый режим — начать обработку входных целей без сортировки
-sd, -skip-dedupe отключить дедупликацию входных элементов (только в потоковом режиме)
-ldp, -leave-default-ports оставлять порты HTTP/HTTPS по умолчанию в заголовке Host (например http://host:80 - https://host:443)
-ztls использовать библиотеку ztls с автоматическим переходом на стандартную для tls13
-no-decode не декодировать тело
-tlsi, -tls-impersonate включить экспериментальную рандомизацию TLS (ja3) client hello
-no-stdin отключить обработку Stdin
-hae, -http-api-endpoint string экспериментальный HTTP API-эндпоинт
-sf, -secret-file string путь к файлу секретов для аутентификации
DEBUG:
-health-check, -hc выполнить диагностическую проверку
-debug отображать содержимое запроса/ответа в CLI
-debug-req отображать содержимое запроса в CLI
-debug-resp отображать содержимое ответа в CLI
-version отобразить версию httpx
-stats отображать статистику сканирования
-profile-mem string необязательный файл дампа памяти httpx
-silent тихий режим
-v, -verbose подробный режим
-si, -stats-interval int количество секунд между обновлениями статистики (по умолчанию: 5)
-nc, -no-color отключить цвета в выводе CLI
-tr, -trace трассировка
OPTIMIZATIONS:
-nf, -no-fallback отображать оба проверенных протокола (HTTPS и HTTP)
-nfs, -no-fallback-scheme проверять с протоколом, указанным во входных данных
-maxhr, -max-host-error int максимальное количество ошибок на хост перед пропуском оставшихся путей (по умолчанию 30)
-e, -exclude string[] исключить хост, соответствующий указанному фильтру ('cdn', 'private-ips', cidr, ip, regex)
-retries int количество повторных попыток
-timeout int тайм-аут в секундах (по умолчанию 10)
-delay value задержка между HTTP-запросами (например: 200ms, 1s) (по умолчанию -1ns)
-rsts, -response-size-to-save int максимальный размер сохраняемого ответа в байтах (по умолчанию 50000000)
-rstr, -response-size-to-read int максимальный размер читаемого ответа в байтах (по умолчанию 50000000)
CLOUD:
-auth настроить API-ключ projectdiscovery cloud (pdcp) (по умолчанию true)
-ac, -auth-config string настроить файл учётных данных API-ключа projectdiscovery cloud (pdcp)
-pd, -dashboard загрузить/просмотреть вывод в панели управления projectdiscovery cloud (pdcp)
-tid, -team-id string загрузить результаты активов для указанного ID команды (необязательно)
-aid, -asset-id string загрузить новые активы в существующий ID актива (необязательно)
-aname, -asset-name string задать имя группы активов (необязательно)
-pdu, -dashboard-upload string загрузить файл вывода httpx (jsonl) в панель управления projectdiscovery cloud (pdcp)
Подробнее о запуске httpx см. https://docs.projectdiscovery.io/tools/httpx/running.
httpx как библиотекиhttpx можно использовать как библиотеку, создав экземпляр структуры Option и заполнив её теми же параметрами, которые задаются через CLI. После проверки структура передаётся экземпляру runner (который следует закрыть в конце программы), и вызывается метод RunEnumeration. Минимальный пример находится в папке examples.
httpx проверяет схему HTTPS и переходит на HTTP, только если HTTPS недоступен.-l burp-export.xml -im burp.-no-fallback позволяет проверять и отображать результаты как для HTTP, так и для HTTPS.-ports http:443,http:80,https:8443.protocol:resolver:port (например, udp:127.0.0.1:53).-sf secrets.yaml. Поддерживаемые типы аутентификации: BasicAuth, BearerToken, Header, Cookie, . Пример:
Функция проверки вдохновлена работой @tomnomnom/httprobe ❤️
httpx создан с 💙 командой projectdiscovery и распространяется под лицензией MIT.
| Проверка | Проверка по умолчанию | Проверка | Проверка по умолчанию |
|---|
| URL | true | IP | true |
| Title | true | CNAME | true |
| Status Code | true | Raw HTTP | false |
| Content Length | true | HTTP2 | false |
| TLS Certificate | true | HTTP Pipeline | false |
| CSP Header | true | Virtual host | false |
| Line Count | true | Word Count | true |
| Location Header | true | CDN | false |
| Web Server | true | Paths | false |
| Web Socket | true | Ports | false |
| Response Time | true | Request Method | true |
| Favicon Hash | false | Probe Status | false |
| Body Hash | true | Header Hash | true |
| Redirect chain | false | URL Scheme | true |
| JARM Hash | false | ASN | false |
Queryid: example-auth
info:
name: Example Auth Config
static:
- type: Header
domains:
- api.example.com
headers:
- key: X-API-Key
value: secret-key-here
- type: BasicAuth
domains-regex:
- ".*\\.internal\\.com$"
username: admin
password: secret
-ports-path-vhost-screenshot-csp-probe-tls-probe-favicon-http2-pipeline-tls-impersonate