4

非常に複雑な構造と多くのajax呼び出しを伴うjavascriptロジックを備えたWebページがあり、一部のリクエストは純粋な(applicaton / json)オブジェクトにのみ応答し、一部のajaxはhtmlなどを取得します...;(

ブラウザとサーバー間の完全な通信を分析する必要があるため、すべてのテキスト通信を任意の方向に「単純に」ダンプするperlプロキシを作成することにしました(要求と応答も)。

HTTP :: Proxyモジュールが見つかりましたが、フィルターと完全に混同されています。

基本的なコード:

use strict;
use warnings;
use HTTP::Proxy;

my $proxy = HTTP::Proxy->new( port => 3128 );
$proxy->start;

うまく機能しますが、フィルターを作成する方法がわかりません。

ディストリビューションの「eg」ディレクトリには、応答本文の内容などを変更する方法など、非常に複雑な例がありますが、基本的なdump_all_communicationものがありません。

誰かが私を導くことができますか、簡単なフィルターを書く方法:

  • ブラウザからサーバーに何が起こっているかをすべてのhttpリクエストでダンプします
  • text/*そして、mimeがある場合は、すべての応答のコンテンツをダンプしapplication/jsonますapplication/x-javascript

これは同様の質問ですが、JSONをフィルター処理する必要があり、より単純なものが必要です-すべてをダンプします(すべての要求とすべての応答(ただし画像はありません))

4

1 に答える 1

2

一例に基づいて、私はこれを行います。このプロキシで通過するすべてのものをstderrに出力するだけです。

それに応じてフィルターを調整します。

よろしく、

{
    package DumpAllBody;
    use base qw( HTTP::Proxy::BodyFilter );
    use Data::Dumper;
    sub filter {
        my ( $self, $dataref, $message, $protocol, $buffer ) = @_;
        warn "Body:\n".Dumper($dataref,$message,$protocol,$buffer);
    }
}
{
    package DumpAllHeader;
    use base qw( HTTP::Proxy::HeaderFilter );
    use Data::Dumper; 
    sub filter {
        my ( $self, $headers, $message ) = @_;

        warn "Body:\n".Dumper($headers,$message);
    }
}
$proxy->push_filter( request  => DumpAllHeader->new(), response => DumpAllHeader->new());
$proxy->push_filter( request  => DumpAllBody->new(),   response => DumpAllBody->new());
于 2012-09-04T12:20:49.647 に答える