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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Отображение в скрипте 
V
    Опции темы
Grig
Дата 17.7.2006, 16:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Здравствуйте!
я захожу на сайт скриптом:
http://autosunrise.ru/cgi-bin/content.pl
Код

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' => 'ru11196',
        'password' => 'qqqwwweee',
    ],
);
$req = HTTP::Request->new(GET => 'http://auctions.tokidoki.ru/?p=project/auctcompanies');
$req->header('Accept' => 'text/html,image/gif, image/x-xbitmap, image/jpeg,image/pjpeg, image/png');
$res = $ua->request($req);
$p = $res->content;
print $p;


Специально прописываю так:
Код

$req->header('Accept' => 'text/html,image/gif, image/x-xbitmap, image/jpeg,image/pjpeg, image/png');


Но при его запуске, он не отображает рисунки, а они мне позарез нужны!!
Видать сервер их как-то хитро блочит.
Скажите как можно прикинутся, чтобы обойти эту беду?
Еще я много раз читал про то, что народ каким-то образом парсит ответ от сервера, может объясните мне как это сделать?
Заранее большое спасибо!!
  

Это сообщение отредактировал(а) Grig - 17.7.2006, 16:34


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


Опытный
**


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

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



Рисунки отображает браузер, а не скрипт

А вы запросили эти рисунки? В документе который Вы запросили скорее всего ссылки на рисунки.
Вам нужно их выдернуть оттуда и закачать каждую картинку отдельным запросом.

HTML же в первом приближении графику содержать не может.

Accept означает всего лишь что ваш агент умеет работать с рисунками, и при их наличии они будут пересылаться если вы их запросите. К примеру текстовые броузеры типа links lynx и т.д. не имеют такой возможности и в строке accept не содержат перечисления графических типов файлов.

Иногда это указание серверному скрипту, чтобы он генерировал страницу без дизайнерских включений графики, конечно если он это умеет....
 


--------------------
 Чтобы правильно задать вопрос нужно знать больше половины ответа...
Perl Community 
FREESCO in Ukraine 
PM MAIL   Вверх
Grig
Дата 17.7.2006, 17:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Странно и непонятно...
Меняю эту строчку:
Цитата(Grig @  17.7.2006,  16:16 Найти цитируемый пост)
$req = HTTP::Request->new(GET => 'http://auctions.tokidoki.ru/?p=project/auctcompanies');


На эту:
Код

$req = HTTP::Request->new(GET => 'http://auctions.tokidoki.ru/img/embl-small.gif');


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

Вот сравните:
http://autosunrise.ru/cgi-bin/img.pl
и
http://auctions.tokidoki.ru/img/embl-small.gif
 


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


Опытный
**


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

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



Код

hdr> HTTP/1.0 200 OK
hdr> Server: Microsoft-IIS/6.0
hdr> Unrecognized escape \h passed through at D: \USR\Grig\wwwroot\cgi-bin\img.pl line 49.
hdr> X-Powered-By: ASP.NET
hdr> Date: Mon, 17 Jul 2006 16:54:26 GMT
hdr> Connection: close
RequestDone Error = 0
StatusCode = 200

Это ответ сервера

Где у Вас указано что это картинка... скорее всего оно обрабатывается как текст 
И вона еще одна ошибочка в 3 строке

Добавлено @ 20:00 
Да и вообще заголовок сильно неправильный, того чего нужно нет, а чего не нужно так валом smile
Длины сообщения и типа не хватает как минимум... 


--------------------
 Чтобы правильно задать вопрос нужно знать больше половины ответа...
Perl Community 
FREESCO in Ukraine 
PM MAIL   Вверх
nitr
Дата 17.7.2006, 23:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



а ещё картинка бинарный файлик ;)
пример: binmode(FILEHANDLE); 


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


Опытный
**


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

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



Nab, а каким должен быть ответ сервера, чтобы он позволял видеть картинки?

nitr, к сожалению, не все так просто. Картинки которые мне нужны не имеют статичного адреса.
Их, блин, тоже как-то зашифровывают ((

Вот например, мне нужны картинки с этого адреса:


Которые я пытаюсь получить таким образом:
Код

#!/usr/bin/perl -w
use LWP::ConnCache;
use LWP::UserAgent;
use LWP::Simple;
use HTML::LinkExtor;
use URI::URL;
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' => 'ru11196',
        'password' => 'qqqwwweee',
    ],
         'User-Agent' => 'Mozilla/4.0 (compatible; MSIE 5.12; Mac_PowerPC)',
         'Accept' => 'image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, image/png, */*',
         'Accept-Charset' => 'iso-8859-1,*,utf-8',
         'Accept-Language' => 'en-US',
);
$req = HTTP::Request->new(GET => 'http://auctions.tokidoki.ru/?p=project/auctlot&id=2746220');
$req->header('Accept' => 'text/html,image/gif, image/x-xbitmap, image/jpeg,image/pjpeg, image/png');
$res = $ua->request($req);
$p = $res->content;
print $p;


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


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


