ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Программирование > PHP, PERL, MySQL, JavaScript
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

Прошу помочь разобраться
  #1  
Старый 05.02.2010, 03:05
Аватар для mkth
mkth
Новичок
Регистрация: 28.11.2007
Сообщений: 12
Провел на форуме:
14370

Репутация: 0
По умолчанию Прошу помочь разобраться

Нарыл скрипт перлового прокси, решил его немного доработать под себя, чтобы все время не вводить юзер агент ручками, пусть значения берутся из файла... Но почему то вся моя затея не привела ни к чему хорошему, скрипт не пашет, две недели ломаю голову, ткните мну, где нужно поправить код, истинные знатоки перла...

Код:
#!/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;

while (my $conn = $server->accept) {
    my $ua = LWP::UserAgent->new;
    my $str = do {my $fh = open "<filename.txt"; local $/ = undef; <$fh>};
    chomp $str;
    $ua->default_header('My header' => $str);}
while (my $conn = $server->accept) {
    while (my $request = $conn->get_request) {
           $conn->autoflush;
                $request -> remove_header('Proxy-Connection');
		$request -> remove_header('Keep-Alive');
		$request -> header(Connection=>'close');
           my $resp = $ua->simple_request($request);
           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;
}
 
Ответить с цитированием

  #2  
Старый 05.02.2010, 03:47
Аватар для IIAHbI4
IIAHbI4
Banned
Регистрация: 24.08.2006
Сообщений: 483
Провел на форуме:
3895065

Репутация: 1112
Отправить сообщение для IIAHbI4 с помощью ICQ
По умолчанию

по моему код нужно править начиная здесь

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->newLocalPort => $port ) or
die 
"Can't start server ($@)" unless defined $server;

while (
my $conn $server->accept) {
    
my $ua LWP::UserAgent->new;
    
my $str = do {my $fh open "<filename.txt"local $/ = undef; <$fh>};
    
chomp $str;
    
$ua->default_header('My header' => $str);}
while (
my $conn $server->accept) {
    while (
my $request $conn->get_request) {
           
$conn->autoflush;
                
$request -> remove_header('Proxy-Connection');
        
$request -> remove_header('Keep-Alive');
        
$request -> header(Connection=>'close');
           
my $resp $ua->simple_request($request);
           
my $c_cont $resp->content;
        if ( 
$resp->content_encoding || (grep $_ =~ /$resp->content_type/} @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;

но это не точно
 
Ответить с цитированием

  #3  
Старый 05.02.2010, 05:25
Аватар для mkth
mkth
Новичок
Регистрация: 28.11.2007
Сообщений: 12
Провел на форуме:
14370

Репутация: 0
По умолчанию

Спасибо, только где именно, я что то не понял?
 
Ответить с цитированием

  #4  
Старый 05.02.2010, 05:45
Аватар для shell_c0de
shell_c0de
Reservists Of Antichat - Level 6
Регистрация: 07.07.2009
Сообщений: 324
Провел на форуме:
1585404

Репутация: 564
Отправить сообщение для shell_c0de с помощью ICQ Отправить сообщение для shell_c0de с помощью AIM
По умолчанию

Прочитай и попробуй разобратся .
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->newLocalPort => $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/} @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;

 
Ответить с цитированием

  #5  
Старый 05.02.2010, 05:59
Аватар для mkth
mkth
Новичок
Регистрация: 28.11.2007
Сообщений: 12
Провел на форуме:
14370

Репутация: 0
По умолчанию

Заранее прошу прощения, быть может мои просьбы покажутся истинным кодерам немного глупыми, но, как работает сам скрипт прокси мне ясно... Я его малость переделал, вот в таком виде он робит нормально

Код:
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;
$ua->default_header('My header' => "value") # вот тут я сломал голову
while (my $conn = $server->accept) {
    while (my $request = $conn->get_request) {
           $conn->autoflush;
                $request -> remove_header('Proxy-Connection');
        $request -> remove_header('Keep-Alive');
        $request -> header(Connection=>'close');
           my $resp = $ua->simple_request($request);
           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;
}
А добавил я вот эти строки

Код:
 while (my $conn = $server->accept) {
    my $ua = LWP::UserAgent->new;
    my $str = do {my $fh = open "<filename.txt"; local $/ = undef; <$fh>};
    chomp $str;
    $ua->default_header('My header' => $str)
    .................
}
скрипт робить перестал...

Т.е., мне нужна помощь именно в этих строках, как взять значение и засунуть его в запрос, а работа всего скрипта мне ясна, более или менее понятна...

Последний раз редактировалось mkth; 05.02.2010 в 06:01..
 
Ответить с цитированием

  #6  
Старый 05.02.2010, 08:08
Аватар для krypt3r
krypt3r
Познавший АНТИЧАТ
Регистрация: 27.04.2007
Сообщений: 1,044
Провел на форуме:
3660186

Репутация: 905


По умолчанию

Код:
my $str = do {open my $fh, "<filename.txt"; local $/ = undef; <$fh>};
Хотя это бредовый код.

ЗЫ.
Код:
use strict;
use warnings;
 
Ответить с цитированием

  #7  
Старый 05.02.2010, 19:04
Аватар для mkth
mkth
Новичок
Регистрация: 28.11.2007
Сообщений: 12
Провел на форуме:
14370

Репутация: 0
По умолчанию

Выходят предупреждения, но я так и не понял ниче, прошу подправить мой код...
 
Ответить с цитированием

  #8  
Старый 05.02.2010, 19:59
Аватар для Kaimi
Kaimi
Reservists Of Antichat - Level 6
Регистрация: 23.08.2007
Сообщений: 1,237
Провел на форуме:
18127311

Репутация: 1676


Отправить сообщение для Kaimi с помощью ICQ
По умолчанию

Цитата:
Нарыл скрипт перлового прокси, решил его немного доработать под себя, чтобы все время не вводить юзер агент ручками, пусть значения берутся из файла...
Идея в том, чтобы юзерагент менялся при каждом запросе?
 
Ответить с цитированием

  #9  
Старый 05.02.2010, 21:05
Аватар для mkth
mkth
Новичок
Регистрация: 28.11.2007
Сообщений: 12
Провел на форуме:
14370

Репутация: 0
По умолчанию

Цитата:
Сообщение от Kaimi  
Идея в том, чтобы юзерагент менялся при каждом запросе?
Да! Руками вбивать каждый раз новый агент имхо немного трудновато, а так запихать их все в тектовый файл и пусть при каждом запросе агент берется из файла...
 
Ответить с цитированием

  #10  
Старый 05.02.2010, 21:09
Аватар для mkth
mkth
Новичок
Регистрация: 28.11.2007
Сообщений: 12
Провел на форуме:
14370

Репутация: 0
По умолчанию

Меня немного смущает тот факт, что если запрос отправляется на страницу со скриптами, то пока все скрипты отработают, то юзерагент должен остаться один и тот же...
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
прошу помочь разобраться с кодом satana-fu PHP, PERL, MySQL, JavaScript 11 22.03.2009 16:46
Прошу помочь в кодинге Flenov С/С++, C#, Delphi, .NET, Asm 2 19.03.2009 10:24



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