The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"perl авторизация на сайте"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [Проследить за развитием треда]

"perl авторизация на сайте"  
Сообщение от globus email(ok) on 22-Июн-06, 09:14 
Привет все.
есть задача, авторизоваться на ВЕБ сервере и забрать контент.
для этого взял модуль LWP::UserAgent. но как авторизоваться через него не понял ...

делаю так

use LWP::UserAgent;

$ua = LWP::UserAgent->new;

$ua -> credentials('http://srv-lo/names.nsf?login', ' ','user','1234567');
my $resp= $ua->get('http://srv-lo/names.nsf/internetaddr?ReadViewEntries');
print $resp->content;

но чего то ничего не выходит ...

Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

 Оглавление

Сообщения по теме [Сортировка по времени, UBB]


1. "perl авторизация на сайте"  
Сообщение от ACCA (ok) on 22-Июн-06, 10:03 
>Привет все.
>есть задача, авторизоваться на ВЕБ сервере и забрать контент.
>для этого взял модуль LWP::UserAgent. но как авторизоваться через него не понял

Смотря чего от тебя сайт хочет.

Для basic authentication сделай URL вида http://user:password@host:port/..., то же самое ты делаешь с помощью credentials.

Если авторизация через форму, посмотри что за метод в форме - GET или POST.

Для GET сделай URL вида http://host:port/dir/script?fieldname1=LOGIN&fieldname2=PASSWORD...
Для POST придётся сделать объект типа HTTP::Request и отдать его через $ua->request().

Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

2. "perl авторизация на сайте"  
Сообщение от globus email(ok) on 22-Июн-06, 10:41 
>>Привет все.
>>есть задача, авторизоваться на ВЕБ сервере и забрать контент.
>>для этого взял модуль LWP::UserAgent. но как авторизоваться через него не понял
>
>Смотря чего от тебя сайт хочет.
>
>Для basic authentication сделай URL вида http://user:password@host:port/..., то же самое ты делаешь
>с помощью credentials.
>
>Если авторизация через форму, посмотри что за метод в форме - GET
>или POST.
да авторизация через форму ...

>
>Для GET сделай URL вида http://host:port/dir/script?fieldname1=LOGIN&fieldname2=PASSWORD...
>Для POST придётся сделать объект типа HTTP::Request и отдать его через $ua->request().
я вроде снифиром смотрел ... похоже на POST. Как точно определить ?
уважаемый, а где можно прочитать об этом ?

PS сниффер вот чего показывает

HTTP Command:  POST
URI:    /names.nsf?Login
HTTP Version:    HTTP/1.1 <CR> <LF> ..
Accept:   image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/msword, application/vnd.ms-powerpoint, */* <CR> <LF> ..
Referer:   http://srv-lo/names.nsf/internetaddr?login <CR> <LF> ..
Cookie:   PortalReplicaID=C6257022001619AE; PPUNID=12C3966382BEC755C6257057001B59BE; LastUser=Admin Admin <CR> <LF> <CR> <LF> ....
Line  1 :  %%ModDate=3C6BE4AC3C6BC8BC&Username=user&Password=1234567&RedirectTo=/ <CR> <LF> .. 834

Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

3. "perl авторизация на сайте"  
Сообщение от rWizard email(ok) on 22-Июн-06, 12:43 
открваеш исходник HTML страницы с авторизацией, ищем
<from method="post" (или get) action="/patch/to/script" >
<input ..
<input ..
<input ..
</form>
Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

4. "perl авторизация на сайте"  
Сообщение от globus email(ok) on 22-Июн-06, 12:47 
да, именно так и сделал ...
сейчас выясняется, что сайт еще и куку отдает рользователю ... без куки авторизация не пройдем .... и мой скрипт преобразовался вот так:
use strict;
use warnings;
use LWP::UserAgent;
use HTTP::Request::Common;
use HTTP::Cookies;
use LWP;
my $ua = LWP::UserAgent->new;
my $cookie_c = HTTP::Cookies -> new (file => 'lwp_cookies.dat',autosave => 1,);
$ua ->cookie_jar($cookie_c);

my ($url,$response);
my ($login, $pass) = "user,1234567";

$url = 'http://srv-lo/names.nsf?login';

$response=$ua->request(POST $url,
        [username => $login,
         password => $pass,
        ]);
print $response->as_string;


но чего то не шибко движеться дело ... стал появляться файл под куку, но пустой ...

Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

5. "perl авторизация на сайте"  
Сообщение от globus email(ok) on 22-Июн-06, 13:21 
все ... победил ! пароль и пользователь передовались не правильно ... + куки нужны были !
Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

6. "perl авторизация на сайте"  
Сообщение от ACCA (ok) on 23-Июн-06, 07:57 
>my ($login, $pass) = "user,1234567";

my ($login, $pass) = 'user','1234567';

>$response=$ua->request(POST $url,
>        [username => $login,
>         password => $pass,
>        ]);


$response=$ua->request(POST $url,
        {username => $login,
         password => $pass,
        });

[] в принципе тоже можно, если POST внутри себя разворачивает [] в @{}, а потом в %{}, но это лишнее преобразование. Да и просто запутывает при чтении.

Читать нужно описания HTML и HTTP, документации везде навалом.

Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ] [Рекомендовать для помещения в FAQ]




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2025 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру