Data Structure: The arf.json File

The entire structure and content of the OSINT Framework are defined in a single file: public/arf.json. This file serves as the database for the application, and understanding its structure is essential for contributing new resources or forking the project.

File Structure

The arf.json file is a large, hierarchical JSON object that represents the tree you see in the web interface. The structure is recursive, consisting of nodes that can be either folders or links.

Node Object

Every element in the tree is a JSON object with the following key-value pairs:

  • "name": (String) The text label that appears for the node in the visualization.
  • "type": (String) Defines the node's type. This can be one of two values:
    • "folder": Represents a category or sub-category. A folder node contains a children array with other nodes inside it.
    • "url": Represents a leaf node, which is a direct link to an OSINT resource.
  • "children": (Array) An array of node objects. This key is only present for nodes with "type": "folder".
  • "url": (String) The destination URL for the resource. This key is only present for nodes with "type": "url".

Example Snippet

Here is a small example from the arf.json file illustrating the structure. It shows the Username folder, which contains a Username Search Engines folder, which in turn contains several URL resources.

{
  "name": "OSINT Framework",
  "type": "folder",
  "children": [
    {
      "name": "Username",
      "type": "folder",
      "children": [
        {
          "name": "Username Search Engines",
          "type": "folder",
          "children": [
            {
              "name": "Sherlock (T)",
              "type": "url",
              "url": "https://github.com/sherlock-project/sherlock"
            },
            {
              "name": "WhatsMyName",
              "type": "url",
              "url": "https://whatsmyname.app/"
            }
          ]
        }
      ]
    }
  ]
}

How It Works

The application's frontend JavaScript, located in public/js/arf.js, uses the D3.js library to:

  1. Fetch and parse the public/arf.json file.
  2. Recursively build the interactive tree visualization based on the JSON hierarchy.
  3. Handle user interactions, such as expanding/collapsing folders (nodes with "type": "folder") and navigating to external sites (nodes with "type": "url").

By centralizing all the data in this one file, the project remains simple, transparent, and easy for the community to maintain and expand.