1#!/usr/bin/perl -w 2use strict; 3use HTTP::Proxy qw( :log ); 4use HTTP::Proxy::BodyFilter::simple; 5use CGI::Util qw( unescape ); 6 7# NOTE: Body request filters always receive the request body in one pass 8my $filter = HTTP::Proxy::BodyFilter::simple->new( 9 sub { 10 my ( $self, $dataref, $message, $protocol, $buffer ) = @_; 11 print STDOUT $message->method, " ", $message->uri, "\n"; 12 13 # this is from CGI.pm, method parse_params 14 my (@pairs) = split ( /[&;]/, $$dataref ); 15 for (@pairs) { 16 my ( $param, $value ) = split ( '=', $_, 2 ); 17 $param = unescape($param); 18 $value = unescape($value); 19 printf STDOUT " %-30s => %s\n", $param, $value; 20 } 21 } 22); 23 24my $proxy = HTTP::Proxy->new(@ARGV); 25$proxy->push_filter( method => 'POST', request => $filter ); 26$proxy->start; 27 28