使用BrowserMob代理和使用perl客户端的selenium web驱动程序捕获HTTP请求头/参数

使用BrowserMob代理和使用perl客户端的selenium web驱动程序捕获HTTP请求头/参数,perl,selenium,browsermob-proxy,Perl,Selenium,Browsermob Proxy,我正在尝试使用Selenium::Remote::Driverand Browsermob::Proxy捕获http请求参数。伪代码如下所示。我无法获取http头 任何帮助都将不胜感激 use Selenium::Remote::Driver; use Data::Dumper; my $proxy = Browsermob::Proxy->new(trace => 2); my $driver = Selenium::Remote::Driver->new( browser

我正在尝试使用Selenium::Remote::Driverand Browsermob::Proxy捕获http请求参数。伪代码如下所示。我无法获取http头

任何帮助都将不胜感激

use Selenium::Remote::Driver;
use Data::Dumper;

my $proxy = Browsermob::Proxy->new(trace => 2);
my $driver = Selenium::Remote::Driver->new(
browser_name => 'firefox',
proxy        => $proxy->selenium_proxy(1)
);

$proxy->new_har( payload => {
        initialPageRef => '1' }, captureHeaders => 'true',
    captureContent => 'true',
    captureBinaryContent => 'true');

$driver->get('http://www.google.com/');
print Dumper($proxy->har);
更新:

  • 模块Net::HTTP::Spore::Role::Middleware使用了一种不推荐使用的方法(Class::MOP::load_Class)。我把它改为Class::Load::Load\u Class
  • Selenium::Remote::Driver的参数“httpProxy”必须是没有URL方案的特定IP地址。如果它是$proxy->selenium\u proxy,则它不工作
  • 然而,我只能捕获第一个请求。无法捕获selenium drive发出的后续请求。例如,下面的代码仅捕获第一个GET请求,而不是第二个GET请求

    use Data::Dumper;
    use Browsermob::Proxy;
    use Selenium::Remote::Driver;
    
    my $proxy = Browsermob::Proxy->new(
    server_port => 8080,
    );
    
    
    $proxy->new_har( payload => {
            initialPageRef => 'payload is optional' }, captureHeaders => 'true',
        captureContent => 'true',
        captureBinaryContent => 'true', port => $proxy->port );
    
    my $driver = Selenium::Remote::Driver->new(
    browser_name => 'firefox',
    proxy        =>  { 'proxyType' => 'manual', 'httpProxy' =>     '127.0.0.1:'.$proxy->port}, 
    );
    $driver->get('http://www.google.com/');
    $driver->find_element("//input[\@name='q']")->send_keys("selenium");
    $driver->find_element("//button[\@name='btnG']")->click;
    print Dumper($proxy->har);
    

    使用
    create_new_har
    而不是
    new_har

    $proxy->create_new_har(
        payload => {
            initialPageRef => 'payload is optional'
        },
        captureHeaders => 'true',
        captureContent => 'true',
        captureBinaryContent => 'true'
    );
    

    使用
    create_new_har
    而不是
    new_har

    $proxy->create_new_har(
        payload => {
            initialPageRef => 'payload is optional'
        },
        captureHeaders => 'true',
        captureContent => 'true',
        captureBinaryContent => 'true'
    );
    

    谢谢你的回复。但它不起作用。我不懂httpparameters@Pathak,请按以下方式查找输出。$VAR1={'log'=>{'entries'=>[],'version'=>'1.2','pages'=>[{'startedDateTime'=>'2016-05-20T19:02:34.105-05:00','title'=>'Page 0','comment'=>'','id'=>'Page 0','pagetimes'=>{'comment'=>'Page 0','creator=>{'name'=>'BrowserMob Proxy','comment'=>'','version'=>'2.1.0-beta-6-littleproxy'},'comment'=>'};感谢您的回复。但它不起作用。我没有收到httpparameters@Pathak,请按如下方式查找输出。$VAR1={'log'=>{'entries'=>[],'version'=>'1.2','pages'=>[{'startedDateTime'=>'2016-05-20T19:02:34.105-05:00','title'=>'Page 0','comment'=>'Page 0','id'=>'Page 0','pageTimings'=>{'comment'=>''}}],'creator'=>{'name'=>'BrowserMob Proxy','comment'>'version'=>'2.1.0-beta-6-littleproxy','comment'=>'>'};