1

我正在使用HTTP::Proxy,但我无法理解如何使其在某些域中失败。

这是一些代码。

use HTTP::Proxy;
use HTTP::Proxy::BodyFilter::simple;
use HTTP::Proxy::HeaderFilter::simple;
use Getopt::Long;

my $port = 3128;
my $fail_at;

my $ret = GetOptions ( "port=i" => \$port,
            "fail=s" => \$fail_at );

my @fail_at = split(/,/, $fail_at);

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

my $fail_filter = HTTP::Proxy::HeaderFilter::simple->new(
        sub { $_[1]->header( HEADERS_HERE ); }
);

foreach my $url (@fail_at) {
    $proxy->push_filter(
        host => $url,
        response => $fail_filter
    );
}

$proxy->start;

你能帮我理解我必须写什么来代替 HEADER_HERE 吗?我试过了,Status => '403 Forbidden'但没有用。我可以修改http响应的每一行,但第一行。

非常感谢。

4

1 回答 1

0

方法codeHTTP::Response_

use HTTP::Status qw(HTTP_FORBIDDEN);
⋮
my $fail_filter 
  = HTTP::Proxy::HeaderFilter::simple->new(sub {
    $_[2]->code(HTTP_FORBIDDEN);
});
于 2012-06-04T13:04:11.617 回答