
Kit de herramientas HTTP rápido y con múltiples sondas para reconocimiento y recopilación de información. Sondas TLS, CSP, encabezados, pila tecnológica y CDN. Soporta coincidentes, filtros y salida JSON para pruebas de seguridad automatizadas.
Características • Instalación • Uso • Documentación • Notas • Unirse a Discord
httpx es un kit de herramientas HTTP rápido y multipropósito que permite ejecutar múltiples sondeos utilizando la biblioteca retryablehttp. Está diseñado para mantener la fiabilidad de los resultados con un número creciente de hilos.
httpx requiere go >=1.25.0 para instalarse correctamente. Ejecute el siguiente comando para obtener el repositorio:
go install -v github.com/projectdiscovery/httpx/cmd/httpx@latest
Para obtener más información sobre la instalación de httpx, consulte https://docs.projectdiscovery.io/tools/httpx/install.
| ❗ Aviso |
|---|
| Este proyecto está en desarrollo activo. Espere cambios importantes con los lanzamientos. Revise el registro de cambios antes de actualizar. |
| Este proyecto fue construido principalmente para ser utilizado como una herramienta CLI independiente. Ejecutarlo como un servicio puede presentar riesgos de seguridad. Se recomienda usarlo con precaución y medidas de seguridad adicionales. |
httpx -h
Esto mostrará la ayuda de la herramienta. Aquí están todos los interruptores que soporta.
httpx es un kit de herramientas HTTP rápido y multipropósito que permite ejecutar múltiples sondeos utilizando la biblioteca retryablehttp.
Uso:
./httpx [flags]
Flags:
ENTRADA:
-l, -list string archivo de entrada que contiene la lista de hosts a procesar
-rr, -request string archivo que contiene la solicitud en bruto
-u, -target string[] host(s) objetivo de entrada a sondear
-im, -input-mode string modo de archivo de entrada (burp)
SONDEOS:
-sc, -status-code mostrar el código de estado de la respuesta
-cl, -content-length mostrar la longitud del contenido de la respuesta
-ct, -content-type mostrar el tipo de contenido de la respuesta
-location mostrar la ubicación de redirección de la respuesta
-favicon mostrar el hash mmh3 para el archivo '/favicon.ico'
-hash string mostrar el hash del cuerpo de la respuesta (soportado: md5,mmh3,simhash,sha1,sha256,sha512)
-jarm mostrar el hash de huella digital jarm
-rt, -response-time mostrar el tiempo de respuesta
-lc, -line-count mostrar el recuento de líneas del cuerpo de la respuesta
-wc, -word-count mostrar el recuento de palabras del cuerpo de la respuesta
-title mostrar el título de la página
-bp, -body-preview mostrar los primeros N caracteres del cuerpo de la respuesta (por defecto 100)
-server, -web-server mostrar el nombre del servidor
-td, -tech-detect mostrar la tecnología en uso basada en el conjunto de datos de wappalyzer
-cff, -custom-fingerprint-file string ruta a un archivo de huella digital personalizado para la detección de tecnología
-method mostrar el método de solicitud HTTP
-ws, -websocket mostrar el servidor que utiliza websocket
-ip mostrar la IP del host
-cname mostrar el cname del host
-extract-fqdn, -efqdn obtener dominio y subdominios del cuerpo y cabecera de la respuesta en salida jsonl/csv
-asn mostrar información asn del host
-cdn mostrar cd /waf en uso (por defecto verdadero)
-probe mostrar el estado del sondeo
SIN CABEZA (HEADLESS):
-ss, -screenshot habilitar guardar captura de pantalla de la página usando navegador sin cabeza
-system-chrome habilitar el uso de Chrome instalado localmente para la captura de pantalla
-ho, -headless-options string[] iniciar chrome sin cabeza con opciones adicionales
-esb, -exclude-screenshot-bytes habilitar excluir bytes de captura de pantalla de la salida json
-ehb, -exclude-headless-body habilitar excluir cabecera sin cabeza de la salida json
-no-screenshot-full-page deshabilitar guardar captura de pantalla de página completa
-st, -screenshot-timeout value establecer tiempo de espera para la captura de pantalla en segundos (por defecto 10s)
-sid, -screenshot-idle value establecer tiempo de inactividad antes de tomar la captura de pantalla en segundos (por defecto 1s)
-jsc, -javascript-code string[] ejecutar código JavaScript después de la navegación
COINCIDENCIAS (MATCHERS):
-mc, -match-code string coincidir respuesta con código de estado especificado (-mc 200,302)
-ml, -match-length string coincidir respuesta con longitud de contenido especificada (-ml 100,102)
-mlc, -match-line-count string coincidir cuerpo de respuesta con recuento de líneas especificado (-mlc 423,532)
-mwc, -match-word-count string coincidir cuerpo de respuesta con recuento de palabras especificado (-mwc 43,55)
-mfc, -match-favicon string[] coincidir respuesta con hash de favicon especificado (-mfc 1494302000)
-ms, -match-string string[] coincidir respuesta con cadena especificada (-ms admin)
-mr, -match-regex string[] coincidir respuesta con expresión regular especificada (-mr admin)
-mcdn, -match-cdn string[] coincidir host con proveedor CDN especificado (cloudfront, fastly, google, etc.)
-mrt, -match-response-time string coincidir respuesta con tiempo de respuesta especificado en segundos (-mrt '< 1')
-mdc, -match-condition string coincidir respuesta con condición de expresión dsl
EXTRACTORES:
-er, -extract-regex string[] mostrar contenido de respuesta con expresión regular coincidente
-ep, -extract-preset string[] mostrar contenido de respuesta coincidente con una expresión regular predefinida (url,ipv4,mail)
FILTROS:
-fc, -filter-code string filtrar respuesta con código de estado especificado (-fc 403,401)
-fpt, -filter-page-type string[] filtrar respuesta con tipo de página especificado (ej. -fpt login,captcha,parked)
-fep, -filter-error-page [OBSOLETO: usar -fpt] filtrar respuesta con detección de página de error basada en ML
-fd, -filter-duplicates filtrar respuestas casi duplicadas (solo se conserva la primera respuesta)
-fl, -filter-length string filtrar respuesta con longitud de contenido especificada (-fl 23,33)
-flc, -filter-line-count string filtrar cuerpo de respuesta con recuento de líneas especificado (-flc 423,532)
-fwc, -filter-word-count string filtrar cuerpo de respuesta con recuento de palabras especificado (-fwc 423,532)
-ffc, -filter-favicon string[] filtrar respuesta con hash de favicon especificado (-ffc 1494302000)
-fs, -filter-string string[] filtrar respuesta con cadena especificada (-fs admin)
-fe, -filter-regex string[] filtrar respuesta con expresión regular especificada (-fe admin)
-fcdn, -filter-cdn string[] filtrar host con proveedor CDN especificado (cloudfront, fastly, google, etc.)
-frt, -filter-response-time string filtrar respuesta con tiempo de respuesta especificado en segundos (-frt '> 1')
-fdc, -filter-condition string filtrar respuesta con condición de expresión dsl
-strip eliminar todas las etiquetas en la respuesta. formatos soportados: html,xml (por defecto html)
-lof, -list-output-fields listar campos de salida (separados por comas)
-eof, -exclude-output-fields string[] excluir campos de salida basados en una condición
LÍMITE DE VELOCIDAD:
-t, -threads int número de hilos a usar (por defecto 50)
-rl, -rate-limit int máximo de solicitudes por segundo (por defecto 150)
-rlm, -rate-limit-minute int número máximo de solicitudes por minuto
VARIOS:
-pa, -probe-all-ips sondear todas las IP asociadas con el mismo host
-p, -ports string[] puertos a sondear (sintaxis nmap: ej http:1,2-10,11,https:80)
-path string ruta o lista de rutas a sondear (separadas por comas, archivo)
-tls-probe enviar sondeos http en los dominios TLS extraídos (dns_name)
-csp-probe enviar sondeos http en los dominios CSP extraídos
-tls-grab realizar captura de datos TLS(SSL)
-pipeline sondear y mostrar servidor compatible con tubería HTTP1.1
-http2 sondear y mostrar servidor compatible con HTTP2
-vhost sondear y mostrar servidor compatible con VHOST
-ldv, -list-dsl-variables listar nombres de claves de campo de salida json que soportan coincidencia/filtrado dsl
ACTUALIZACIÓN:
-up, -update actualizar httpx a la última versión
-duc, -disable-update-check deshabilitar la verificación automática de actualizaciones de httpx
SALIDA:
-o, -output string archivo para escribir los resultados de salida
-oa, -output-all nombre de archivo para escribir resultados en todos los formatos
-sr, -store-response almacenar respuesta http en el directorio de salida
-srd, -store-response-dir string almacenar respuesta http en un directorio personalizado
-ob, -omit-body omitir el cuerpo de la respuesta en la salida
-csv almacenar salida en formato csv
-csvo, -csv-output-encoding string definir codificación de salida
-j, -json almacenar salida en formato JSONL(ines)
-irh, -include-response-header incluir cabecera de respuesta http en salida JSON (solo -json)
-irr, -include-response incluir solicitud/respuesta http (cabeceras + cuerpo) en salida JSON (solo -json)
-irrb, -include-response-base64 incluir solicitud/respuesta http codificada en base64 en salida JSON (solo -json)
-include-chain incluir cadena de redirección http en salida JSON (solo -json)
-store-chain incluir cadena de redirección http en respuestas (solo -sr)
-svrc, -store-vision-recon-cluster incluir clusters de reconocimiento visual (solo -ss y -sr)
-pr, -protocol string protocolo a usar (unknown, http11, http2, http3)
-fepp, -filter-error-page-path string ruta para almacenar páginas de error filtradas (por defecto "filtered_error_page.json")
-rdb, -result-db almacenar resultados en base de datos
-rdbc, -result-db-config string ruta al archivo de configuración de la base de datos
-rdbt, -result-db-type string tipo de base de datos (mongodb, postgres, mysql)
-rdbcs, -result-db-conn string cadena de conexión de base de datos (env: HTTPX_DB_CONNECTION_STRING)
-rdbn, -result-db-name string nombre de la base de datos (por defecto "httpx")
-rdbtb, -result-db-table string nombre de tabla/colección (por defecto "results")
-rdbbs, -result-db-batch-size int tamaño de lote para inserciones en base de datos (por defecto 100)
-rdbor, -result-db-omit-raw omitir datos de solicitud/respuesta en bruto de la base de datos
CONFIGURACIONES:
-config string ruta al archivo de configuración de httpx (por defecto $HOME/.config/httpx/config.yaml)
-r, -resolvers string[] lista de resolvedor personalizado (archivo o separado por comas)
-allow string[] lista permitida de IP/CIDR a procesar (archivo o separado por comas)
-deny string[] lista denegada de IP/CIDR a procesar (archivo o separado por comas)
-sni, -sni-name string nombre TLS SNI personalizado
-random-agent habilitar User-Agent aleatorio (por defecto verdadero)
-auto-referer establecer la cabecera Referer a la URL actual
-H, -header string[] cabeceras http personalizadas para enviar con la solicitud
-http-proxy, -proxy string proxy (http|socks) a usar (ej http://127.0.0.1:8080)
-unsafe enviar solicitudes en bruto saltando la normalización de golang
-resume reanudar escaneo usando resume.cfg
-fr, -follow-redirects seguir redirecciones http
-maxr, -max-redirects int número máximo de redirecciones a seguir por host (por defecto 10)
-fhr, -follow-host-redirects seguir redirecciones en el mismo host
-rhsts, -respect-hsts respetar cabeceras de respuesta HSTS para solicitudes de redirección
-vhost-input obtener una lista de vhosts como entrada
-x string métodos de solicitud a sondear, usar 'all' para sondear todos los métodos HTTP
-body string cuerpo post a incluir en la solicitud http
-s, -stream modo flujo - empezar a elaborar objetivos de entrada sin ordenar
-sd, -skip-dedupe deshabilitar deduplicación de elementos de entrada (solo usado con modo flujo)
-ldp, -leave-default-ports dejar puertos http/https por defecto en la cabecera del host (ej. http://host:80 - https://host:443)
-ztls usar biblioteca ztls con retroceso automático a la estándar para tls13
-no-decode evitar decodificar el cuerpo
-tlsi, -tls-impersonate habilitar aleatorización experimental de client hello (ja3) tls
-no-stdin Deshabilitar procesamiento de Stdin
-hae, -http-api-endpoint string punto final experimental de api http
-sf, -secret-file string ruta al archivo secreto para autenticación
DEPURACIÓN:
-health-check, -hc ejecutar comprobación de diagnóstico
-debug mostrar contenido de solicitud/respuesta en cli
-debug-req mostrar contenido de solicitud en cli
-debug-resp mostrar contenido de respuesta en cli
-version mostrar versión de httpx
-stats mostrar estadísticas de escaneo
-profile-mem string archivo opcional de volcado de perfil de memoria de httpx
-silent modo silencioso
-v, -verbose modo verboso
-si, -stats-interval int número de segundos a esperar entre mostrar una actualización de estadísticas (por defecto: 5)
-nc, -no-color deshabilitar colores en la salida cli
-tr, -trace traza
OPTIMIZACIONES:
-nf, -no-fallback mostrar ambos protocolos sondeados (HTTPS y HTTP)
-nfs, -no-fallback-scheme sondear con el esquema de protocolo especificado en la entrada
-maxhr, -max-host-error int número máximo de errores por host antes de saltar la(s) ruta(s) restante(s) (por defecto 30)
-e, -exclude string[] excluir host que coincida con el filtro especificado ('cdn', 'private-ips', cidr, ip, regex)
-retries int número de reintentos
-timeout int tiempo de espera en segundos (por defecto 10)
-delay value duración entre cada solicitud http (ej: 200ms, 1s) (por defecto -1ns)
-rsts, -response-size-to-save int tamaño máximo de respuesta a guardar en bytes (por defecto 50000000)
-rstr, -response-size-to-read int tamaño máximo de respuesta a leer en bytes (por defecto 50000000)
NUBE:
-auth configurar clave api de projectdiscovery cloud (pdcp) (por defecto verdadero)
-ac, -auth-config string configurar archivo de credenciales de clave api de projectdiscovery cloud (pdcp)
-pd, -dashboard subir / ver salida en el panel de UI de projectdiscovery cloud (pdcp)
-tid, -team-id string subir resultados de activos al ID de equipo dado (opcional)
-aid, -asset-id string subir nuevos activos a un ID de activo existente (opcional)
-aname, -asset-name string nombre del grupo de activos a establecer (opcional)
-pdu, -dashboard-upload string subir archivo de salida de httpx (jsonl) en el panel de UI de projectdiscovery cloud (pdcp)
Para más detalles sobre la ejecución de httpx, consulte https://docs.projectdiscovery.io/tools/httpx/running.
httpx como bibliotecahttpx se puede usar como biblioteca creando una instancia de la estructura Option y poblándola con las mismas opciones que se especificarían a través de CLI. Una vez validada, la estructura debe pasarse a una instancia de runner (que se cerrará al final del programa) y se debe llamar al método RunEnumeration. Un ejemplo mínimo de cómo hacerlo está en la carpeta examples.
httpx sondea con el esquema HTTPS y retrocede a HTTP solo si HTTPS no es alcanzable.-l burp-export.xml -im burp-no-fallback se puede usar para sondear y mostrar ambos resultados HTTP y HTTPS.-ports http:443,http:80,https:8443protocolo:resolvedor:puerto (ej. udp:127.0.0.1:53)-sf secrets.yaml. Tipos de autenticación soportados: BasicAuth, BearerToken, Header, Cookie, . Ejemplo:
La función de sondeo está inspirada en el trabajo de @tomnomnom/httprobe ❤️
httpx está hecho con 💙 por el equipo de projectdiscovery y distribuido bajo la Licencia MIT.
| Sondas | Verificación por defecto | Sondas | Verificación por defecto |
|---|
| URL | verdadero | IP | verdadero |
| Título | verdadero | CNAME | verdadero |
| Código de estado | verdadero | HTTP en bruto | falso |
| Longitud del contenido | verdadero | HTTP2 | falso |
| Certificado TLS | verdadero | Tubería HTTP | falso |
| Cabecera CSP | verdadero | Host virtual | falso |
| Recuento de líneas | verdadero | Recuento de palabras | verdadero |
| Cabecera de ubicación | verdadero | CDN | falso |
| Servidor web | verdadero | Rutas | falso |
| Web Socket | verdadero | Puertos | falso |
| Tiempo de respuesta | verdadero | Método de solicitud | verdadero |
| Hash de favicon | falso | Estado de sonda | falso |
| Hash del cuerpo | verdadero | Hash de cabecera | verdadero |
| Cadena de redirecciones | falso | Esquema de URL | verdadero |
| Hash JARM | falso | ASN | falso |
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