Snoopy is a PHP class that simulates a web browser. It automates the task of retrieving web page content and posting forms, for example.
Snoopy implements a lot of the quirks that must be used when imitating a web browser, such as http-equiv redirects. However, it uses regular expressions instead of an HTML parser to parse HTML. Also, it appears to completely implement the HTTP protocol. Perhaps these behaviors enable it to appear more like a normal browser and work around very badly-formed HTML, but I would rather use a library which takes advantage of libcurl and also libxml's HTML parser.