Regarding how to intercept data when users click on a link. Here's a suggestion on how to do this: create a new subclass of wx.HtmlWindow and override the default behavior for OnLinkClicked.
You'd wind up with something like this:
def OnLinkClicked(self, link):
# Get the page at the link as a string
page = urllib2.urlopen(link).read()
# Do things to modify the page
newpage = foo(page)
# Display the modified page
self.SetPage(newpage)
With your new class, you can also override a few other things to do some of the other tasks that you'd asked about.
i.e.: overriding OnOpeningURL and blocking the request if HistoryCanBack() returns True would limit users to being only able to navigate 1 page forward. (alternately, you could also limit them to only being able to view sites within a specific domain)
Checking HistoryCanBack() and HistoryCanForward() in OnOpeningURL would also be a place that you could enable or disable your forward/back buttons as needed.
Tim Tucker
tim@timtucker.com
http://www.timtucker.com/