
httpx v1.10.0
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.
Características
- Base de código simple y modular que facilita la contribución.
- Flags rápidos y totalmente configurables para sondear múltiples elementos.
- Soporta múltiples sondeos basados en HTTP.
- Retroceso automático inteligente de https a http por defecto.
- Soporta hosts, URLs y CIDR como entrada.
- Maneja casos extremos realizando reintentos, backoffs, etc., para manejar WAFs.
Sondeos soportados
| 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 |
Instrucciones de instalación
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. |
Uso
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)
Ejecución de httpx
Para más detalles sobre la ejecución de httpx, consulte https://docs.projectdiscovery.io/tools/httpx/running.
Usar httpx como biblioteca
httpx 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.
Notas
- Por defecto,
httpxsondea con el esquema HTTPS y retrocede a HTTP solo si HTTPS no es alcanzable. - Las exportaciones XML de Burp Suite se pueden usar como entrada con
-l burp-export.xml -im burp - La bandera
-no-fallbackse puede usar para sondear y mostrar ambos resultados HTTP y HTTPS. - Se puede definir un esquema personalizado para puertos, por ejemplo
-ports http:443,http:80,https:8443 - El resolvedor personalizado soporta múltiples protocolos (doh|tcp|udp) en la forma
protocolo:resolvedor:puerto(ej.udp:127.0.0.1:53) - Los archivos secretos se pueden usar para autenticación basada en dominio mediante
-sf secrets.yaml. Tipos de autenticación soportados:BasicAuth,BearerToken,Header,Cookie,Query. Ejemplo:id: 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 - Las siguientes banderas deben usarse para casos de uso específicos en lugar de ejecutarlas por defecto con otros sondeos:
-ports-path-vhost-screenshot-csp-probe-tls-probe-favicon-http2-pipeline-tls-impersonate
Agradecimientos
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.
