PhantomJS gives you command-line access to the features of WebKit. According to its website: "Literally it acts like any other WebKit-based web browser, except that nothing gets displayed to the screen (thus, the term headless)." It has native support for DOM handling, CSS selector, JSON, Canvas, SVG, and JavaScript.

You can use to test JavaScript, render Web pages as PDFs or perform more complex Web-based actions such as finding recent tweets by a particular Twitter user.

Here's a list of example uses from the project's Google Code page:

  • running regression tests from command line
  • getting driving direction
  • showing weather forecast conditions
  • finding pizza in New York
  • looking up approximate location based on IP address
  • pulling the list of seasonal food
  • producing PDF version of a Wikipedia article
  • rasterizing SVG to image

Here's an example of producing a PDF from a particular URL, from the PhantomJS QuickStart:

phantomjs rasterize.js 'http://en.wikipedia.org/w/index.php?title=Jakarta&printable=yes' jakarta.pdf

PhantomJS was created by Ariya Hidayat.

Other "headless" Web stacks include Celerity, HTMLUnit and Zombie.js.