Skip to main content
Every block has a settings field containing type-specific configuration. The BlockSettings enum wraps all possible settings variants.

Block structure

Defined in src/pipeline/block/mod.rs:43-52
id
Uuid
required
Unique identifier for the block instance
block_type
BlockType
required
Block type enum (HttpRequest, ParseJSON, KeyCheck, etc.)
label
string
required
Display name shown in the editor
disabled
boolean
required
Whether the block is skipped during executionDefault: false
safe_mode
boolean
required
If true, block errors won’t fail the entire pipelineDefault: false
settings
BlockSettings
required
Type-specific configuration for this block

BlockSettings enum

The BlockSettings enum has variants for all 50+ block types. Each variant wraps a type-specific settings struct.

Common patterns

Most block settings follow these patterns: Output variable:
output_var: String  // Where to store the result
capture: bool       // Whether to add to captured data
Source input:
source: String  // Variable interpolation: "<data.EMAIL>" or "{{EMAIL}}"
Mode selection:
mode: SomeEnum  // Operation mode (e.g., StringMode::Concat, LoopMode::ForEach)

Example settings

HttpRequest settings

From configs/example.rfx:
{
  "type": "HttpRequest",
  "method": "POST",
  "url": "https://httpbin.org/post",
  "headers": [
    ["Content-Type", "application/json"],
    ["Accept", "application/json"]
  ],
  "body": "{\"email\":\"<input.USER>\",\"password\":\"<input.PASS>\"}",
  "body_type": "Raw",
  "content_type": "application/json",
  "follow_redirects": true,
  "max_redirects": 8,
  "timeout_ms": 10000,
  "auto_redirect": true,
  "basic_auth": null
}
Key fields:
  • method: HTTP verb (GET, POST, PUT, DELETE, etc.)
  • url: Target URL with variable interpolation
  • headers: Array of [name, value] tuples
  • body: Request body (supports RAW/EMBED/VAR modes)
  • timeout_ms: Request timeout in milliseconds

ParseJSON settings

From configs/example.rfx:
{
  "type": "ParseJSON",
  "json_path": "json.email",
  "output_var": "EMAIL",
  "capture": true
}
Key fields:
  • json_path: JSONPath query (dot notation)
  • output_var: Variable name to store result
  • capture: Add to captured data for output

KeyCheck settings

From configs/example.rfx:
{
  "type": "KeyCheck",
  "keychains": [
    {
      "result": "Success",
      "conditions": [
        {
          "source": "data.RESPONSECODE",
          "comparison": "EqualTo",
          "value": "200"
        }
      ]
    },
    {
      "result": "Fail",
      "conditions": [
        {
          "source": "data.RESPONSECODE",
          "comparison": "EqualTo",
          "value": "401"
        }
      ]
    }
  ]
}
Key fields:
  • keychains: Array of condition sets
  • result: BotStatus to set (Success, Fail, Ban, Retry, Error, Custom)
  • conditions: Array of comparisons (all must match)
  • comparison: Operator (EqualTo, Contains, GreaterThan, LessThan, etc.)

BlockType enum

All 50+ available block types from src/pipeline/block/mod.rs:69-143:
pub enum BlockType {
    // HTTP & Protocols
    HttpRequest,
    TcpRequest,
    UdpRequest,
    FtpRequest,
    SshRequest,
    ImapRequest,
    SmtpRequest,
    PopRequest,
    
    // Parsing
    ParseLR,
    ParseRegex,
    ParseJSON,
    ParseCSS,
    ParseXPath,
    ParseCookie,
    Parse,
    LambdaParser,
    
    // Checks
    KeyCheck,
    
    // Functions
    StringFunction,
    ListFunction,
    CryptoFunction,
    ConversionFunction,
    DateFunction,
    FloatFunction,
    IntegerFunction,
    TimeFunction,
    
    // Control Flow
    IfElse,
    Loop,
    Delay,
    Script,
    CaseSwitch,
    SetVariable,
    Group,
    
    // Browser
    BrowserOpen,
    NavigateTo,
    ClickElement,
    TypeText,
    WaitForElement,
    GetElementText,
    Screenshot,
    ExecuteJs,
    
    // Bypass
    CaptchaSolver,
    CloudflareBypass,
    LaravelCsrf,
    OcrCaptcha,
    RecaptchaInvisible,
    DataDomeSensor,
    AkamaiV3Sensor,
    XacfSensor,
    
    // Utilities
    Log,
    ClearCookies,
    Webhook,
    WebSocket,
    RandomUserAgent,
    RandomData,
    Plugin,
    FileSystem,
    Constants,
    Dictionary,
    ByteArray,
    CookieContainer,
    GenerateGUID,
    PhoneCountry,
}

Block categories

Blocks are organized into 9 categories (from src/pipeline/block/mod.rs:213-226):
CategoryColorBlock Types
Requests#0078d4HttpRequest, TcpRequest, UdpRequest, FtpRequest, SshRequest, ImapRequest, SmtpRequest, PopRequest
Parsing#4ec9b0ParseLR, ParseRegex, ParseJSON, ParseCSS, ParseXPath, ParseCookie, LambdaParser, Parse
Checks#d7ba7dKeyCheck
Functions#c586c0StringFunction, ListFunction, CryptoFunction, ConversionFunction, DateFunction, FloatFunction, IntegerFunction, TimeFunction
Control#dcdcaaIfElse, Loop, Delay, Script, CaseSwitch, Group
Browser#e06c75BrowserOpen, NavigateTo, ClickElement, TypeText, WaitForElement, GetElementText, Screenshot, ExecuteJs
Bypass#e5c07bCaptchaSolver, CloudflareBypass, OcrCaptcha, RecaptchaInvisible
Sensors#2dd4bfXacfSensor, DataDomeSensor, AkamaiV3Sensor
Utilities#858585Log, SetVariable, ClearCookies, Webhook, WebSocket, RandomUserAgent, RandomData, Plugin

Variable interpolation in settings

Most string fields support variable interpolation:
"url": "https://example.com/login?user=<input.USER>"
"body": "password={{data.PASS}}"
"output_var": "RESULT_<input.USER>"
Syntax:
  • <variable> - Interpolate and URL-encode
  • {{variable}} - Interpolate without encoding
Scopes:
  • input.* - Original wordlist data
  • data.* - Runtime variables (HTTP responses, parsed values)
  • globals.* - Global constants
  • user.* - User-defined variables
See Variables for complete documentation.

Default settings

Every block type has default settings (from src/pipeline/block/mod.rs:246-310):
impl BlockType {
    pub fn default_settings(&self) -> BlockSettings {
        match self {
            Self::HttpRequest => BlockSettings::HttpRequest(HttpRequestSettings::default()),
            Self::ParseJSON => BlockSettings::ParseJSON(ParseJSONSettings::default()),
            // ... etc for all 50+ types
        }
    }
}
Call Block::new(block_type) to create a block with default settings.

See also