Опытный
**


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

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



А почему бы Вам не проанализировать заголовок который отдает сервер, с которого Вы берете картинку.
Ведь там вполне корректные заголовки, вот можно их запросто подставить в свой скрипт.

А по поводу binmode, то что мешеает выходной поток перевести в бинарный ежим?

Код

$req = HTTP::Request->new(GET => 'http://auctions.tokidoki.ru/?p=project/auctlot&id=2746220');    
$req->header('Accept' => 'text/html,image/gif, image/x-xbitmap, image/jpeg,image/pjpeg, image/png');    
$res = $ua->request($req);    
$p = $res->content;    
binmode(STDOUT);
print $p;


Добавлено @ 13:19 
Вот корректный заголовок с вашего сервера:
Код

md> GET /img/embl-small.gif HTTP/1.0
cmd> Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*
cmd> Referer: http://localhost/
cmd> User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows 98; DigExt)
cmd> Host: auctions.tokidoki.ru
cmd> Authorization: Basic YWRtaW46a2FybWVu
cmd> Cookie: CGISESSID=b0a0dd1e39f9ff848eef1915383ee19d
cmd> 
hdr> HTTP/1.0 200 OK
hdr> Date: Mon, 17 Jul 2006 16:53:57 GMT
hdr> Server: Apache/2.0.46 (Red Hat)
hdr> Last-Modified: Sat, 18 Mar 2006 06:48:41 GMT
hdr> ETag: "237a059-7f6-50df2440"
hdr> Accept-Ranges: bytes
hdr> Content-Length: 2038
hdr> Content-Type: image/gif
hdr> Connection: close
RequestDone Error = 0
StatusCode = 200


Добавлено @ 13:20 
там две части
та что cmd> это мой запрос

Вас интересует только hdr> 


--------------------
 Чтобы правильно задать вопрос нужно знать больше половины ответа...
Perl Community 
FREESCO in Ukraine 
PM MAIL   Вверх
Grig
Дата 23.7.2006, 13:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Возвращает с помощью такого скрипта:
Код

$ua = LWP::UserAgent->new;
$req = HTTP::Request->new (HEAD => 'http://auctions.tokidoki.ru/?p=project/auctlot&id=2746220');
$res = $ua->request($req);
$responce = $res->as_string;
print $responce;


вот это:
Цитата

HTTP/1.1 200 OK 
Cache-Control: post-check=0, pre-check=0 
Connection: close 
Date: Sun, 23 Jul 2006 10:54:45 GMT 
Pragma: no-cache 
Accept-Ranges: bytes 
Server: Apache/2.0.46 (Red Hat) 
Content-Type: text/html 
Expires: Mon, 26 Jul 1997 05:00:00 GMT 
Last-Modified: Sun, 23 Jul 2006 10:54:45 GMT 
Client-Date: Sun, 23 Jul 2006 10:54:51 GMT 
Client-Peer: 84.252.156.254:80 
Client-Response-Num: 1 
X-Powered-By: PHP/4.3.11 


Каким образом можно добавить в этот заголовок нужные записи и убрать ненужные?
Ссылка на многострадальческий скрипт:
http://autosunrise.ru/cgi-bin/content.pl 


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


Опытный
**


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

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



блин, ниче не понял  smile 

Это ссылка на страницу, а не на картинку....
и заголовок вполне корректный.

что нужно то? 


--------------------
 Чтобы правильно задать вопрос нужно знать больше половины ответа...
Perl Community 
FREESCO in Ukraine 
PM MAIL   Вверх
Grig
Дата 23.7.2006, 14:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



это ссылка не на страницу, а на скрипт который выкачивает эту страницу.
Вот, например, текст скрипта
Надо, чтобы скрипт загружал мне эту страничку с картинками..
Конечно в конечном итоге, мне надо, чтобы скрипт сохранял изображения, но пока хотя бы так..
 


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


Опытный
**


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

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



Блин, прикалуетесь?

Объясняю на пальцах:

Броузер когда его просят открыть страницу, сначала ее закачивает одним запросом...
Потом проанализировав страничку, видит что на ней есть тег IMG берет его src и запрашивает эту картинку, еще одним отдельным запросом. И только потом ее отображает.
Прочитайте я писал про текстовые броузеры раньше, которые не работая с графикой, не запрашивают картинок.

