Docs GitHub
-- --
Theme:
Language:
EN فا

HTTP Settings#

💡 Tip: You can change these settings directly in the bgscan application instead of editing the TOML file manually.

Navigate to SettingsHTTP Settings in the main menu to configure these options interactively using the TUI inspector.

Configuration file: settings/http_settings.toml

The HTTP probe sends one request per target and records status code, negotiated protocol version, and whether TLS was used. HTTP/1.1 and HTTP/2 go over TCP, HTTP/3 over QUIC.

Quick Reference#

SettingDefaultDescription
workersplatform-dependentConcurrent requests (1-1000)
host"example.com"Request host, optionally with a path
server_name""SNI override; empty means derive from host
port443Target port (1-65535)
protocol"https"http or https
version"h1,h2"Protocol version to negotiate
fingerprint""uTLS ClientHello fingerprint; empty uses the standard library
tls_validationtrueVerify the server certificate
min_tls_version"tls1.1"Lowest TLS version allowed
max_tls_version"tls1.3"Highest TLS version allowed
timeoutplatform-dependentRequest timeout in milliseconds (100-60000)
accepted_status_codes[]Status codes treated as success; empty accepts all
output_prefix"http_"Result filename prefix

Workers#

workers = 50

Concurrent requests in flight. HTTP probes hold a connection and read a response, so they cost more per worker than TCP.

  • 10-50 on limited resources
  • 50-100 for typical use
  • 100-200 for high-throughput scanning

Host#

host = "example.com"

Host used for the request. A path may be included (example.com/path) and is appended to the request URL. The Host header always carries only the domain part.

Port#

port = 443

Target port. Use 80 for plain HTTP, 443 for HTTPS, or any port the service listens on.

Protocol#

protocol = "https"

Either "http" or "https". This decides whether the connection is wrapped in TLS.

TLS Validation#

tls_validation = true

When true, the certificate must be valid and trusted by the system. When false, expired and self-signed certificates are accepted. Turn it off when scanning IPs directly, where the certificate rarely matches the address.

HTTP Version#

version = "h1,h2"
ValueMeaning
h1HTTP/1.1 only
h2HTTP/2 only
h1,h2Negotiated over ALPN
h3HTTP/3 over QUIC

Longer aliases are also accepted: http1, http1.1, http2, http3, http1,http2, http2,http1. HTTP/3 uses a separate QUIC probe and always runs over TLS 1.3, so min_tls_version and max_tls_version are ignored.

Timeout#

timeout = 4000

Time budget for a single request, in milliseconds.

  • 2000-5000 for reliable networks
  • 5000-10000 for distant or unreliable networks

TLS Version Range#

min_tls_version = "tls1.1"
max_tls_version = "tls1.3"

Bounds passed to the TLS handshake. Accepted values are tls1.0, tls1.1, tls1.2, and tls1.3. The minimum must not exceed the maximum. Ignored when version = "h3".

TLS Fingerprint#

fingerprint = ""

A uTLS ClientHello fingerprint for the TLS handshake. When set, the probe mimicks the chosen browser profile instead of the standard library ClientHello, which can help bypass TLS fingerprinting — commonly used when scanning behind DPI. Labels are matched case-insensitively.

CategoryLabels
ChromeChrome, Chrome_58, Chrome_62, Chrome_70, Chrome_72, Chrome_83, Chrome_87, Chrome_96, Chrome_100, Chrome_102, Chrome_120
FirefoxFirefox, Firefox_55, Firefox_56, Firefox_63, Firefox_65, Firefox_99, Firefox_102, Firefox_105, Firefox_120
iOSiOS, iOS_11_1, iOS_12_1, iOS_13, iOS_14
Otherrandom

An empty value (the default) uses Go’s standard crypto/tls ClientHello. HTTP/3 over QUIC does not use uTLS; an empty fingerprint is always used for version = "h3".

Server Name Indication#

server_name = ""

SNI sent during the TLS handshake. When empty, the domain from host is used. Set it to test domain fronting, or to probe an IP while presenting a specific hostname.

Accepted Status Codes#

accepted_status_codes = []

Allow-list of status codes counted as a successful result. An empty list, or a list covering every code, disables filtering and accepts anything the server returns. Responses outside the list are discarded and do not reach the next pipeline stage.

accepted_status_codes = [200, 204, 301, 302, 307, 308]

Output Prefix#

output_prefix = "http_"

Filename prefix for result files written by this probe. Files land in result/http/.