Inspector34 is a transparent web proxy that records requests and
responses for later playback and comparison. It is meant to help
with regression testing.
It consists of three programs:
i34-record is the proxy
server, which keeps a journal of HTTP requests and responses; and
i34-replay recreates the original requests from this
i34-diff compares responses from the original
and replayed sessions.
Inspector34 is written in Perl, and is distributed under a BSD-style
open source license. Feedback is welcome.
Here is a brief example of how one might use Inspector34 (complete
documentation is included with the program).
Suppose your web server is listening at
You would start
i34-record (probably, but not necessarily,
on the same machine) like this:
$ i34-record from www.example.org:8080 to www.example.org:80 in orig
Then you point a browser at
interact with the site, while
i34-record records a session
transcript under the directory
orig. When you're done, you
i34-record like this:
$ i34-record from www.example.org:8080 to www.example.org:80 in new
Then run "
i34-replay orig" to recreate the HTTP requests
orig, and send them through the proxy again.
You will end up with a second transcript under the
directory. To compare the two, you would run:
$ i34-diff orig new
That's all there is to it.
Inspector34 depends on Rocco Caputo's excellent
POE framework, as well as the
modules. These are all available from the CPAN.
At the time of writing,
HTTP::Parser 0.04 needs a trivial
patch in order to work correctly. I have sent the patch to the author,
and I hope an updated 0.05 release will be available soon. In the
meantime, the diff is included in the distribution above, along with
instructions on how to apply it.
This code is provided here with no warranty, and may be freely used,
modified, or redistributed provided that derivative works are clearly
identified as being different from the original, and copyright notices
in the source are preserved. (The package includes a complete license
In October 2007, my friend Josh Purinton asked me if I wanted to write a
prototype of a transparent proxy that could record and replay requests.
I said yes; and we agreed that the program would be released under an
open-source license. Josh suggested the name inspector34, after a
perfectionist underwear quality inspector from an episode of "The
Adventures of Pete & Pete".
I used Philippe Bruhat's very convenient
to write the first version, which was ready by the end of January 2008.
It worked well enough as a proof of concept, but it took me a while to
figure out how to cooperate with
eccentric callback behaviour.
Even after jumping through some hoops, the program was troubled by bugs
in and around
HTTP::Proxy that showed up in corner cases;
and the fork-per-request model made it unsuitable for its intended use
So I welcomed an opportunity in May 2008 to rewrite it using POE, this
time adding a comprehensive test suite, and making it robust enough for
real use. Due to inexcusable delays on my part, the final version was
ready only in mid-March 2009. Nevertheless, it is a great improvement
over the prototype.
The development of Inspector34 was sponsored by
The Daily Source, a news
aggregator—like Google News, but "with human editors and
Josh Purinton deserves thanks not only for coming up with the idea, but
also for suggesting a much cooler name for the program than I would ever
have thought of myself.
Inspector34 is dedicated to my memory of Bertie, who didn't quite live
long enough to see it working (and wouldn't have known what to make of
it if he had).