Модераторы: korob2001, ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> автоматически заполнить форму 
:(
    Опции темы
Grig
Дата 18.6.2006, 07:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 809
Регистрация: 29.4.2005
Где: Иркутск

Репутация: нет
Всего: 16



Здравствуйте!
Как можно автоматически заполнить форму например на mail.ru, сымитировать нажатие кнопки вход, а полученную страничку сохранить в какой-нибудь переменной? 


--------------------
        
PM MAIL ICQ   Вверх
aksined
Дата 18.6.2006, 15:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 58
Регистрация: 26.12.2005

Репутация: нет
Всего: 1



Заполнить форму и сымитировать нажатие кноки - это означает просто отправку HTTP-запроса некоторому сценарию на сервере, которую можно произвести с помощью модуля LWP::UserAgent.

Если ты посмотришь html-страничку, которую хочешь заполнять, то увидишь теги <input>, которые обозначают поля ввода. Один из них будет обозначать кнопку отправки данных на сервер, из ее параметров ты сможешь узнать адрес сценария, который использовать для задания параметров объекта-запроса.

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

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

Вот так... 
PM MAIL   Вверх
sharq
Дата 18.6.2006, 23:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Perl Liker
**


Профиль
Группа: Участник
Сообщений: 841
Регистрация: 13.12.2004
Где: Ростов-на-Дону

Репутация: 2
Всего: 28



Grig, 
Цитата(Grig @  18.6.2006,  08:43 Найти цитируемый пост)
например на mail.ru

Отправить запрос обработчику, действительно, не сложно, но на mail.ru на странице регистрации стоит защита от автомата - необходимо ввести код, изображенный на картинке. 
Вот это есть проблема!
Алгоритмы распознавания есть, но они не являются простыми  smile 

 smile 
 


--------------------
[color=gray]There's More Than One Way To Do It[/color]
PM MAIL WWW ICQ Skype   Вверх
Grig
Дата 19.6.2006, 18:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 809
Регистрация: 29.4.2005
Где: Иркутск

Репутация: нет
Всего: 16



Не, почтовый сервер я к примеру ляпнул...
Cмотрите, что пишут:
Код

<form action="cookie.asp" method="post" name="memChk">
<input type="text" name="user_ID">
<input type="password" name="passwd">
<input type="submit" value="Go" id=submit1 name=submit1 >
<input type="reset" value="Retry" id=reset1 name=reset1>        
</form>

Вот этот cookie.asp как я понял, прописывает что-то в куках, и отправляет меня на нужную мне страничку. Хитро придумано..
Не подскажите, как мне для начала отловить то что он хочет прописать  в куках?

Для примера:
Имя пользователя : qqq
Пароль:www  

Это сообщение отредактировал(а) Grig - 19.6.2006, 18:05


--------------------
        
PM MAIL ICQ   Вверх
djkostya
Дата 19.6.2006, 19:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 71
Регистрация: 16.5.2006
Где: Москва

Репутация: 1
Всего: 2



Ну если просто нажать на кнопку то
http://search.cpan.org/~mramberg/WWW-Mecha...echanize/CGI.pm

Сам не пользовался но говорят помогает !!! 
PM MAIL WWW ICQ   Вверх
sharq
Дата 19.6.2006, 22:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Perl Liker
**


Профиль
Группа: Участник
Сообщений: 841
Регистрация: 13.12.2004
Где: Ростов-на-Дону

Репутация: 2
Всего: 28



Grig, perldoc LWP::UserAgent и ижи с ним.

 smile 

 


--------------------
[color=gray]There's More Than One Way To Do It[/color]
PM MAIL WWW ICQ Skype   Вверх
Grig
Дата 30.6.2006, 08:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 809
Регистрация: 29.4.2005
Где: Иркутск

Репутация: нет
Всего: 16



млин, запарился..
Товарищи, помогите!!
Заказ горит..
Пытаюсь залезть с помощью LWP::UserAgent на сайт http://tokidoki.ru/

форма логина-пароля отсылает на 

Но при вводе пароля в ссылку еще добавляется несколько параметров:

SU_Session и PHPSESSID
Пытаюсь отследить куки которые он мне записывает, но у меня ничего пока не получается (((((
Скажите, в чем ошибка?
Код

#!/usr/bin/perl

use LWP::UserAgent;
use HTTP::Cookies;
$ua = new LWP::UserAgent;
$ua->agent('Mozilla/4.78 [en] (Win98; U)');
$ua = cookie_jar(HTTP::Cookies->new(file=>"lwpcookies.txt", autosave=>1));

my $req = HTTP::Request-> new(POST => 'http://auctions.tokidoki.ru/?p=project');
$req->content_type('application/x-www-form-urlencoded');
$req->content('usr_name=aaa&password=sss');
my $res = $ua->request($req);

if ($res->is_success) {
print $res->content;
} else {
print " облом \n";
}


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

Да еще: вот какую ошибку пишет мне браузер:
Цитата

CGI Error
The specified CGI application misbehaved by not returning a complete set of HTTP headers.


Помогите, пожалуйста, разобратся!
 


--------------------
        
PM MAIL ICQ   Вверх
Grig
Дата 30.6.2006, 09:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 809
Регистрация: 29.4.2005
Где: Иркутск

Репутация: нет
Всего: 16



Пробовал и так:
Код

#!/usr/bin/perl
use LWP::UserAgent;
use HTTP::Cookies;
my $Cookie = HTTP::Cookies->new();    
my $ua = LWP::UserAgent->new(agent => 'Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)');    
$ua->cookie_jar($Cookie);

my $req = HTTP::Request-> new(POST => 'http://auctions.tokidoki.ru/?p=project');
$req->content_type('application/x-www-form-urlencoded');
$req->content('usr_name=aaa&password=sss');
my $res = $ua->request($req);

if ($res->is_success) {
print $res->content;
} else {
print " облом \n";
}


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

Это сообщение отредактировал(а) Grig - 30.6.2006, 09:56


--------------------
        
PM MAIL ICQ   Вверх
Grig
Дата 30.6.2006, 11:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 809
Регистрация: 29.4.2005
Где: Иркутск

Репутация: нет
Всего: 16



Почитавши статейку : http://www.rest.ee/journals/xakep/081/070/1.php
Добрел до такого кода:

Код

#!/usr/bin/perl
use LWP::UserAgent;
use HTTP::Cookies;
my $ua = LWP::UserAgent->new(agent => 'Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)');    
my $req = HTTP::Request-> new(POST => 'http://auctions.tokidoki.ru/?p=project');
$req->content_type('application/x-www-form-urlencoded');
$req->content('usr_name=aaa&password=sss');
my $res = $ua->request($req);    
my $Cookie = HTTP::Cookies->new();    
$ua->cookie_jar($Cookie);
$Cookie->extract_cookies($res);
$cookie->add_cookie_header($req);
$response=$opera->request($req);
$resp_cont=$response->content;
print $resp_cont;


Но все равно выдает ошибку.
Чую, что это из-за какой-нибудь мелочи..  

Это сообщение отредактировал(а) Grig - 30.6.2006, 11:13


--------------------
        
PM MAIL ICQ   Вверх
nitr
Дата 1.7.2006, 23:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2543
Регистрация: 10.2.2006
Где: Россия :)

Репутация: 12
Всего: 84



Вот держи smile работает на ура ;)
Код

#!perl
use LWP::ConnCache;
use LWP::UserAgent;

my $ua = LWP::UserAgent->new;
$ua->conn_cache(LWP::ConnCache->new);
$ua->cookie_jar({file => "./cookies.txt", autosave => 1,});
my $response = $ua->post('http://auctions.tokidoki.ru/index.php?p=project',
    [
        'username' => 'login',
        'password' => 'pass',
    ],
);
print $response->content;

проще твоих скриптов выше ;)

Добавлено @ 23:33 
Ответ:
Код

...менюшка...
Уважаемый господин(жа) Иванов!
Вы являетесь зарегистрированным пользователем и можете пользоваться следующими возможностями системы: 
    Скачивать документы.
    Отправлять сообщения менеджеру компании.
    Изменять свои данные.
    Просматривать аукционы.
 


--------------------
PM   Вверх
Grig
Дата 4.7.2006, 19:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 809
Регистрация: 29.4.2005
Где: Иркутск

Репутация: нет
Всего: 16



nitr, агромадное спасибо!!!
Проблема решена. 


--------------------
        
PM MAIL ICQ   Вверх
Grig
Дата 4.7.2006, 21:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 809
Регистрация: 29.4.2005
Где: Иркутск

Репутация: нет
Всего: 16



Облом, блин.
Только вчера этот скрипт:
Код

my $ua = LWP::UserAgent->new;
$ua->conn_cache(LWP::ConnCache->new);
$ua->cookie_jar({file => "./cookies.txt", autosave => 1,});
my $response = $ua->post('http://auctions.tokidoki.ru/index.php?p=project',
    [
        'usr_name' => 'aaa',
        'password' => 'sss',
    ],
);
print $response->content;

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


--------------------
        
PM MAIL ICQ   Вверх
nitr
Дата 5.7.2006, 00:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2543
Регистрация: 10.2.2006
Где: Россия :)

Репутация: 12
Всего: 84



измени строку 6 на  'username' => 'имя',

Добавлено @ 00:51 
ты опечатался ;) даж в моём коде выше так...
не id даёт имя, а name="" (думаю знаешь), а вот по w3c надо чтоб совпадали... думаю верстальщикам пофигу ;) 


--------------------
PM   Вверх
Grig
Дата 5.7.2006, 02:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 809
Регистрация: 29.4.2005
Где: Иркутск

Репутация: нет
Всего: 16



тьфу ты блин!!!
Я видать сегодня ночью переусердствовал, мелочей уже не замечаю.
Еще раз спасибо! 


--------------------
        
PM MAIL ICQ   Вверх
Grig
Дата 10.7.2006, 18:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 809
Регистрация: 29.4.2005
Где: Иркутск

Репутация: нет
Всего: 16



Народ, еще один небольшой вопросик в тему: как там можно отобразить рисунки?
Сервак походу как-то блокирует css и изображения, никто не знает как это обойти? 


--------------------
        
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl: CGI программирование"
korob2001
sharq
  • В этом разделе обсуждаются вопросы относящиеся только к CGI программированию
  • Если ваш вопрос не относится к системному или CGI программированию, задавайте его в общем разделе
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", качать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: разработка для Web | Следующая тема »


 




[ Время генерации скрипта: 0.1090 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.