id = "httpx"
name = "httpx"
homepage = "https://github.com/projectdiscovery/httpx"
description = "httpx is a fast and multi-purpose HTTP toolkit that allows running multiple probes using the retryablehttp library."
executables = ["httpx"]
[dotfiles]
paths = ["~/.config/httpx/config.yaml"]
secret = []
side_effect = false
[commands]
format = 1
label = "Probe web hosts"
description = "Probe one or more hosts or a host list and show status code, title and detected technology. Proxies, custom requests, filtering by regex and screenshots are not in this form."
quality = "ai-draft"
parser = { end_of_options = "", interleave = "permute", long_equals = false, short_attached = false, short_bundles = false }
[[commands.source]]
id = "help"
kind = "help"
url = "https://github.com/projectdiscovery/httpx"
revision = "2026-10-27"
evidence = """
-l, -list string input file containing list of hosts to process
-u, -target string[] input target host(s) to probe
-sc, -status-code display response status-code
-title display page title
-td, -tech-detect display technology in use based on wappalyzer dataset
-ip display host ip
-mc, -match-code string match response with specified status code (-mc 200,302)
-fc, -filter-code string filter response with specified status code (-fc 403,401)
-t, -threads int number of threads to use (default 50)
-rl, -rate-limit int maximum requests to send per second (default 150)
-p, -ports string[] ports to probe (nmap syntax: eg http:1,2-10,11,https:80)
-path string path or list of paths to probe (comma-separated, file)
-o, -output string file to write output results
-fr, -follow-redirects follow http redirects
-timeout int timeout in seconds (default 10)
-silent silent mode
"""
[[commands.field]]
id = "target"
label = "Target host or URL"
type = "string"
option = ["-u"]
multiple = true
sources = ["help"]
[[commands.field]]
id = "list"
label = "Host list file"
type = "path"
option = ["-l"]
path = { kind = "file", role = "input", must_exist = true }
sources = ["help"]
[[commands.field]]
id = "status_code"
label = "Show status code"
type = "boolean"
option = ["-sc"]
sources = ["help"]
[[commands.field]]
id = "title"
label = "Show page title"
type = "boolean"
option = ["-title"]
sources = ["help"]
[[commands.field]]
id = "tech_detect"
label = "Detect technologies"
type = "boolean"
option = ["-td"]
sources = ["help"]
[[commands.field]]
id = "ip"
label = "Show host IP"
type = "boolean"
option = ["-ip"]
sources = ["help"]
[[commands.field]]
id = "follow_redirects"
label = "Follow redirects"
type = "boolean"
option = ["-fr"]
sources = ["help"]
[[commands.field]]
id = "match_code"
label = "Match status codes"
description = "Comma-separated, for example 200,302."
type = "string"
option = ["-mc"]
sources = ["help"]
[[commands.field]]
id = "filter_code"
label = "Filter out status codes"
description = "Comma-separated, for example 403,401."
type = "string"
option = ["-fc"]
sources = ["help"]
[[commands.field]]
id = "threads"
label = "Threads"
type = "integer"
option = ["-t"]
sources = ["help"]
[[commands.field]]
id = "rate_limit"
label = "Requests per second"
type = "integer"
option = ["-rl"]
sources = ["help"]
[[commands.field]]
id = "output"
label = "Output file"
type = "path"
option = ["-o"]
path = { kind = "file", role = "output", must_exist = false }
effect = "overwrite"
sources = ["help"]
[[commands.field]]
id = "silent"
label = "Silent (results only)"
type = "boolean"
option = ["-silent"]
sources = ["help"]
[[commands.task]]
id = "probe-one"
label = "Probe a target"
set = { status_code = [true], title = [true], tech_detect = [true] }
fields = ["target", "status_code", "title", "tech_detect", "follow_redirects"]
required = ["target"]
[[commands.task]]
id = "probe-list"
label = "Probe a host list"
set = { status_code = [true], title = [true] }
fields = ["list", "status_code", "title", "match_code", "threads", "output"]
required = ["list"]
[[commands.group]]
id = "basic"
label = "Basic"
fields = ["target", "list", "status_code", "title", "tech_detect", "ip", "follow_redirects", "output"]
[[commands.group]]
id = "advanced"
label = "Advanced"
fields = ["match_code", "filter_code", "threads", "rate_limit", "silent"]