
httpx v1.10.0
Ferramenta HTTP rápida e multiprobe para reconhecimento e coleta de informações. Testa TLS, CSP, cabeçalhos, pilha tecnológica e CDN. Suporta correspondências, filtros e saída JSON para testes automatizados de segurança.
Funcionalidades • Instalação • Uso • Documentação • Notas • Entrar no Discord
httpx é um kit de ferramentas HTTP rápido e multifuncional que permite executar múltiplas sondas usando a biblioteca retryablehttp. É projetado para manter a confiabilidade dos resultados com um número maior de threads.
Funcionalidades
- Base de código simples e modular, facilitando a contribuição.
- Flags rápidas e totalmente configuráveis para sondar múltiplos elementos.
- Suporta múltiplas sondagens baseadas em HTTP.
- Fallback automático inteligente de https para http por padrão.
- Suporta hosts, URLs e CIDR como entrada.
- Lida com casos extremos realizando retentativas, backoffs etc. para lidar com WAFs.
Sondas suportadas
| Sondas | Verificação padrão | Sondas | Verificação padrão |
|---|---|---|---|
| URL | true | IP | true |
| Título | true | CNAME | true |
| Código de Status | true | HTTP Bruto | false |
| Tamanho do Conteúdo | true | HTTP2 | false |
| Certificado TLS | true | Pipeline HTTP | false |
| Cabeçalho CSP | true | Host virtual | false |
| Contagem de Linhas | true | Contagem de Palavras | true |
| Cabeçalho de Localização | true | CDN | false |
| Servidor Web | true | Caminhos | false |
| WebSocket | true | Portas | false |
| Tempo de Resposta | true | Método da Requisição | true |
| Hash de Favicon | false | Status da Sonda | false |
| Hash do Corpo | true | Hash do Cabeçalho | true |
| Cadeia de Redirecionamento | false | Esquema da URL | true |
| Hash JARM | false | ASN | false |
Instruções de Instalação
httpx requer go >=1.25.0 para instalar com sucesso. Execute o seguinte comando para obter o repositório:
go install -v github.com/projectdiscovery/httpx/cmd/httpx@latest
Para saber mais sobre a instalação do httpx, consulte https://docs.projectdiscovery.io/tools/httpx/install.
| ❗ Aviso |
|---|
| Este projeto está em desenvolvimento ativo. Espere mudanças que quebrem compatibilidade com versões anteriores nas releases. Revise o changelog antes de atualizar. |
| Este projeto foi construído principalmente para ser usado como uma ferramenta CLI independente. Executá-lo como serviço pode apresentar riscos de segurança. Recomenda-se usá-lo com cautela e medidas de segurança adicionais. |
Uso
httpx -h
Isto exibirá a ajuda da ferramenta. Aqui estão todas as opções suportadas.
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 arquivo de entrada contendo lista de hosts para processar
-rr, -request string arquivo contendo requisição bruta
-u, -target string[] host(s) alvo de entrada para sondar
-im, -input-mode string modo do arquivo de entrada (burp)
PROBES:
-sc, -status-code exibir código de status da resposta
-cl, -content-length exibir tamanho do conteúdo da resposta
-ct, -content-type exibir tipo de conteúdo da resposta
-location exibir localização de redirecionamento da resposta
-favicon exibir hash mmh3 para o arquivo '/favicon.ico'
-hash string exibir hash do corpo da resposta (suportado: md5,mmh3,simhash,sha1,sha256,sha512)
-jarm exibir hash de impressão digital jarm
-rt, -response-time exibir tempo de resposta
-lc, -line-count exibir contagem de linhas do corpo da resposta
-wc, -word-count exibir contagem de palavras do corpo da resposta
-title exibir título da página
-bp, -body-preview exibir primeiros N caracteres do corpo da resposta (padrão 100)
-server, -web-server exibir nome do servidor
-td, -tech-detect exibir tecnologia em uso baseada no conjunto de dados wappalyzer
-cff, -custom-fingerprint-file string caminho para um arquivo de impressão digital personalizado para detecção de tecnologia
-method exibir método da requisição HTTP
-ws, -websocket exibir servidor usando websocket
-ip exibir IP do host
-cname exibir CNAME do host
-extract-fqdn, -efqdn obter domínio e subdomínios do corpo e cabeçalho da resposta na saída jsonl/csv
-asn exibir informações ASN do host
-cdn exibir CDN/WAF em uso (padrão true)
-probe exibir status da sonda
HEADLESS:
-ss, -screenshot habilitar captura de tela da página usando navegador headless
-system-chrome habilitar uso do Chrome local instalado para captura de tela
-ho, -headless-options string[] iniciar chrome headless com opções adicionais
-esb, -exclude-screenshot-bytes habilitar exclusão de bytes de captura de tela da saída JSON
-ehb, -exclude-headless-body habilitar exclusão de cabeçalho headless da saída JSON
-no-screenshot-full-page desabilitar captura de tela de página inteira
-st, -screenshot-timeout value definir tempo limite para captura de tela em segundos (padrão 10s)
-sid, -screenshot-idle value definir tempo ocioso antes de capturar a tela em segundos (padrão 1s)
-jsc, -javascript-code string[] executar código JavaScript após navegação
MATCHERS:
-mc, -match-code string corresponder resposta com código de status especificado (-mc 200,302)
-ml, -match-length string corresponder resposta com tamanho de conteúdo especificado (-ml 100,102)
-mlc, -match-line-count string corresponder corpo da resposta com contagem de linhas especificada (-mlc 423,532)
-mwc, -match-word-count string corresponder corpo da resposta com contagem de palavras especificada (-mwc 43,55)
-mfc, -match-favicon string[] corresponder resposta com hash de favicon especificado (-mfc 1494302000)
-ms, -match-string string[] corresponder resposta com string especificada (-ms admin)
-mr, -match-regex string[] corresponder resposta com regex especificada (-mr admin)
-mcdn, -match-cdn string[] corresponder host com provedor CDN especificado (cloudfront, fastly, google, etc.)
-mrt, -match-response-time string corresponder resposta com tempo de resposta especificado em segundos (-mrt '< 1')
-mdc, -match-condition string corresponder resposta com condição de expressão DSL
EXTRACTOR:
-er, -extract-regex string[] exibir conteúdo da resposta com regex correspondente
-ep, -extract-preset string[] exibir conteúdo da resposta correspondido por um regex predefinido (url,ipv4,mail)
FILTERS:
-fc, -filter-code string filtrar resposta com código de status especificado (-fc 403,401)
-fpt, -filter-page-type string[] filtrar resposta com tipo de página especificado (e.g. -fpt login,captcha,parked)
-fep, -filter-error-page [DEPRECATED: use -fpt] filtrar resposta com detecção de página de erro baseada em ML
-fd, -filter-duplicates filtrar respostas quase duplicadas (apenas a primeira resposta é mantida)
-fl, -filter-length string filtrar resposta com tamanho de conteúdo especificado (-fl 23,33)
-flc, -filter-line-count string filtrar corpo da resposta com contagem de linhas especificada (-flc 423,532)
-fwc, -filter-word-count string filtrar corpo da resposta com contagem de palavras especificada (-fwc 423,532)
-ffc, -filter-favicon string[] filtrar resposta com hash de favicon especificado (-ffc 1494302000)
-fs, -filter-string string[] filtrar resposta com string especificada (-fs admin)
-fe, -filter-regex string[] filtrar resposta com regex especificada (-fe admin)
-fcdn, -filter-cdn string[] filtrar host com provedor CDN especificado (cloudfront, fastly, google, etc.)
-frt, -filter-response-time string filtrar resposta com tempo de resposta especificado em segundos (-frt '> 1')
-fdc, -filter-condition string filtrar resposta com condição de expressão DSL
-strip remove todas as tags na resposta. formatos suportados: html,xml (padrão html)
-lof, -list-output-fields listar campos de saída (separados por vírgula)
-eof, -exclude-output-fields string[] excluir campos de saída com base em uma condição
RATE-LIMIT:
-t, -threads int número de threads a usar (padrão 50)
-rl, -rate-limit int máximo de requisições por segundo (padrão 150)
-rlm, -rate-limit-minute int número máximo de requisições por minuto
MISCELLANEOUS:
-pa, -probe-all-ips sondar todos os IPs associados ao mesmo host
-p, -ports string[] portas para sondar (sintaxe nmap: ex http:1,2-10,11,https:80)
-path string caminho ou lista de caminhos para sondar (separados por vírgula, arquivo)
-tls-probe enviar sondas HTTP nos domínios TLS extraídos (dns_name)
-csp-probe enviar sondas HTTP nos domínios CSP extraídos
-tls-grab realizar captura de dados TLS(SSL)
-pipeline sondar e exibir servidores compatíveis com HTTP1.1 pipeline
-http2 sondar e exibir servidores compatíveis com HTTP2
-vhost sondar e exibir servidores compatíveis com VHOST
-ldv, -list-dsl-variables listar nomes das chaves de campos de saída JSON que suportam matcher/filter DSL
UPDATE:
-up, -update atualizar httpx para a versão mais recente
-duc, -disable-update-check desabilitar verificação automática de atualização do httpx
OUTPUT:
-o, -output string arquivo para escrever resultados de saída
-oa, -output-all nome do arquivo para escrever resultados em todos os formatos
-sr, -store-response armazenar resposta HTTP no diretório de saída
-srd, -store-response-dir string armazenar resposta HTTP em diretório personalizado
-ob, -omit-body omitir corpo da resposta na saída
-csv armazenar saída no formato csv
-csvo, -csv-output-encoding string definir codificação da saída
-j, -json armazenar saída no formato JSONL(ines)
-irh, -include-response-header incluir cabeçalho da resposta HTTP na saída JSON (apenas -json)
-irr, -include-response incluir requisição/resposta HTTP (cabeçalhos + corpo) na saída JSON (apenas -json)
-irrb, -include-response-base64 incluir requisição/resposta HTTP codificada em base64 na saída JSON (apenas -json)
-include-chain incluir cadeia de redirecionamento HTTP na saída JSON (apenas -json)
-store-chain incluir cadeia de redirecionamento HTTP nas respostas (apenas -sr)
-svrc, -store-vision-recon-cluster incluir clusters de reconhecimento visual (-ss e -sr apenas)
-pr, -protocol string protocolo a usar (unknown, http11, http2, http3)
-fepp, -filter-error-page-path string caminho para armazenar páginas de erro filtradas (padrão "filtered_error_page.json")
-rdb, -result-db armazenar resultados em banco de dados
-rdbc, -result-db-config string caminho para arquivo de configuração do banco de dados
-rdbt, -result-db-type string tipo de banco de dados (mongodb, postgres, mysql)
-rdbcs, -result-db-conn string string de conexão do banco de dados (env: HTTPX_DB_CONNECTION_STRING)
-rdbn, -result-db-name string nome do banco de dados (padrão "httpx")
-rdbtb, -result-db-table string nome da tabela/coleção (padrão "results")
-rdbbs, -result-db-batch-size int tamanho do lote para inserções no banco de dados (padrão 100)
-rdbor, -result-db-omit-raw omitir dados brutos de requisição/resposta do banco de dados
CONFIGURATIONS:
-config string caminho para o arquivo de configuração do httpx (padrão $HOME/.config/httpx/config.yaml)
-r, -resolvers string[] lista de resolvedores personalizados (arquivo ou separado por vírgula)
-allow string[] lista de IPs/CIDRs permitidos para processar (arquivo ou separado por vírgula)
-deny string[] lista de IPs/CIDRs negados para processar (arquivo ou separado por vírgula)
-sni, -sni-name string nome TLS SNI personalizado
-random-agent habilitar User-Agent aleatório (padrão true)
-auto-referer definir cabeçalho Referer para a URL atual
-H, -header string[] cabeçalhos HTTP personalizados para enviar com a requisição
-http-proxy, -proxy string proxy (http|socks) para usar (ex http://127.0.0.1:8080)
-unsafe enviar requisições brutas ignorando normalização do golang
-resume retomar varredura usando resume.cfg
-fr, -follow-redirects seguir redirecionamentos HTTP
-maxr, -max-redirects int número máximo de redirecionamentos por host (padrão 10)
-fhr, -follow-host-redirects seguir redirecionamentos no mesmo host
-rhsts, -respect-hsts respeitar cabeçalhos de resposta HSTS para requisições de redirecionamento
-vhost-input obter lista de vhosts como entrada
-x string métodos de requisição para sondar, use 'all' para sondar todos os métodos HTTP
-body string corpo POST para incluir na requisição HTTP
-s, -stream modo stream - começar a elaborar alvos de entrada sem ordenar
-sd, -skip-dedupe desabilitar deduplicação de itens de entrada (usado apenas com modo stream)
-ldp, -leave-default-ports deixar portas http/https padrão no cabeçalho Host (ex. http://host:80 - https://host:443)
-ztls usar biblioteca ztls com fallback automático para a padrão para tls13
-no-decode evitar decodificação do corpo
-tlsi, -tls-impersonate habilitar randomização experimental de client hello (ja3) TLS
-no-stdin Desabilitar processamento de Stdin
-hae, -http-api-endpoint string endpoint experimental de API HTTP
-sf, -secret-file string caminho para arquivo de segredos para autenticação
DEBUG:
-health-check, -hc executar diagnóstico
-debug exibir conteúdo de requisição/resposta no CLI
-debug-req exibir conteúdo da requisição no CLI
-debug-resp exibir conteúdo da resposta no CLI
-version exibir versão do httpx
-stats exibir estatísticas da varredura
-profile-mem string arquivo opcional de dump de memória do httpx
-silent modo silencioso
-v, -verbose modo verbose
-si, -stats-interval int número de segundos entre atualizações de estatísticas (padrão: 5)
-nc, -no-color desabilitar cores na saída do CLI
-tr, -trace trace
OPTIMIZATIONS:
-nf, -no-fallback exibir ambos os protocolos sondados (HTTPS e HTTP)
-nfs, -no-fallback-scheme sondar com esquema de protocolo especificado na entrada
-maxhr, -max-host-error int número máximo de erros por host antes de pular caminhos restantes (padrão 30)
-e, -exclude string[] excluir host que corresponde ao filtro especificado ('cdn', 'private-ips', cidr, ip, regex)
-retries int número de retentativas
-timeout int tempo limite em segundos (padrão 10)
-delay value duração entre cada requisição HTTP (ex: 200ms, 1s) (padrão -1ns)
-rsts, -response-size-to-save int tamanho máximo da resposta para salvar em bytes (padrão 50000000)
-rstr, -response-size-to-read int tamanho máximo da resposta para ler em bytes (padrão 50000000)
CLOUD:
-auth configurar chave API do projectdiscovery cloud (pdcp) (padrão true)
-ac, -auth-config string configurar arquivo de credenciais da chave API do projectdiscovery cloud (pdcp)
-pd, -dashboard enviar / visualizar saída no painel UI do projectdiscovery cloud (pdcp)
-tid, -team-id string enviar resultados de ativos para o ID da equipe fornecido (opcional)
-aid, -asset-id string enviar novos ativos para um ID de ativo existente (opcional)
-aname, -asset-name string nome do grupo de ativos para definir (opcional)
-pdu, -dashboard-upload string enviar arquivo de saída do httpx (jsonl) no painel UI do projectdiscovery cloud (pdcp)
Executando o httpx
Para detalhes sobre como executar o httpx, consulte https://docs.projectdiscovery.io/tools/httpx/running.
Usando httpx como biblioteca
httpx pode ser usado como biblioteca criando uma instância da struct Option e preenchendo-a com as mesmas opções que seriam especificadas via CLI. Uma vez validada, a struct deve ser passada para uma instância do runner (a ser fechada ao final do programa) e o método RunEnumeration deve ser chamado. Um exemplo mínimo de como fazer isso está na pasta examples.
Notas
- Por padrão, o
httpxsonda com esquema HTTPS e faz fallback para HTTP apenas se HTTPS não estiver acessível. - Exportações XML do Burp Suite podem ser usadas como entrada com
-l burp-export.xml -im burp - A flag
-no-fallbackpode ser usada para sondar e exibir ambos os resultados HTTP e HTTPS. - Esquema personalizado para portas pode ser definido, por exemplo
-ports http:443,http:80,https:8443 - Resolvedor personalizado suporta múltiplos protocolos (doh|tcp|udp) na forma
protocolo:resolvedor:porta(ex.udp:127.0.0.1:53) - Arquivos de segredos podem ser usados para autenticação baseada em domínio via
-sf secrets.yaml. Tipos de autenticação suportados:BasicAuth,BearerToken,Header,Cookie,Query. Exemplo:id: example-auth info: name: Exemplo de Config de Autenticação static: - type: Header domains: - api.example.com headers: - key: X-API-Key value: chave-secreta-aqui - type: BasicAuth domains-regex: - ".*\\.internal\\.com$" username: admin password: secreta - As seguintes flags devem ser usadas para casos de uso específicos, em vez de executá-las como padrão com outras sondas:
-ports-path-vhost-screenshot-csp-probe-tls-probe-favicon-http2-pipeline-tls-impersonate
Agradecimento
A funcionalidade de sondagem é inspirada no trabalho de @tomnomnom/httprobe ❤️
httpx é feito com 💙 pela equipe projectdiscovery e distribuído sob Licença MIT.
