Usage Instructions for Monkey NetSurf

This document provides usage instructions for the Monkey version of NetSurf.

Monkey NetSurf has been tested on Ubuntu and Debian.

Automated testing

If you want to run the or monkey-see-monkey-do tools then you will need python3 and pyyaml installed. The latter also needs internet access to to acquire test data.


What it is

The NetSurf Monkey front end is a developer debug tool used to test how the core interacts with the user interface. It allows the developers to profile NetSurf and to interact with the core directly as though the developer were a front end.

What it is not

Monkey is not a tool for building web-crawling robots or indeed anything other than a debug tool for the NetSurf developers.

How to interact with nsmonkey

In brief, nsmonkey will produce tagged output on stdout and expect commands on stdin. Windows are numbered and for the most part tokens are space separated. In some cases (e.g. title or status) the final element on the output line is a string which might have spaces embedded within it. As such, output from nsmonkey should be parsed a token at a time, so that when such a string is encountered, the parser can stop splitting and return the rest.

Commands to nsmonkey are namespaced. For example commands related to browser windows are prefixed by WINDOW.

Top level tags for nsmonkey

Top level response tags for nsmonkey

In the below, something% indicates a substitution made by Monkey.

Warnings, errors etc


Generic commands

Window commands

Login commands

SSL certificate commands


Generic messages

Window messages

Download window messages

SSL Certificate messages

401 Login messages

Plotter messages

Note, Monkey won't clip coordinates, but sometimes the core does.

TODO: Check if other things are implemented and add them to the docs