Use JavaScript to send document.getElementsByTagName('html')[0].innerHTML as hidden input value or by ajax to the server side. This is more useful than output buffering if the content is afterwards traversed/modified by JavaScript, which the server side might not have any notion about.