Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Интернет » Web-программирование » Perl: proxy...

Модерирует : Cheery

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2

Открыть новую тему     Написать ответ в эту тему

KiRyX



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Как создать соединение через прокси-сервер, какой модуль, откуда качать?

Всего записей: 199 | Зарегистр. 17-11-2003 | Отправлено: 03:06 11-01-2004
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
KiRyX

Цитата:
Как создать соединение через прокси-сервер, какой модуль, откуда качать?

а может лучше сначала объяснить чего и зачем.. а уже потом будем думать как..

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 03:09 11-01-2004
KiRyX



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
   $socket=IO::Socket::INET->new( PeerAddr => $server,
PeerPort => $port,
Proto => tcp)
    ...
    $get=...
 
То же самое тока через прокси...

Всего записей: 199 | Зарегистр. 17-11-2003 | Отправлено: 03:45 11-01-2004
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
KiRyX
я к тому, что LWP умеет сам работать через прокси.. если нужно грабить страницы.
или поставить пакетик..
http://www.cpan.org/modules/by-module/Net/Net-HTTPTunnel-0.3.readme
можно, конечно, и в лоб.. но оно нужно?

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 03:51 11-01-2004
KiRyX



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Cheery

Цитата:
грабить страницы

Как ты наверное догадался цель - брутфорс (00-FF, chr - помнишь?), так что как удобнее  
тебе видней...

Цитата:
LWP

-what is LWP?
 
Добавлено
И еще, где можно найти инфу про fork?

Всего записей: 199 | Зарегистр. 17-11-2003 | Отправлено: 04:14 11-01-2004
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
KiRyX

Цитата:
-what is LWP?  

http://www.protoplex.ru/cgi-bin/publish.pl?showid=157
http://www.google.com/search?q=perl+lwp&ie=UTF-8&oe=UTF-8&hl=ru&lr=
http://forum.ru-board.com/forums.cgi?action=filter&forum=31&filterby=topictitle&word=lwp

Цитата:
И еще, где можно найти инфу про fork?

конкретнее
http://search.cpan.org/~jhi/perl-5.8.0/pod/perlfork.pod

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 04:21 11-01-2004 | Исправлено: Cheery, 04:21 11-01-2004
KiRyX



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
И, не волнуйся, последний тупой вопрос, пару линков на инфу по безопасности cgi'шек,
если не трудно...
---
ОГРОМНОЕ СПАСИБО за мегаинформативные ответы и гиперполезные ссылки!

Всего записей: 199 | Зарегистр. 17-11-2003 | Отправлено: 04:33 11-01-2004
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
KiRyX

Цитата:
пару линков на инфу по безопасности cgi'шек,  

От противного
http://forum.ru-board.com/topic.cgi?forum=55&topic=0024#1
http://www.citforum.ru/security/web/

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 04:35 11-01-2004
KiRyX



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Cheery
Thx!
---
И что бы я без тебя делал?...

Всего записей: 199 | Зарегистр. 17-11-2003 | Отправлено: 04:44 11-01-2004
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
KiRyX

Цитата:
И что бы я без тебя делал?...

научился бы пользоваться поисковиками или фильтром форума.

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 04:45 11-01-2004
ghtl

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Почему у меня не создаётся соединение через прокси.  
 
Вот исходный код скрипта.
 

Код:
#!/usr/bin/perl
use IO::Socket;  
print "Content-type: text/html\n\n";
 
sub urldecode{    
 local($val)=@_;  
 $val=~s/\+/ /g;
 $val=~s/%([0-9a-hA-H]{2})/pack('C',hex($1))/ge;
 return $val;
 }
 
$port = 80;  
$host = "www.domen.ru";
 
if($ENV{'REQUEST_METHOD'} eq 'GET'){
   $query=$ENV{'QUERY_STRING'};
}
elsif($ENV{'REQUEST_METHOD'} eq 'POST'){
   sysread(STDIN,$query,$ENV{'CONTENT_LENGTH'});
}
 
