perl http :: proxy – 转储所有通信

前端之家收集整理的这篇文章主要介绍了perl http :: proxy – 转储所有通信前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
有一个非常复杂的结构和 javascript逻辑与许多ajax调用的网页,一些请求只有一个响应纯(applicaton / json)对象,一些ajax获取HTML等等…;(

需要分析浏览器和服务器之间的完整通信,因此决定编写一个perl-proxy“简单”转储任何方向的所有文本通信(请求和响应).

找到HTTP::Proxy模块,但我完全混淆了过滤器.

基本代码

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

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

很好地工作,但我不知道如何为它编写过滤器.

分发中的“eg”目录有许多复杂的例子,如何修改响应主体内容等等,但基本的dump_all_communication丢失了.

任何人都可以指导我,如何编写一个简单的过滤器:

>转出从浏览器到服务器的所有http请求
>并且当他们有mime:text / *和application / json和application / x-javascript(或者更好:除了没有图像,pdf和flash之外的任何东西)时,转出所有回复内容

Here is similiar question,但它想要过滤JSON,我想要更简单 – 转储所有内容(所有请求和所有响应(但没有图像))

解决方法

基于一个例子,我会这样做.它只是向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,$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());

猜你在找的Perl相关文章