So, I use WPEWebKit, with an headless backend and a web-extension that fakes a user interaction (scroll) and waits a second before dumping the HTML body to the stdout.
Why NIH PhantomJS? Well PhantomJS is un-maintained, likely plagued with security bugs, and Qt based anyway, which I don't want on my server. WPE is a perfect fit for this project.