
05.02.2010, 05:45
|
|
Reservists Of Antichat - Level 6
Регистрация: 07.07.2009
Сообщений: 324
Провел на форуме: 1585404
Репутация:
564
|
|
Прочитай и попробуй разобратся .
http://forum.antichat.ru/showthread.php?t=20299
http://www.internet-technologies.ru/scripts/script_767.html
а так пример:
PHP код:
#!/usr/bin/perl
use HTTP::Daemon;
use LWP::UserAgent;
use Compress::Zlib;
use CGI::Carp qw(fatalsToBrowser);
# Ниже список расширений (типов) файлов, которые мы не сжимаем
my @ext = qw(x-gtar x-gzip x-tar zip image zip z gz tz taz tgz lzh arj arc tar cab wmz yfs wsz exe uu xxe bhx b64 hqx mim);
# Номер порта нашего сервера, его мы указываем в настройках домашнего браузера
my $port = 8080;
# Если браузер внезапно отключится
$SIG{PIPE} = 'IGNORE';
# Создаем объект сервера
my $server = HTTP::Daemon->new( LocalPort => $port ) or
die "Can't start server ($@)" unless defined $server;
# Создаем объект удаленного (серверного) браузера
my $ua = LWP::UserAgent->new;
# Ждем подключения нашего (домашнего) браузера
while (my $conn = $server->accept) {
# Дождавшись, получаем объект запроса в $request (вот тут мы его можем менять)
while (my $request = $conn->get_request) {
$conn->autoflush;
# Например "сменим" браузер
$request->header(User_Agent => 'SuperPuper/v.9.14 Platinum');
# Перечислим все данные, которые мы можем получать, кроме flash (теперь нам flash не передадут)
$request->header(Accept =>
"text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,video/x-mng,image/png,image/jpeg,image/gif;q=0.2,text/css,*/*;q=0.1");
# Посылаем запрос через серверный браузер и получаем объект ответа в $resp
my $resp = $ua->simple_request($request);
# В переменной $c_cont содержание (данные) ответа
my $c_cont = $resp->content;
# Проверяем необходимость сжатия, если сжатие не нужно, тут же отправляем на домашний браузер
if ( $resp->content_encoding || (grep { $_ =~ /$resp->content_type/g } @ext) || length($c_cont) < 3000 ) {
$conn->send_response($resp);
}
else {
# Сжимаем данные
$c_cont_zip = Compress::Zlib::memGzip($c_cont);
# Устанавливаем сжатые данные в объект ответа
$resp->content($c_cont_zip);
# Устанавливаем признак сжатия в объект ответа
$resp->content_encoding('gzip');
# Посылаем ответ домашнему браузеру
$conn->send_response($resp);
}
}
print STDERR "Close: ", $conn->reason, "\n";
$conn->close;
undef $conn;
}
|
|
|