有一个非常复杂的结构和
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());