2012-06-03 1 views
1

Я использую HTTP::Proxy, но я не могу понять, как сделать его неудачным для определенного домена.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, но в первую очередь.

спасибо.

ответ

0

См. method code in HTTP::Response.

use HTTP::Status qw(HTTP_FORBIDDEN); 
⋮ 
my $fail_filter 
    = HTTP::Proxy::HeaderFilter::simple->new(sub { 
    $_[2]->code(HTTP_FORBIDDEN); 
}); 
+0

спасибо. – Zagorax

+0

Извините, как вы можете видеть, я здесь новый. Кстати ... сделано! ;) – Zagorax