As a Windows programmer, there is no difficulty in automating browser actions - many good solutions exist, the simplest of which is to embed an IExplore object, preferable in a .NET application. This makes everything very simple. On Linux however, this is not really possible. Two methods are possible for this kind of thing. The first it to go the greasemonkey route - that is to say, use the very advanced extensibility offered by browsers like firefox, in order to build all required automation into. This does not easily allow one to pass objects from javascript/html to native, which is essential for things like OCR on captchas. Also it is not really a CLI solution, so less good for much hacking. The second option is to embed a browser in a C++ program like I have done. On linux at the moment the browser choice is basically opera, firefox or webkit. Opera is closed source, so no-go. Firefox can be embedded with a special COM-like-mechanism they have developed, but this is not fantastically stable, and it involves writing a lot of obscure boiler-plate c++.

The best solution by far was to use the WebKit module provided by the Qt framework. This does mean that I have to use the Qt framework, but in fact it turns out to be quite friendly. This allows a browser to be integrated with a c++ application as easily as on windows - in fact, some problems like thread-safe invocation of C++ functions from javascript, and even reflection of c++ classes to javascript visible objects are solved by cunning and transparent means.

So, its all props to Qt.

And why is it called RedSeven? Originally, the program was written to allow me to access my company's SVN server from an external (or red-side) computer - they will not allow a secure svn connection, preferring instead to have slightly heath-robinson dongle token temporarry password type arrangement, which is far too cumbersome to actually use without automation. It was called redsvn. then I realised that with little extra effort I could make the whole thing generic and vastly useful, so I changed the name to redseven because it sounded better.