if($query eq ''){
print <<HTML;
<html>
<body>
<form method="post" action="pipka.cgi">
Текст сообщения<br><input type="text" name="say" size="45"><br>
Кол-во повторений <input type="text" name="n" value="5" size="3"><br>
Идент. номер <input type="text" name="num" size="10"><br>
<input type="submit" value="Пшел">
</form>
</body></html>
HTML
}
else{
   @formfields=split(/&/,$query);
   foreach(@formfields){
      if(/^say=(.*)/){$say=urldecode($1);}
      if(/^n=(.*)/){$n=urldecode($1);}
      if(/^num=(.*)/){$num=urldecode($1);}
   }
 
   $send="number=1&ch=Yes&message=$say";
   $send=~s/\s/+/g;
   $l=length($send);
 
   for($i=1;$i<=$n;$i++){
      $socket = IO::Socket::INET->new(PeerAddr => $host, PeerPort => $port,Proto => "TCP");
 
      print $socket "POST /cgi-bin/net/get.cgi?room=flood&id=$num&login=$num&pass=$num HTTP/1.1\n";
      print $socket "Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-excel, application/msword, */*\n";
      print $socket "Accept-Language: ru\n";
      print $socket "Content-Type: application/x-www-form-urlencoded\n";
      print $socket "Accept-Encoding: gzip, deflate\n";
      print $socket "User-Agent: Mozilla/4.0 (compatible; MSIE 5.0; Windows 98; DigExt)\n";
      print $socket "Host: $host\n";
      print $socket "Content-Length: $l\n";
      print $socket "Connection: Keep-Alive\n";
      print $socket "\n";
      print $socket "$send\n";
   }
}
 

 
 
Вот с изменениями для работы через прокси.
 

Код:
 
#!/usr/bin/perl
use IO::Socket;  
print "Content-type: text/html\n\n";
 
sub urldecode{    
 local($val)=@_;  
 $val=~s/\+/ /g;
 $val=~s/%([0-9a-hA-H]{2})/pack('C',hex($1))/ge;
 return $val;
 }
 
$port = 29992; # номер порта
$host = 68.59.187.0; # адрес прокси
 
if($ENV{'REQUEST_METHOD'} eq 'GET'){
   $query=$ENV{'QUERY_STRING'};
}
elsif($ENV{'REQUEST_METHOD'} eq 'POST'){
   sysread(STDIN,$query,$ENV{'CONTENT_LENGTH'});
}
 
if($query eq ''){
print <<HTML;
<html>
<body>
<form method="post" action="pipka2.cgi">
Текст сообщения<br><input type="text" name="say" size="45"><br>
Кол-во повторений <input type="text" name="n" value="5" size="3"><br>
Идент. номер <input type="text" name="num" size="10"><br>
<input type="submit" value="Пшел">
</form>
</body></html>
HTML
}
else{
   @formfields=split(/&/,$query);
   foreach(@formfields){
      if(/^say=(.*)/){$say=urldecode($1);}
      if(/^n=(.*)/){$n=urldecode($1);}
      if(/^num=(.*)/){$num=urldecode($1);}
   }
 
   $send="number=1&ch=Yes&message=$say";
   $send=~s/\s/+/g;
   $l=length($send);
 
   for($i=1;$i<=$n;$i++){
      $socket = IO::Socket::INET->new(PeerAddr => $host, PeerPort => $port,Proto => "TCP");
 
      print $socket "POST domen.ru/cgi-bin/net/get.cgi?room=flood&id=$num&login=$num&pass=$num HTTP/1.1\n";
      print $socket "Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*\n";
      print $socket "Accept-Language: ru\n";
      print $socket "Content-Type: application/x-www-form-urlencoded\n";
      print $socket "Accept-Encoding: gzip, deflate\n";
      print $socket "User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; MyIE2)\n";
      print $socket "Host: $host\n";
      print $socket "Content-Length: 195\n";
      print $socket "Connection: Keep-Alive\n";
      print $socket "\n";
      print $socket "$send\n";
   }
}
 
 
 

 
Почему во втором случае не работает, в чём причины?

Всего записей: 29 | Зарегистр. 17-12-2004 | Отправлено: 22:37 24-01-2005 | Исправлено: ghtl, 23:50 24-01-2005
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ghtl

Цитата:
Почему во втором случае не работает, в чём причины?  

причины в том, что запрос должен быть вида
print $socket "GET http://domen.ru/cgi-bin/net/get.cgi?room=flood&id=$num&login=$num&pass=$num HTTP/1.1\n";  
зачем POST? если данные все равно идут через GET

Цитата:
print $socket "Content-Length: 195\n";  

почему фиксированная длина? и зачем тогда $send?

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 22:51 24-01-2005
ghtl

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Cheery
Извини пропустил $send. Я подправил своё сообщение и добавил $send.  
 
Напишу по новой чтобы было понятней.
Вот первый случай код работает проверял.
 

Код:
 
#!/usr/bin/perl
use IO::Socket;  
print "Content-type: text/html\n\n";
 
sub urldecode{    
 local($val)=@_;  
 $val=~s/\+/ /g;
 $val=~s/%([0-9a-hA-H]{2})/pack('C',hex($1))/ge;
 return $val;
 }
 
$port = 80;  
$host = domen.ru;  
 
if($ENV{'REQUEST_METHOD'} eq 'GET'){
   $query=$ENV{'QUERY_STRING'};
}
elsif($ENV{'REQUEST_METHOD'} eq 'POST'){
   sysread(STDIN,$query,$ENV{'CONTENT_LENGTH'});
}
 
if($query eq ''){
print <<HTML;
<html>
<body>
<form method="post" action="pipka.cgi">
Кол-во повторений <input type="text" name="n" value="5" size="3"><br>
<input type="submit" value="Пшел">
</form>
</body></html>
HTML
}
else{
   @formfields=split(/&/,$query);
   foreach(@formfields){
      if(/^say=(.*)/){$say=urldecode($1);}
      if(/^n=(.*)/){$n=urldecode($1);}
      if(/^num=(.*)/){$num=urldecode($1);}
   }
 
   $send="number=1&ch=Yes&message=$say";
   $send=~s/\s/+/g;
   $l=length($send);
 
   for($i=1;$i<=$n;$i++){
      $socket = IO::Socket::INET->new(PeerAddr => $host, PeerPort => $port,Proto => "TCP");
 
      print $socket "POST /cgi-bin/ikonboard.cgi HTTP/1.1\n";
      print $socket "Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*\n";
      print $socket "Accept-Language: ru\n";
      print $socket "Content-Type: application/x-www-form-urlencoded\n";
      print $socket "Accept-Encoding: gzip, deflate\n";
      print $socket "User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; MyIE2)\n";
      print $socket "Host: $host\n";
      print $socket "Content-Length: 195\n";
      print $socket "Connection: Keep-Alive\n";
      print $socket "\n";
 
      print $socket "st=&act=Post&CODE=01&s=3b992a40970b80f697681e7cbeb1967c&f=1&UserName=123&TopicTitle=1222222&TopicDesc=&iconid=0&
Post=2222222223+33333333333333333&enableemo=yes&enablesig=yes&submit=Post+New+Topic\n";
   }
}
 
 

 
Второй вариант, пробуем через проксю.
 

Код:
 
#!/usr/bin/perl
use IO::Socket;  
print "Content-type: text/html\n\n";
 
sub urldecode{    
 local($val)=@_;  
 $val=~s/\+/ /g;
 $val=~s/%([0-9a-hA-H]{2})/pack('C',hex($1))/ge;
 return $val;
 }
 
$port = 29992;    # НОМЕР ПОРТА
$host = 68.59.187.0;   # АДРЕС ПРОКСИ
 
if($ENV{'REQUEST_METHOD'} eq 'GET'){
   $query=$ENV{'QUERY_STRING'};
}
elsif($ENV{'REQUEST_METHOD'} eq 'POST'){
   sysread(STDIN,$query,$ENV{'CONTENT_LENGTH'});
}
 
if($query eq ''){
print <<HTML;
<html>
<body>
<form method="post" action="pipka.cgi">
Кол-во повторений <input type="text" name="n" value="5" size="3"><br>
<input type="submit" value="Пшел">
</form>
</body></html>
HTML
}
else{
   @formfields=split(/&/,$query);
   foreach(@formfields){
      if(/^say=(.*)/){$say=urldecode($1);}
      if(/^n=(.*)/){$n=urldecode($1);}
      if(/^num=(.*)/){$num=urldecode($1);}
   }
 
   $send="number=1&ch=Yes&message=$say";
   $send=~s/\s/+/g;
   $l=length($send);
 
   for($i=1;$i<=$n;$i++){
      $socket = IO::Socket::INET->new(PeerAddr => $host, PeerPort => $port,Proto => "TCP");
 
      print $socket "POST domen.ru/cgi-bin/ikonboard.cgi HTTP/1.1\n"; # ЗДЕСЬ УКАЗЫВАИМ ПОЛНЫЙ ПУТЬ СКРИПТА, ТАК КАК ЗАПРОС ИДЁТ ЧЕРЕЗ ПРОКСЮ. ПРАВИЛЬНО?
      print $socket "Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*\n";
      print $socket "Accept-Language: ru\n";
      print $socket "Content-Type: application/x-www-form-urlencoded\n";
      print $socket "Accept-Encoding: gzip, deflate\n";
      print $socket "User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; MyIE2)\n";
      print $socket "Host: $host\n";
      print $socket "Content-Length: 195\n";
      print $socket "Connection: Keep-Alive\n";
      print $socket "\n";
 
      print $socket "st=&act=Post&CODE=01&s=3b992a40970b80f697681e7cbeb1967c&f=1&UserName=123&TopicTitle=1222222&TopicDesc=&iconid=0&
Post=2222222223+33333333333333333&enableemo=yes&enablesig=yes&submit=Post+New+Topic\n";
   }
}
 
 





