Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Perl: разработка для Web > авторизация


Автор: GR0Mi 22.4.2010, 23:22
парни помогите авторизироватся на летитбит
Код

my $resp = $ua->post('http://wm.letitbit.net/signin.php',
                             ["host" => "letitbit_net",
                             "log" => $login,
                             "pas" => $pass,
                             "inout" => "Sign+In",])->as_string;

        wf($file, $resp);

        if ($resp =~ "http://wm.letitbit.net/?a=4")


специально сохраняю что отвечает сервер
вот ответ при чекер 3 аков. странно что только код а не страница авторизации

Цитата

HTTP/1.0 302 Moved Temporarily Date: Wed, 21 Apr 2010 16:18:34 GMT Via: 1.0 rusresource.ru (squid/3.1.0.17) Location: http://wm.letitbit.net/signin.php?errors=login Server: Apache/1.3.42 (Unix) PHP/5.2.11 Content-Type: text/html Client-Date: Tue, 20 Apr 2010 15:16:37 GMT Client-Peer: 78.140.170.226:80 Client-Response-Num: 1 Proxy-Connection: close X-Cache: MISS from rusresource.ru X-Powered-By: PHP/5.2.11 HTTP/1.0 302 Moved Temporarily Date: Wed, 21 Apr 2010 16:18:34 GMT Via: 1.0 rusresource.ru (squid/3.1.0.17) Location: http://wm.letitbit.net/?a=4 Server: Apache/1.3.42 (Unix) PHP/5.2.11 Content-Type: text/html Client-Date: Tue, 20 Apr 2010 15:16:37 GMT Client-Peer: 78.140.170.226:80 Client-Response-Num: 1 Proxy-Connection: close Set-Cookie: log=lapatanov; expires=Sat, 01-May-2010 16:18:34 GMT; path=/; domain=wm.letitbit.net Set-Cookie: pas=1a44fb0f4a71c836393afcb9a86228a7; expires=Sat, 01-May-2010 16:18:34 GMT; path=/; domain=wm.letitbit.net Set-Cookie: host=letitbit_net; expires=Sat, 01-May-2010 16:18:34 GMT; path=/; domain=wm.letitbit.net Set-Cookie: log=lapatanov; expires=Sat, 01-May-2010 16:18:34 GMT; path=/; domain=.letitbit.net Set-Cookie: pas=1a44fb0f4a71c836393afcb9a86228a7; expires=Sat, 01-May-2010 16:18:34 GMT; path=/; domain=.letitbit.net Set-Cookie: host=letitbit_net; expires=Sat, 01-May-2010 16:18:34 GMT; path=/; domain=.letitbit.net X-Cache: MISS from rusresource.ru X-Powered-By: PHP/5.2.11 HTTP/1.0 302 Moved Temporarily Date: Wed, 21 Apr 2010 16:18:34 GMT Via: 1.0 rusresource.ru (squid/3.1.0.17) Location: http://wm.letitbit.net/?a=4 Server: Apache/1.3.42 (Unix) PHP/5.2.11 Content-Type: text/html Client-Date: Tue, 20 Apr 2010 15:16:38 GMT Client-Peer: 78.140.170.226:80 Client-Response-Num: 1 Proxy-Connection: close Set-Cookie: log=workman320; expires=Sat, 01-May-2010 16:18:34 GMT; path=/; domain=wm.letitbit.net Set-Cookie: pas=528e57a13d01ff6df856f07e2c3b0592; expires=Sat, 01-May-2010 16:18:34 GMT; path=/; domain=wm.letitbit.net Set-Cookie: host=letitbit_net; expires=Sat, 01-May-2010 16:18:34 GMT; path=/; domain=wm.letitbit.net Set-Cookie: log=workman320; expires=Sat, 01-May-2010 16:18:34 GMT; path=/; domain=.letitbit.net Set-Cookie: pas=528e57a13d1ff6df856f07e2c3b0592; expires=Sat, 01-May-2010 16:18:34 GMT; path=/; domain=.letitbit.net Set-Cookie: host=letitbit_net; expires=Sat, 01-May-2010 16:18:34 GMT; path=/; domain=.letitbit.net X-Cache: MISS from rusresource.ru X-Powered-By: PHP/5.2.11


если акк валид перенаправление на http://wm.letitbit.net/?a=4 , если бед то на http://wm.letitbit.net/signin.php?errors=login

подскажите где ошибка

Автор: shamber 22.4.2010, 23:50
GR0Mi, попробуйте посмотреть, что передает браузер, и сравните с тем что передаете вы. Тогда и станет понятно, где проблема

Автор: GR0Mi 22.4.2010, 23:53
именно от передаваемого браузером всегда отталкиваюсь  при подобных авторизациях. передаю все перееные. дело даже в том что оно сохраняет только код. а страницу не получает. получил страницу методом гед. но даные передать не получается

Автор: Pfailed 23.4.2010, 08:41
В чем вообще вопрос?
Цитата(GR0Mi @  22.4.2010,  23:53 Найти цитируемый пост)
дело даже в том что оно сохраняет только код. а страницу не получает.

Что такое код, а что такое страница в вашем понимании?

Автор: GR0Mi 23.4.2010, 12:46
вопрос в том. где в коде ошибка. почему не могу атворизирвоатся. все данные передаю верные

код ето 
my $resp = $ua->post('http://wm.letitbit.net/signin.php',->code;    когда сервер тее возвращает 200 \ 302 и тд
а страница полученая my $resp = $ua->post('http://wm.letitbit.net/signin.php',,])->as_string;  должна выглядеть как обичная веб страница только с верху 
Цитата

