Overview
TheHttpRequest block is the primary method for making HTTP/HTTPS requests in IronBullet pipelines. It supports advanced features like:
- JA3 TLS fingerprinting
- HTTP/2 fingerprinting
- Custom cipher suites
- Browser profile emulation
- Automatic cookie management
- Proxy support
- Custom headers and authentication
Settings
HTTP method:
GET, POST, PUT, DELETE, PATCH, HEAD, OPTIONSExample: "POST"Target URL with optional variable interpolationExample:
"https://api.example.com/user/<input.USER>"Array of
[name, value] header tuplesRequest body with variable interpolationExample:
"{\"email\":\"<input.USER>\",\"password\":\"<input.PASS>\"}"How to encode the request body:
None: No bodyStandard: URL-encoded form dataRaw: Send body as-isMultipart: Multipart form dataBasicAuth: Use basic authentication
Content-Type header value (only used with certain body types)
Automatically follow HTTP redirects
Maximum number of redirects to follow
Request timeout in milliseconds
Enable automatic redirect handling
Basic authentication credentials as
[username, password]Example: ["admin", "password123"]HTTP version to use:
HTTP/1.1, HTTP/2, or HTTP/3Variable name prefix for response storage:
- Response body →
data.{response_var} - Headers →
data.{response_var}.HEADERS - Cookies →
data.{response_var}.COOKIES - Status →
data.{response_var}.STATUS - URL →
data.{response_var}.URL
Custom cookies to send (one per line:
name=value)Example:Verify TLS certificates. Set to
false for self-signed certs (not recommended for production)Dash-separated IANA cipher suite IDs to override browser defaultsExample:
"4865-4866-4867-49195-49199-49196-49200-52393-52392"Which TLS/HTTP client to use:
RustTLS: Native Rust reqwest client (faster, standard HTTPS)AzureTLS: Go sidecar with JA3/HTTP2 fingerprinting support
Browser profile for AzureTLS fingerprinting:
chrome, firefox, safari, edgeLeave empty to inherit from pipeline-level settingsPer-block JA3 fingerprint override (AzureTLS only)Format:
"TLSVersion,Ciphers,Extensions,EllipticCurves,EllipticCurvePointFormats"Per-block HTTP/2 fingerprint override (AzureTLS only)
Examples
Simple GET Request
POST with JSON Body
Request with Custom Cookies
Request with JA3 Fingerprinting
Request with Basic Auth
Response Variables
After execution, the block populates these variables (assuming defaultresponse_var: "SOURCE"):
data.SOURCE: Response body as textdata.RESPONSECODE: HTTP status code (e.g.,"200","404")data.HEADERS: Response headers as stringdata.COOKIES: Response cookiesdata.ADDRESS: Final URL after redirects
TLS Fingerprinting
IronBullet supports two TLS client modes:RustTLS (Default)
- Native Rust implementation
- Faster for standard HTTPS
- No fingerprinting capabilities
- Best for internal APIs and simple requests
AzureTLS
- Go sidecar process with azuretls library
- Supports JA3 TLS fingerprinting
- Supports HTTP/2 fingerprinting
- Custom cipher suites
- Browser profile emulation
- Best for bypassing bot detection
Best Practices
- Use variable interpolation for dynamic values instead of hardcoding
- Set appropriate timeouts to prevent hanging on slow servers
- Enable SSL verification in production (disable only for testing)
- Use custom response variables when making multiple requests to avoid overwriting
data.SOURCE - Choose the right TLS client: Use RustTLS for speed, AzureTLS for fingerprinting