
Toolkit HTTP veloce e multi-sonda per ricognizione e raccolta di informazioni. Sonda TLS, CSP, header, stack tecnologico e CDN. Supporta matcher, filtri e output JSON per test di sicurezza automatizzati.
Caratteristiche • Installazione • Utilizzo • Documentazione • Note • Unisciti a Discord
httpx è un toolkit HTTP veloce e multi-uso che consente di eseguire più sonde utilizzando la libreria retryablehttp. È progettato per mantenere l'affidabilità dei risultati con un numero maggiore di thread.
httpx richiede go >=1.25.0 per essere installato correttamente. Esegui il seguente comando per ottenere il repository:
go install -v github.com/projectdiscovery/httpx/cmd/httpx@latest
Per saperne di più sull'installazione di httpx, consulta https://docs.projectdiscovery.io/tools/httpx/install.
| ❗ Avviso |
|---|
| Questo progetto è in fase di sviluppo attivo. Ci si aspettano modifiche che potrebbero rompere la compatibilità con le versioni precedenti. Controlla il changelog prima di aggiornare. |
| Questo progetto è stato principalmente costruito per essere utilizzato come strumento CLI autonomo. Eseguirlo come servizio può comportare rischi per la sicurezza. Si consiglia di usarlo con cautela e con misure di sicurezza aggiuntive. |
httpx -h
Questo mostrerà l'aiuto per lo strumento. Ecco tutti gli switch supportati.
httpx è un toolkit HTTP veloce e multi-uso che consente di eseguire più sonde utilizzando la libreria retryablehttp.
Utilizzo:
./httpx [flags]
Flags:
INPUT:
-l, -list string file di input contenente l'elenco degli host da elaborare
-rr, -request string file contenente la richiesta grezza
-u, -target string[] host di destinazione da sondare
-im, -input-mode string modalità del file di input (burp)
PROBES (SONDE):
-sc, -status-code mostra il codice di stato della risposta
-cl, -content-length mostra la lunghezza del contenuto della risposta
-ct, -content-type mostra il tipo di contenuto della risposta
-location mostra la posizione di reindirizzamento della risposta
-favicon mostra l'hash mmh3 per il file '/favicon.ico'
-hash string mostra l'hash del corpo della risposta (supportati: md5,mmh3,simhash,sha1,sha256,sha512)
-jarm mostra l'hash dell'impronta JARM
-rt, -response-time mostra il tempo di risposta
-lc, -line-count mostra il conteggio delle righe del corpo della risposta
-wc, -word-count mostra il conteggio delle parole del corpo della risposta
-title mostra il titolo della pagina
-bp, -body-preview mostra i primi N caratteri del corpo della risposta (default 100)
-server, -web-server mostra il nome del server
-td, -tech-detect mostra la tecnologia in uso basata sul dataset wappalyzer
-cff, -custom-fingerprint-file string percorso di un file di impronte personalizzato per il rilevamento della tecnologia
-method mostra il metodo della richiesta HTTP
-ws, -websocket mostra il server che utilizza websocket
-ip mostra l'IP dell'host
-cname mostra il CNAME dell'host
-extract-fqdn, -efqdn ottieni dominio e sottodomini dal corpo e dall'intestazione della risposta in output jsonl/csv
-asn mostra le informazioni ASN dell'host
-cdn mostra CDN/WAF in uso (default true)
-probe mostra lo stato della sonda
HEADLESS (SENZA TESTA):
-ss, -screenshot abilita il salvataggio dello screenshot della pagina utilizzando un browser headless
-system-chrome abilita l'uso di Chrome installato localmente per gli screenshot
-ho, -headless-options string[] avvia Chrome headless con opzioni aggiuntive
-esb, -exclude-screenshot-bytes abilita l'esclusione dei byte dello screenshot dall'output JSON
-ehb, -exclude-headless-body abilita l'esclusione dell'intestazione headless dall'output JSON
-no-screenshot-full-page disabilita il salvataggio dello screenshot a pagina intera
-st, -screenshot-timeout value imposta il timeout per lo screenshot in secondi (default 10s)
-sid, -screenshot-idle value imposta il tempo di inattività prima di effettuare lo screenshot in secondi (default 1s)
-jsc, -javascript-code string[] esegui codice JavaScript dopo la navigazione
MATCHERS (CORRISPONDENZE):
-mc, -match-code string corrispondenza risposta con codice di stato specificato (-mc 200,302)
-ml, -match-length string corrispondenza risposta con lunghezza del contenuto specificata (-ml 100,102)
-mlc, -match-line-count string corrispondenza corpo risposta con conteggio righe specificato (-mlc 423,532)
-mwc, -match-word-count string corrispondenza corpo risposta con conteggio parole specificato (-mwc 43,55)
-mfc, -match-favicon string[] corrispondenza risposta con hash favicon specificato (-mfc 1494302000)
-ms, -match-string string[] corrispondenza risposta con stringa specificata (-ms admin)
-mr, -match-regex string[] corrispondenza risposta con regex specificata (-mr admin)
-mcdn, -match-cdn string[] corrispondenza host con provider CDN specificato (cloudfront, fastly, google, ecc.)
-mrt, -match-response-time string corrispondenza risposta con tempo di risposta specificato in secondi (-mrt '< 1')
-mdc, -match-condition string corrispondenza risposta con espressione DSL
EXTRACTOR (ESTRATTORE):
-er, -extract-regex string[] mostra il contenuto della risposta corrispondente alla regex
-ep, -extract-preset string[] mostra il contenuto della risposta corrispondente a una regex predefinita (url,ipv4,mail)
FILTERS (FILTRI):
-fc, -filter-code string filtra risposta con codice di stato specificato (-fc 403,401)
-fpt, -filter-page-type string[] filtra risposta con tipo di pagina specificato (es. -fpt login,captcha,parked)
-fep, -filter-error-page [DEPRECATO: usa -fpt] filtra risposta con rilevamento di pagine di errore basato su ML
-fd, -filter-duplicates filtra risposte quasi duplicate (viene mantenuta solo la prima risposta)
-fl, -filter-length string filtra risposta con lunghezza del contenuto specificata (-fl 23,33)
-flc, -filter-line-count string filtra corpo risposta con conteggio righe specificato (-flc 423,532)
-fwc, -filter-word-count string filtra corpo risposta con conteggio parole specificato (-fwc 423,532)
-ffc, -filter-favicon string[] filtra risposta con hash favicon specificato (-ffc 1494302000)
-fs, -filter-string string[] filtra risposta con stringa specificata (-fs admin)
-fe, -filter-regex string[] filtra risposta con regex specificata (-fe admin)
-fcdn, -filter-cdn string[] filtra host con provider CDN specificato (cloudfront, fastly, google, ecc.)
-frt, -filter-response-time string filtra risposta con tempo di risposta specificato in secondi (-frt '> 1')
-fdc, -filter-condition string filtra risposta con espressione DSL
-strip rimuove tutti i tag nella risposta. formati supportati: html,xml (default html)
-lof, -list-output-fields elenco dei campi da output (separati da virgola)
-eof, -exclude-output-fields string[] esclude campi di output basati su una condizione
RATE-LIMIT (LIMITE DI VELOCITÀ):
-t, -threads int numero di thread da utilizzare (default 50)
-rl, -rate-limit int massimo di richieste da inviare al secondo (default 150)
-rlm, -rate-limit-minute int numero massimo di richieste da inviare al minuto
MISCELLANEOUS (VARIE):
-pa, -probe-all-ips sonda tutti gli IP associati allo stesso host
-p, -ports string[] porte da sondare (sintassi nmap: es http:1,2-10,11,https:80)
-path string percorso o elenco di percorsi da sondare (separati da virgola, file)
-tls-probe invia sonde HTTP sui domini TLS estratti (dns_name)
-csp-probe invia sonde HTTP sui domini CSP estratti
-tls-grab esegue l'acquisizione dei dati TLS(SSL)
-pipeline sonda e mostra server che supportano pipeline HTTP1.1
-http2 sonda e mostra server che supportano HTTP2
-vhost sonda e mostra server che supportano VHOST
-ldv, -list-dsl-variables elenca i nomi delle chiavi dei campi di output JSON che supportano matcher/filter DSL
UPDATE (AGGIORNAMENTO):
-up, -update aggiorna httpx all'ultima versione
-duc, -disable-update-check disabilita il controllo automatico dell'aggiornamento di httpx
OUTPUT:
-o, -output string file su cui scrivere i risultati
-oa, -output-all nome file per scrivere i risultati in tutti i formati
-sr, -store-response salva la risposta HTTP nella directory di output
-srd, -store-response-dir string salva la risposta HTTP in una directory personalizzata
-ob, -omit-body omette il corpo della risposta nell'output
-csv salva l'output in formato CSV
-csvo, -csv-output-encoding string definisce la codifica dell'output
-j, -json salva l'output in formato JSONL(ines)
-irh, -include-response-header include l'intestazione della risposta HTTP nell'output JSON (solo -json)
-irr, -include-response include richiesta/risposta HTTP (intestazioni + corpo) nell'output JSON (solo -json)
-irrb, -include-response-base64 include richiesta/risposta HTTP codificata in base64 nell'output JSON (solo -json)
-include-chain include la catena HTTP di reindirizzamento nell'output JSON (solo -json)
-store-chain include la catena di reindirizzamento HTTP nelle risposte (solo -sr)
-svrc, -store-vision-recon-cluster include cluster di ricognizione visiva (solo -ss e -sr)
-pr, -protocol string protocollo da utilizzare (unknown, http11, http2, http3)
-fepp, -filter-error-page-path string percorso per salvare le pagine di errore filtrate (default "filtered_error_page.json")
-rdb, -result-db salva i risultati in un database
-rdbc, -result-db-config string percorso del file di configurazione del database
-rdbt, -result-db-type string tipo di database (mongodb, postgres, mysql)
-rdbcs, -result-db-conn string stringa di connessione al database (env: HTTPX_DB_CONNECTION_STRING)
-rdbn, -result-db-name string nome del database (default "httpx")
-rdbtb, -result-db-table string nome della tabella/collezione (default "results")
-rdbbs, -result-db-batch-size int dimensione del batch per gli inserimenti nel database (default 100)
-rdbor, -result-db-omit-raw omette i dati grezzi di richiesta/risposta dal database
CONFIGURATIONS (CONFIGURAZIONI):
-config string percorso del file di configurazione di httpx (default $HOME/.config/httpx/config.yaml)
-r, -resolvers string[] elenco di resolver personalizzati (file o separati da virgola)
-allow string[] elenco consentito di IP/CIDR da elaborare (file o separati da virgola)
-deny string[] elenco negato di IP/CIDR da elaborare (file o separati da virgola)
-sni, -sni-name string nome SNI TLS personalizzato
-random-agent abilita User-Agent casuale (default true)
-auto-referer imposta l'intestazione Referer sull'URL corrente
-H, -header string[] intestazioni HTTP personalizzate da inviare con la richiesta
-http-proxy, -proxy string proxy (http|socks) da utilizzare (es http://127.0.0.1:8080)
-unsafe invia richieste grezze saltando la normalizzazione di golang
-resume riprendi la scansione usando resume.cfg
-fr, -follow-redirects segui i reindirizzamenti HTTP
-maxr, -max-redirects int numero massimo di reindirizzamenti da seguire per host (default 10)
-fhr, -follow-host-redirects segui i reindirizzamenti sullo stesso host
-rhsts, -respect-hsts rispetta le intestazioni di risposta HSTS per le richieste di reindirizzamento
-vhost-input ottieni un elenco di vhost come input
-x string metodi di richiesta da sondare, usa 'all' per sondare tutti i metodi HTTP
-body string corpo POST da includere nella richiesta HTTP
-s, -stream modalità stream - inizia a elaborare i target di input senza ordinare
-sd, -skip-dedupe disabilita la deduplicazione degli elementi di input (usato solo con modalità stream)
-ldp, -leave-default-ports lascia le porte http/https predefinite nell'intestazione host (es. http://host:80 - https://host:443)
-ztls usa la libreria ztls con fallback automatico a quella standard per TLS13
-no-decode evita la decodifica del corpo
-tlsi, -tls-impersonate abilita la randomizzazione sperimentale del client hello (ja3) TLS
-no-stdin Disabilita l'elaborazione da Stdin
-hae, -http-api-endpoint string endpoint API HTTP sperimentale
-sf, -secret-file string percorso del file segreto per l'autenticazione
DEBUG:
-health-check, -hc esegue un controllo diagnostico
-debug mostra il contenuto di richiesta/risposta nella CLI
-debug-req mostra il contenuto della richiesta nella CLI
-debug-resp mostra il contenuto della risposta nella CLI
-version mostra la versione di httpx
-stats mostra le statistiche della scansione
-profile-mem string file opzionale del dump della memoria di httpx
-silent modalità silenziosa
-v, -verbose modalità dettagliata
-si, -stats-interval int numero di secondi di attesa tra le visualizzazioni di un aggiornamento delle statistiche (default: 5)
-nc, -no-color disabilita i colori nell'output CLI
-tr, -trace traccia
OPTIMIZATIONS (OTTIMIZZAZIONI):
-nf, -no-fallback mostra entrambi i protocolli sondati (HTTPS e HTTP)
-nfs, -no-fallback-scheme sonda con lo schema di protocollo specificato nell'input
-maxhr, -max-host-error int numero massimo di errori per host prima di saltare i percorsi rimanenti (default 30)
-e, -exclude string[] esclude host corrispondenti al filtro specificato ('cdn', 'private-ips', cidr, ip, regex)
-retries int numero di tentativi
-timeout int timeout in secondi (default 10)
-delay value durata tra ogni richiesta HTTP (es: 200ms, 1s) (default -1ns)
-rsts, -response-size-to-save int dimensione massima della risposta da salvare in byte (default 50000000)
-rstr, -response-size-to-read int dimensione massima della risposta da leggere in byte (default 50000000)
CLOUD:
-auth configura la chiave API del cloud projectdiscovery (pdcp) (default true)
-ac, -auth-config string configura il file delle credenziali della chiave API del cloud projectdiscovery (pdcp)
-pd, -dashboard carica/visualizza l'output nel dashboard UI del cloud projectdiscovery (pdcp)
-tid, -team-id string carica i risultati degli asset in un dato ID team (opzionale)
-aid, -asset-id string carica nuovi asset in un ID asset esistente (opzionale)
-aname, -asset-name string nome del gruppo di asset da impostare (opzionale)
-pdu, -dashboard-upload string carica il file di output di httpx (jsonl) nel dashboard UI del cloud projectdiscovery (pdcp)
Per i dettagli su come eseguire httpx, consulta https://docs.projectdiscovery.io/tools/httpx/running.
httpx come libreriahttpx può essere utilizzato come libreria creando un'istanza della struct Option e popolandola con le stesse opzioni che verrebbero specificate tramite CLI. Una volta convalidata, la struct deve essere passata a un'istanza del runner (da chiudere alla fine del programma) e deve essere chiamato il metodo RunEnumeration. Un esempio minimo su come fare è nella cartella examples.
httpx sonda con schema HTTPS e fa fallback a HTTP solo se HTTPS non è raggiungibile.-l burp-export.xml -im burp-no-fallback può essere utilizzato per sondare e mostrare entrambi i risultati HTTP e HTTPS.-ports http:443,http:80,https:8443protocol:resolver:port (es. udp:127.0.0.1:53)-sf secrets.yaml. Tipi di autenticazione supportati: BasicAuth, BearerToken, Header, Cookie, . Esempio:
La funzionalità di probing è ispirata al lavoro di @tomnomnom/httprobe ❤️
httpx è realizzato con 💙 dal team projectdiscovery e distribuito con Licenza MIT.
| Sonde | Controllo predefinito | Sonde | Controllo predefinito |
|---|
| URL | true | IP | true |
| Titolo | true | CNAME | true |
| Codice di stato | true | HTTP grezzo | false |
| Lunghezza contenuto | true | HTTP2 | false |
| Certificato TLS | true | Pipeline HTTP | false |
| Intestazione CSP | true | Host virtuale | false |
| Conteggio righe | true | Conteggio parole | true |
| Intestazione Location | true | CDN | false |
| Server web | true | Percorsi | false |
| WebSocket | true | Porte | false |
| Tempo di risposta | true | Metodo richiesta | true |
| Hash Favicon | false | Stato sonda | false |
| Hash corpo | true | Hash intestazione | true |
| Catena di reindirizzamenti | false | Schema URL | true |
| Hash JARM | 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