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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> default_headers как распечатать, как посмотреть сразу все 
:(
    Опции темы
burakov
Дата 25.6.2010, 14:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Добрый день,

подскажите как посмотреть сразу все 
default_header (если такое возможно)

Код

use strict; 
use warnings;
use LWP::UserAgent;

my $ua = LWP::UserAgent->new;
my $url = 'http://www.iho.ru/faq/manual/perl.html';
my $response = $ua->get($url);

foreach ??



 что то запутался...

P.S.
Вот сейчас еще покопался 
оказывается, что

$ua -> agent;
не тоже самое значение
что $ua -> default_header ('User-Agent', 'bla-bla-bla'); 

тогда еще как весь $ua  в таком случае просмотреть???


smile еще раз  редактирую...

И вообще непонятно поможет ли мне подмена запроса для обмана javascript, который защищает PDF файлы на сервере.
ведь к себе я их получаю, через get ($url, $file), 
а прямого $url на файл нет... 

Стянется файл ко мне после правильной подмены заголовков?


Это сообщение отредактировал(а) burakov - 25.6.2010, 14:34


--------------------
Нотный архив http://libnote.ru скачать ноты бесплатно
PM MAIL   Вверх
ginnie
Дата 25.6.2010, 14:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Комодератор
Сообщений: 1287
Регистрация: 6.1.2008
Где: Москва

Репутация: 4
Всего: 49



burakov, метод $ua->default_headers() возвращает объект класса HTTP::Headers. Если Вам нужно просто посмотреть поля заголовка, то в этом классе определен метод as_string(), который возвращает отформатированный заголовок в виде строки.
Судя по описанию модуля, если Вы явно не задавали $ua->agent(), то для поля User-Agent заголовка используется значение $ua->_agent().

Добавлено через 4 минуты и 33 секунды
Цитата(burakov @  25.6.2010,  14:02 Найти цитируемый пост)
Стянется файл ко мне после правильной подмены заголовков?

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

Это сообщение отредактировал(а) ginnie - 25.6.2010, 14:43


--------------------
Написать код, понятный компьютеру, может каждый, но только хорошие программисты пишут код, понятный людям. (Мартин Фаулер. Рефакторинг)
PM MAIL Skype Jabber   Вверх
burakov
Дата 25.6.2010, 15:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Описываю задачу smile


Есть ссылка вида
http://classon.ru/fetch_download.php?mfile...41001299c1ffbfa
при нажатии на которую скачивается файл, кроме всего прочего все это облачено в некую джава конструкцию, которая позволяет скачивать файлы, только при нажатии на ссылку мышкой...

Товарищи с этого форума же...
посоветовали мне отследить при помощи Tamper Data данные, которые реально пересылаются на сервер в момент нажатия...

я это сделал и выяснил, что 
джава (или что то другое) добавляет заголовок Referer.

При помощи этого же Tamper Data я руками подменил заголовок 
(скопировал ссылку в адресную строку броузера, затем Tamper Data запрос перехватил и я 
добавил referer)  и запрос на скачивание файла выдался...

Я подумал, раз выдался запрос, то возможно все сграбить в автоматическом режиме (в этом цель smile)...

Копался копался с этим UserAgent полная картина в мозгу так у меня и не прояснилась smile
еще где то прочитал, что UserAgent полностью позволяет моделировать собой броузер...

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

Вот такая вот задача, 
достать файлы.




--------------------
Нотный архив http://libnote.ru скачать ноты бесплатно
PM MAIL   Вверх
ginnie
Дата 25.6.2010, 15:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Комодератор
Сообщений: 1287
Регистрация: 6.1.2008
Где: Москва

Репутация: 4
Всего: 49



burakov, не волнуйтесь, задача обычная, ничего особо сложного в ней нет. Я вижу два этапа: 1. получить страницу со ссылкой 2. сформировать запрос и получить файл.
Насколько я понял, Вы сейчас как раз на втором шаге. Так как у Вас есть рабочий запрос, то Вам нужно лишь сделать его копию при помощи LWP::UserAgent. Для проверки правильного формирования запроса нужно использовать 
Код

$ua->add_handler( request_send => sub { my($request, $ua, $h) = @_; warn $request->as_string(); } );


Если возникнут сложности, пишите в чем затык, постараюсь помочь!


--------------------
Написать код, понятный компьютеру, может каждый, но только хорошие программисты пишут код, понятный людям. (Мартин Фаулер. Рефакторинг)
PM MAIL Skype Jabber   Вверх
burakov
Дата 1.7.2010, 16:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Ура, получилось, хотя и не совсем так как посоветовали (просто у меня даже UserAgent без add_handler - со cpan.org поставить не смог по-новее - выдало какие то ошибки).
Но файлы стягиваются...

вообщем для тех кто интересуется но не знает, все таки напишу как это заработало у меня - может кому понадобится - попроще smile

делал так.
1. Узнал при при помощи firefox Tamper Data заголовок, который нужно передать серверу.
2. 
Код

LWP::UserAgent;
use Data::Dumper 'Dumper';

my $ua = LWP::UserAgent->new ();

#сформировал заголовки
$ua -> agent ('User-Agent=Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.1.1) Gecko/20090715 Firefox/3.5.1');
$ua->default_header ('User-Agent' => 'User-Agent=Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.1.1) Gecko/20090715 Firefox/3.5.1'); 
$ua->default_header ('Accept' => 'Accept=text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8'); 
$ua->default_header ('Accept-Language' => 'ru,en-us;q=0.7,en;q=0.3'); 
$ua->default_header ('Accept-Encoding' => 'gzip,deflate');    
$ua->default_header ('Accept-Charset' => 'windows-1251,utf-8;q=0.7,*;q=0.7'); 

#посмотрел все это 
print Dumper ($ua);

#получил файл
$ua -> mirror ($file_url, '1.pdf') ;



Вопрос а как просмотреть 
$ua->default_header при помощи foreach ? (т.е. все сразу)
(не применяя Dumper?)




--------------------
Нотный архив http://libnote.ru скачать ноты бесплатно
PM MAIL   Вверх
ginnie
Дата 1.7.2010, 16:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Комодератор
Сообщений: 1287
Регистрация: 6.1.2008
Где: Москва

Репутация: 4
Всего: 49



Цитата(burakov @  1.7.2010,  16:11 Найти цитируемый пост)
Вопрос а как просмотреть $ua->default_header при помощи foreach ? (т.е. все сразу)(не применяя Dumper?)

А $ua->default_headers()->as_string() не работает?


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


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

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


 




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


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

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