Extractors¶
The extractors are used to extract the data from the response. This data can be used later to re-inject into requests, enhance alert context, etc.
Block structure¶
extractors:
  trigger:
    - if: response.status_code
      is: 200
  extract:
    - key: response.body.json
      jq: '.user.id'
      variable: 'user_id'
Variable Injection¶
Variables extracted can be re-used in different blocks in the custom rules! Supported blocks will include a use_extraction attribute. When set to true, this will trigger parsing of used variables.
This currently includes:
Example¶
transform:
    trigger:
      - if: schema.url
        is: '/api/v1/tested/route'
    mutate:
      - key: schema.url
        mutate:
          value: '/api/v2/{{user_id}}'
          use_extraction: true
Properties¶
trigger: The detectors to trigger the extraction on the request or response. Detectorsextract: The extractions to apply to the request/response. (See below)
Response Body JSON Extractor¶
key: response.body.json
You can use this extractor to extract variables from the response body JSON.
Example¶
This example will extract the user ID from the response body JSON and store it in the variable user_id.
extractors:
  trigger:
    - if: response.status_code
      is: 200
  extract:
    - key: response.body.json
      jq: '.user.id'
      variable: 'user_id'
Properties¶
variable: The variable name (Case Insensitive) to store the extracted data.can_overwrite: Whether the extractor can overwrite the variable if it already exists.jq: JQ query to apply to the JSON body. See https://stedolan.github.io/jq/manual/
Response Header Extractor¶
key: response.headers
You can use this extractor to extract variables from the response headers.
Example¶
This example will extract a token from the response header X-Token and store it in the variable x_token.
extractors:
  trigger:
    - if: response.status_code
      is: 200
  extract:
    - key: response.headers
      name: 'X-Token'
      variable: 'x_token'
Properties¶
variable: The variable name (Case Insensitive) to store the extracted data.can_overwrite: Whether the extractor can overwrite the variable if it already exists.name: Header name to extract from
Response Header Extractor¶
key: response.body.text
You can use this extractor to extract variables from the response body text.
Example¶
This example will extract the response body text and store it in the variable body_data.
extractors:
  trigger:
    - if: response.status_code
      is: 200
  extract:
    - key: response.body.text
      variable: 'body_data'
Properties¶
variable: The variable name (Case Insensitive) to store the extracted data.can_overwrite: Whether the extractor can overwrite the variable if it already exists.
Response Cookies Extractor¶
key: response.cookies
You can use this extractor to extract variables from the response cookies.
Example¶
This example will extract a session cookie returned in response (set-cookie) and store it in the variable session.
extractors:
  trigger:
    - if: response.status_code
      is: 200
  extract:
    - key: response.cookies
      name: 'session'
      variable: 'session'
Properties¶
variable: The variable name (Case Insensitive) to store the extracted data.can_overwrite: Whether the extractor can overwrite the variable if it already exists.name: Cookie name to extract from
Response Status Code Extractor¶
key: response.status_code
You can use this extractor to extract the response status code as a variable.
Example¶
This example will extract the response status code and store it in the variable status_code.
Properties¶
variable: The variable name (Case Insensitive) to store the extracted data.can_overwrite: Whether the extractor can overwrite the variable if it already exists.
Request Cookies Extractor¶
key: request.cookies
You can use this extractor to extract variables from the request cookies.
Example¶
This example will extract a session cookie sent in request (cookie) and store it in the variable session.
extractors:
  trigger:
    - if: response.status_code
      is: 200
  extract:
    - key: request.cookies
      name: 'session'
      variable: 'session'
Properties¶
variable: The variable name (Case Insensitive) to store the extracted data.can_overwrite: Whether the extractor can overwrite the variable if it already exists.name: Cookie name to extract from
Response Duration Extractor¶
key: response.duration
You can use this extractor to extract the response duration as a variable.
Example¶
This example will extract the response duration and store it in the variable duration.
Properties¶
variable: The variable name (Case Insensitive) to store the extracted data.can_overwrite: Whether the extractor can overwrite the variable if it already exists.
Request Argument Extractor¶
key: request.argument
You can use this extractor to extract an argument from request body as a variable.
Example¶
This example will extract the request argument value if it matches the given scalar and store it in the variable arg.
This example will extract the user ID sent in a request body JSON and store it in the variable arg.
Properties¶
variable: The variable name (Case Insensitive) to store the extracted data.can_overwrite: Whether the extractor can overwrite the variable if it already exists.jq: JQ query to apply to the JSON body. See https://stedolan.github.io/jq/manual/