Специально внес перенос в строку с параметрами, чтобы не портить форматирование топика. /Cheery/

Всего записей: 29 | Зарегистр. 17-12-2004 | Отправлено: 00:04 25-01-2005 | Исправлено: Cheery, 00:43 25-01-2005
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ghtl

Цитата:
ЗДЕСЬ УКАЗЫВАИМ ПОЛНЫЙ ПУТЬ СКРИПТА, ТАК КАК ЗАПРОС ИДЁТ ЧЕРЕЗ ПРОКСЮ. ПРАВИЛЬНО?  

и где ты там видишь полный адрес? и же специально указал.. http://domen.ru
опять же..

Цитата:
print $socket "Content-Length: 195\n";  

почему фиксировано? а если чуть поменяешь отправляемую строку?  


----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 00:42 25-01-2005 | Исправлено: Cheery, 00:43 25-01-2005
ghtl

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Cheery
 
Если указывать полный путь с http://, то скрипт вообще не работаит, ошибка 500.
 
print $socket "Content-Length: 195\n"; Почему фиксировано? Ты предлагаешь её убрать или изменить?

Всего записей: 29 | Зарегистр. 17-12-2004 | Отправлено: 02:41 25-01-2005
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ghtl

Цитата:
print $socket "Content-Length: 195\n"; Почему фиксировано? Ты предлагаешь её убрать или изменить?

у тебя фиксировано.. смотри первый пример.

Цитата:
Если указывать полный путь с http://, то скрипт вообще не работаит, ошибка 500.

сделай просто - поставь снифер или proxomitron и воспользуйся бразером и посмотри, как запрос выглядит.. сразу решит все проблемы.


----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 02:54 25-01-2005
sergsd

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Подскажите пожалуйста, как к прокси, который требует авторизации, в IO::Socket прикрутить пользователя и пароль?

Всего записей: 273 | Зарегистр. 20-06-2003 | Отправлено: 01:52 13-03-2005
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
sergsd
http://www.faqs.org/rfcs/rfc2617.html

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 01:55 13-03-2005
sergsd

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Cheery, попытался разобраться, но не получилось, англ. я не оч. хорошо знаю, но, как я понял, если бы и знал хорошо, то эта дока мне мало бы чего дала.
Буду благодарен, если приведешь свой алгоритм работы мозга в этом документе: увидел такой-то кусок текста, о значит в перл это будет так и так, а это надо подставить сюда и сюда, ну и т.д.

Всего записей: 273 | Зарегистр. 20-06-2003 | Отправлено: 02:33 13-03-2005
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
sergsd
все, что тебе оттуда нужно было - basic authentication
советую вот почитать
http://www.lonsteins.com/articles/sockets.pdf
в районе 40 страницы, но лучше прочитать все сорри, снова на англ.
 

Цитата:
sub auth_basic {
print STDERR "Using BASIC authentication.\n";
print $proxy "Proxy-Authorization: Basic ", encode_base64("$user:$pass"), "\r\n";
}

 

Цитата:
 
sub auth_digest {print STDERR "Using DIGEST authentication.\n";
$_ = <$proxy> while ( $_ =~ /digest/i );
my ($challenge) = ( split ( ’:’, $_ ))[1];
my ( $user, $pass )= split ( ’:’, $auth );
my $response = md5_base64("$user:$pass:$challenge");
print $proxy "Proxy-Authorization:$response\r\n";
}

 
плюс исходники тут
http://www.kasai.fm/perlHTTP/

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 02:40 13-03-2005 | Исправлено: Cheery, 02:47 13-03-2005
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2

Компьютерный форум Ru.Board » Интернет » Web-программирование » Perl: proxy...


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2025

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru