Skip to content

Web Browser (Firefox|Chrome) Configuration

A sample timeline for each browser is available in the repository directory of the same name.

Timeline Settings

For any single handler, there are multiple events possible. For a timeline, HandlerArgs settings might look like:

 "TimeLineHandlers": [
        {
            "HandlerType": "BrowserFirefox",
            "HandlerArgs": {
                "isheadless": "false",         // running in headless mode requires less resources
                "blockimages": "true",         // block images from loading
                "blockstyles": "true",         // block stylesheets from loading
                "blockflash": "true",          // block flash (RIP) from loading
                "blockscripts": "true",        // block scripts from loading
                "stickiness": 75,              // 75% chance of staying on the same website
                "stickiness-depth-min": 5,     // minimum number of links to click on a website
                "stickiness-depth-max": 10000, // maximum number of links to click on a website
                "incognito": "true"            // run in incognito mode
            },

TimelineEvent Basics

For a given web browser timeline (such as the sample for FireFox), there are several TimelineEvent commands possible:

  • random

This event combined with loop being set to true will cause the timeline to randomly select a website from the list provided in CommandArgs and make a corresponding GET request to that site. The timeline will then wait for the number of seconds specified in the Delay property before selecting another random website from the list. Note that if stickiness is set, the next link may be selected from the same website as the previous link.

An example of this setting is:

"TimeLineEvents": [
                {
                    "Command": "random",
                    "CommandArgs": [
                        "http://www.cmu.edu",
                        "http://sei.cmu.edu"
                        ...
  • randomalt

Similar to random but includes POST commands as well.

  • browse

Perform a GET request to the website provided in CommandArgs. This is typically used to perform a just in time JIT browser activity.

  • crawl

Used internally in conjunction with a proxy to scrape content for our hosted greyspace.

  • outlook

For use with the Outlook web client. This command will perform a GET request to the Outlook web client and then perform a series of actions such as opening an email, replying to an email, and sending an email. The number of emails to open, reply to, and send are specified in the CommandArgs property.

  • sharepoint

For use in browsing SharePoint sites and their related content.

  • blog

For use in browsing Drupal sites and their related content.

  • download

Perform a GET request to the website provided in CommandArgs and save the response to a file. This is typically used to perform a just in time JIT browser activity.

  • upload

Perform a POST request to the website provided in CommandArgs and save the response to a file. This is typically used to perform a just in time JIT browser activity.

There are other less often used commands such as:

  • type
  • typebyid
  • click
  • click.by.name
  • clickbyid
  • click.by.id
  • click.by.linktext
  • click.by.cssselector
  • js.executescript
  • manage.window.size

Timeline URL Variables

An example of a URL using variables is:

http://craigslist.org/{org}/{group}/{uuid}/{verb}/{type}/{n}?{c}={now}

All variables are in the format {variable}. There are several standard variables:

  • {now} = short datetime (mm/dd/yyyy format)
  • {uuid} = uuid
  • {c} = a single character from a-z and A-Z
  • {n} = number between 1 and 1000

We can also configure additional variables by adding the following to a browser handler in a timeline:

"url-replace": [
          {"verb": ["order", "enable", "engage"]},
          {"group": ["operations", "logistics", "medical"]},
          {"org": ["army", "command", "brigade", "battalion"]},
          {"type": ["document", "doc", "files", "vault", "filevault"]}
        ]

Therefore:

https://www.cmu.edu/{org}/{group}/{verb}/{type}/{uuid}/version_{n}?{c}={now}

might be rendered as:

https://www.cmu.edu/command/operations/order/doc/bcc396b5-47d0-4665-93c8-0a314cec13e1/version_55?d=6/21/2022