В одном документе html НЕЛЬЗЯ сразу отдать и картинку и страничку, у них разные URL, да и все разное, в том числе и режим передачи. HTTP протокол так устроен что отдает один документ за раз.

Чтобы у Вас на странице была картинка, блин не качайте ее, а просто возьмите ее урл и вставьте в результирующую страничку как <img src="URL">.

Это самый простой вариант:
Если Вы хотите контролировать полностью весь контент, то там должна быть ссылка не на оригинальную картинку а на Ваш скрипт который только и будет делать что вытаскивать реальные картинки и отдавать их.

А вообще, почитайте немного о HTTP, HTML,  чего то Вы таки не доучили  smile  

Это сообщение отредактировал(а) Nab - 23.7.2006, 14:40


--------------------
 Чтобы правильно задать вопрос нужно знать больше половины ответа...
Perl Community 
FREESCO in Ukraine 
PM MAIL   Вверх
Grig
Дата 23.7.2006, 14:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



мда, спасибо большое!
Цитата(Nab @  23.7.2006,  14:29 Найти цитируемый пост)
В одном документе html НЕЛЬЗЯ сразу отдать и картинку и страничку, у них разные URL, да и все разное, в том числе и режим передачи. HTTP протокол так устроен что отдает один документ за раз.

Какого же тогда лешего, все остальные страницы с изображениями в скрипте отображаются нормально, а на этом сайте - нет.
Ладно, вот например берем на которую ссылается одна из картинок:
http://auctions.tokidoki.ru/pic.php?lot_id...20&pic_id=1
Может быть я правда чего-то не понимаю, но только загрузить ее все равно не могу.
В исходном тексте отображается всякая фигня, адрес рисунка не посмотреть ((. Как отобразить его все-таки?!?!
Тут висящий в петле и посиневший смайлик
 


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


Опытный
**


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

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



Цитата(Grig @ 23.7.2006,  14:51)
мда, спасибо большое!
Какого же тогда лешего, все остальные страницы с изображениями в скрипте отображаются нормально, а на этом сайте - нет.

Потому как скорее всего на остальных страницах абсолютные ссылки на картинки, а на этой относительные, что в принципе более правильно.
Цитата

Ладно, вот например берем на которую ссылается одна из картинок:
http://auctions.tokidoki.ru/pic.php?lot_id...20&pic_id=1
Может быть я правда чего-то не понимаю, но только загрузить ее все равно не могу.

В исходном тексте отображается всякая фигня, адрес рисунка не посмотреть ((. Как отобразить его все-таки?!?!
Тут висящий в петле и посиневший смайлик


Скорее всего Вам прийдется делать преобразование линков в документе, либо задать базовый урл в начале HTML для всех относительных.Для этого смотрите тег <base>
Ну или для преобразования, надо распарситьполученный HTML и в тех местах где есть такие неполные ссылки, дополнить их полным именем с http:// ну и все остальное. 
Если картинки тоже только через пароль отдаются, то надо написать свой скрипт которые таким же макаром забирали бы картинки. А в самом HTML опять же заменить все эти короткие линки, на такие же но к своему скрипту, который и будет выдергивать картинки с реальных адресов.

Вообще то что Вы пишите называется CGI-proxy, и поверьте это очень не тривиальная вещь smile
в особенности если используется JavaScript, а у Вас вообще тяжелый вариант, я там еще Ajax засек smile
Как по мне то это монстр получиться smile И написать такое.... блин задача не на один месяц smile

 


--------------------
 Чтобы правильно задать вопрос нужно знать больше половины ответа...
Perl Community 
FREESCO in Ukraine 
PM MAIL   Вверх
Grig
Дата 23.7.2006, 15:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Nab, да я уже понял, что задачка не из легких ((
и к тому же это у меня первая работа на Перл, но по-моему дело не в этом, а в том, что там действительно защит стоит дофигища.
Тебе спасибо большое за желание помочь!!

Добавлено @ 15:23 
Да вот еще:
хорошо бы если б рисунки содержали ссылки на самих себя, а то ведь они ссылаются на скрипт, который генерит отображение рисунка, а исходный текст странички посмотреть не представляется возможным...
задачка.  smile  smile  


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


Опытный
**


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

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



Так а что Вам мешает подставлять эти же ссылки, но правильным образом измененные...?  

Это сообщение отредактировал(а) Nab - 23.7.2006, 15:28


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


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

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


 




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


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

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