HTTP/1.0 302 Moved Temporarily Date: Wed, 21 Apr 2010 16:18:34 GMT Via: 1.0 rusresource.ru (squid/3.1.0.17) Location: http://wm.letitbit.net/signin.php?errors=login Server: Apache/1.3.42 (Unix) PHP/5.2.11 Content-Type: text/html Client-Date: Tue, 20 Apr 2010 15:16:37 GMT Client-Peer: 78.140.170.226:80 Client-Response-Num: 1 Proxy-Connection: close X-Cache: MISS from rusresource.ru X-Powered-By: PHP/5.2.11 HTTP/1.0 302 Moved Temporarily Date: Wed, 21 Apr 2010 16:18:34 GMT Via: 1.0 rusresource.ru (squid/3.1.0.17) Location: http://wm.letitbit.net/?a=4 Server: Apache/1.3.42 (Unix) PHP/5.2.11 Content-Type: text/html Client-Date: Tue, 20 Apr 2010 15:16:37 GMT Client-Peer: 78.140.170.226:80 Client-Response-Num: 1 Proxy-Connection: close Set-Cookie: log=lapatanov; expires=Sat, 01-May-2010 16:18:34 GMT; path=/; domain=wm.letitbit.net Set-

Автор: Pfailed 23.4.2010, 14:00
Еще есть метод content() если нужна страница без хедеров.
Ближе к делу: загляните в perldoc LWP::UserAgent
Там сказано о requests_redirectable,  который по умолчанию равен   ['GET', 'HEAD']
Вы делаете POST, поэтому LWP не редиректится автоматически.

Автор: GR0Mi 23.4.2010, 17:11
Цитата(Pfailed @ 23.4.2010,  14:00)
Еще есть метод content() если нужна страница без хедеров.
Ближе к делу: загляните в perldoc LWP::UserAgent
Там сказано о requests_redirectable,  который по умолчанию равен   ['GET', 'HEAD']
Вы делаете POST, поэтому LWP не редиректится автоматически.

благодарю. в E:\Perl\lib\LWP\UserAgent.pm  в двух местах добавил метод post и все заработало. большое спасибо

Автор: Pfailed 23.4.2010, 17:49
Цитата(GR0Mi @  23.4.2010,  17:11 Найти цитируемый пост)
благодарю. в E:\Perl\lib\LWP\UserAgent.pm  в двух местах добавил метод post и все заработало. большое спасибо


То, что вы сделали категорически неправильно. Зачем менять исходный код модуля, если он предоставляет необходимые интерфейсы?
Еще раз, посмотрите perldoc LWP::UserAgent
Цитата

To change to include 'POST', consider:  

  push @{ $ua->requests_redirectable }, 'POST';


Либо задать requests_redirectable при вызове конструктора.

Автор: GR0Mi 30.4.2010, 09:15
Цитата(Pfailed @ 23.4.2010,  17:49)
Цитата(GR0Mi @  23.4.2010,  17:11 Найти цитируемый пост)
благодарю. в E:\Perl\lib\LWP\UserAgent.pm  в двух местах добавил метод post и все заработало. большое спасибо


То, что вы сделали категорически неправильно. Зачем менять исходный код модуля, если он предоставляет необходимые интерфейсы?
Еще раз, посмотрите perldoc LWP::UserAgent
Цитата

To change to include 'POST', consider:  

  push @{ $ua->requests_redirectable }, 'POST';


Либо задать requests_redirectable при вызове конструктора.

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

Автор: Pfailed 30.4.2010, 17:28
Цитата(GR0Mi @  30.4.2010,  09:15 Найти цитируемый пост)
можно подробней. не очень понял.

Ну куда уж подробней? Я привёл вам цитату из perldoc, о том как это делается в своём предыдущем сообщении. Что непонятно?

Автор: GR0Mi 30.4.2010, 22:24
все равно не могу понять как заставить скрипт работать не меняя исходный код модуля

Автор: Pfailed 1.5.2010, 06:43
Цитата(GR0Mi @  30.4.2010,  22:24 Найти цитируемый пост)
все равно не могу понять как заставить скрипт работать не меняя исходный код модуля


Цитата(Pfailed @  23.4.2010,  17:49 Найти цитируемый пост)
To change to include 'POST', consider: 
 push @{ $ua->requests_redirectable }, 'POST';


Это сделайте в вашем скрипте, а модуль не трожьте.

Автор: GR0Mi 1.5.2010, 12:08
по видимому я тупей чем мог предпологать. где имено етот код вставить в скрипте?

Автор: Pfailed 1.5.2010, 14:41
После создания объекта LWP::UserAgent

Автор: GR0Mi 1.5.2010, 20:25
use LWP::UserAgent;
To change to include 'POST', consider: 
 push @{ $ua->requests_redirectable }, 'POST';
use HTTP::Cookies;

так?

Автор: Pfailed 1.5.2010, 21:12
Нет.
Создание объекта - это вызов конструктора. В LWP это LWP::UserAgent->new
Похоже вы вообще не понимаете, что пишете. Начните с прочтения соответствующей литературы.


Автор: krypt3r 4.5.2010, 07:28
М-да, я фигею с таких "кодеров" =/
Код

use LWP::UserAgent;
my $ua = LWP::UserAgent->new;
push @{ $ua->requests_redirectable }, 'POST';

Автор: shamber 4.5.2010, 09:34
krypt3r, весь труд сломал

Автор: GR0Mi 4.5.2010, 19:27
не работает даный способ. редирект не происходит. 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)