【问题标题】:Capture HTTP request headers / parameters using BrowserMob Proxy and selenium web driver using perl client使用 BrowserMob 代理和 selenium web 驱动程序使用 perl 客户端捕获 HTTP 请求标头/参数
【发布时间】:2016-05-17 02:06:08
【问题描述】:

我正在尝试使用 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);

更新:

  1. 模块 Net::HTTP::Spore::Role::Middleware 使用了不推荐使用的方法 (Class::MOP::load_class)。我把它改成了 Class::Load::load_class
  2. Selenium::Remote::Driver 的参数“httpProxy”必须是没有 URL 方案的特定 IP 地址。如果是 $proxy->selenium_proxy,则不工作。

但是,我只能捕获第一个请求。无法捕获 selenium 驱动器发出的后续请求。例如,下面的代码只捕获第一个 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);

【问题讨论】:

    标签: perl selenium browsermob-proxy


    【解决方案1】:

    使用create_new_har 代替new_har

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

    【讨论】:

    • 感谢您的回复。但它不起作用。我没有得到 http 参数
    • @Pathak,请找到如下输出。
    • $VAR1 = { 'log' => { 'entries' => [], 'version' => '1.2', 'pages' => [ { 'startedDateTime' => '2016- 05-20T19:02:34.105-05:00', 'title' => 'Page 0', 'comment' => '', 'id' => 'Page 0', 'pageTimings' => { 'comment' => '' } } ], 'creator' => { 'name' => 'BrowserMob Proxy', 'comment' => '', 'version' => '2.1.0-beta-6-littleproxy' }, '评论' => '' } };
    猜你喜欢
    • 2012-08-12
    • 2015-07-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-24
    • 2018-04-29
    相关资源
    最近更新 更多