Browsermob-Proxy
view release on metacpan or search on metacpan
lib/Browsermob/Proxy.pm view on Meta::CPAN
its proxies. It uses L<Net::HTTP::Spore>. You can use
L<Browsermob::Server> to manage the server itself in addition to using
this module to handle the proxies.
=head2 INSTALLATION
We depend on L<Net::HTTP::Spore> to set up our communication with the
Browsermob server. Unfortunately, there hasn't been a recent release
and due to breaking changes in new versions of its dependencies, you
might run in to problems installing its current CPAN version
v0.06. And, thus installing this module may be difficult.
We're using a fork of L<Net::HTTP::Spore> that is kept slightly ahead
of master with the bug fixes merged in; installation via
L<App::cpanminus> looks like:
cpanm git://github.com/gempesaw/net-http-spore.git@build/master
=head1 ATTRIBUTES
=head2 server_addr
Optional: specify where the proxy server is; defaults to 127.0.0.1
my $proxy = Browsermob::Proxy->new(server_addr => '127.0.0.1');
=head2 server_port
Optional: Indicate at what port we should expect a Browsermob Server
to be running; defaults to 8080
my $proxy = Browsermob::Proxy->new(server_port => 8080);
=head2 port
Optional: When instantiating a proxy, you can choose the proxy port on
your own, or let the server automatically assign you an unused port.
my $proxy = Browsermob::Proxy->new(port => 9091);
=head2 trace
Set Net::HTTP::Spore's trace option; defaults to 0; set it to 1 to see
headers and 2 to see headers and responses. This can only be set during
construction; changing it afterwards will have no impact.
my $proxy = Browsermob::Proxy->new( trace => 2 );
=head1 METHODS
=head2 new_har
After creating a proxy, C<new_har> creates a new HAR attached to the
proxy and returns the HAR content if there was a previous one. If no
argument is passed, the initial page ref will be "Page 1"; you can
also pass a string to choose your own initial page ref.
$proxy->new_har;
$proxy->new_har('Google');
This convenience method is just a helper around the actual endpoint
method C</create_new_har>; it uses the defaults of not capturing
headers, request/response bodies, or binary content. If you'd like to
capture those items, you can use C<create_new_har> as follows:
$proxy->create_new_har(
payload => {
initialPageRef => 'payload is optional'
},
captureHeaders => 'true',
captureContent => 'true',
captureBinaryContent => 'true'
);
=head2 har
After creating a proxy and initiating a L<new_har>, you can retrieve
the contents of the current HAR with this method. It returns a hashref
HAR, and may in the future return an isntance of L<Archive::HAR>.
my $har = $proxy->har;
print Dumper $har->{log}->{entries}->[0];
=head2 selenium_proxy
Generate the proper capabilities for use in the constructor of a new
Selenium::Remote::Driver object.
my $proxy = Browsermob::Proxy->new;
my $driver = Selenium::Remote::Driver->new(
browser_name => 'chrome',
proxy => $proxy->selenium_proxy
);
$driver->get('http://www.google.com');
print Dumper $proxy->har;
N.B.: C<selenium_proxy> will AUTOMATICALLY call L</new_har> for you
initiating an unnamed har, unless you pass it something truthy.
my $proxy = Browsermob::Proxy->new;
my $driver = Selenium::Remote::Driver->new(
browser_name => 'chrome',
proxy => $proxy->selenium_proxy(1)
);
# later
$proxy->new_har;
$driver->get('http://www.google.com');
print Dumper $proxy->har;
=head2 firefox_proxy
Generate a hash with the proper keys and values that for use in
setting preferences for a
L<Selenium::Remote::Driver::Firefox::Profile>. This method returns a
hashref; dereference it when you pass it to
L<Selenium::Remote::Driver::Firefox::Profile/set_preference>:
my $profile = Selenium::Remote::Driver::Firefox::Profile->new;
my $firefox_pref = $proxy->firefox_proxy;
$profile->set_preference( %{ $firefox_pref } );
( run in 2.785 seconds using v1.01-cache-2.11-cpan-df04353d9ac )