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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> lwp редирект не передаются куки 
:(
    Опции темы
burakov
Дата 11.4.2012, 10:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



ДОбрый день.
парсю яндекс маркет.


регион там куками устанавливается. (что я и делаю) 

Код

'Cookie' => 'yandex_gid='.$region_id.'; path="/"; domain=.yandex.ru; path_spec; version=0',


и все бы хорошо, НО.

пришлось 
использовать УРЛЫ вида

Код

http://market.yandex.ru/search.xml?text=Kamilla%20600%20white%20%281%20%EC%EE%F2%EE%F0%29&cvredirect=1


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

так вот при этих редиректах
яндекс ставит свои куки, убирая из этих кук мой регион.
и по ip location выбрасывает мне данные по Москве.


ТО есть другими словами -- при редиректе LWP не сохраняет куки какие есть....
Вопросы:

1. Как сделать так, чтобы эти куки передавались при редиректе (чтобы регион не исчезал)
2. Или как "руками" установить куки редиректу (ведь и я до этого запроса дотянуться не могу? а куки куда то слизываются)...

спасибо.




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


Опытный
**


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

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



Предлагаю задать время жизни этой инародной cookie


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


Опытный
**


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

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



не понимаю.

вот смотрите куки я устанавливаю в каждом GET запросе.
Код

    my $req = HTTP::Request -> new (
        $method => $url,
        [
            'User-Agent' => $useragent,
            'Accept' => 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
            'Accept-Language' => 'ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3',
            'Accept-Charset' => 'windows-1251,utf-8;q=0.7,*;q=0.7',
            'Keep-Alive' => '115',
            'Cookie' => 'yandex_gid='.$region_id.'; path="/"; domain=.yandex.ru; path_spec; version=0',
        ]
    );




Код

#1. нормальный урл
http://market.yandex.ru/search.xml?text=Kamilla%20600%20white%20%281%20%EC%EE%F2%EE%F0%29&cvredirect=0

#2. урл с редиректом
http://market.yandex.ru/search.xml?text=Kamilla%20600%20white%20%281%20%EC%EE%F2%EE%F0%29&cvredirect=1



мне нужны ответы на запросы и по 1 урлу и по 2 му.

1 ый урл говорит яндексу, что редирект запрещен.
устанавливается кука с регионом и все "ок".


2ой урл говорит, что редирект разрешен, и яндекс послушно делает редирект (что вообщем то мне и надо)
но одновременно он перетирает мои куки (где я устанавливаю регион). (устанавливаю я их при каждом запросе "вручную".) 

и выдает в ответе "не тот" регион определяю мою "региональность" по IP.

Вопрос.
как мне установить куку с регионом при редиректе? (или правильнее говорить для редиректа?)...

Спасибо.




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


Опытный
**


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

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



Например раздел "Handlers" в документации: request_prepare


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


Опытный
**


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

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



Спасибо, за ответы.
решил вопрос таким образом.

у респонса проверю -> base ()

если он не такой же как первоначальный УРЛ, значит был редирект.
тогда 
$url = $response -> base ();

ставлю ему куки нужные и запрашиваю заново.

если кто то как то по другому сумел (делал), большая просьба отпишитесь в теме (с примером кода желательно).. очень хочется досконально с вопросом разобраться.

вот кусочек кода .. кому нужно.
Код

my $baseurl = $response -> base (); 
            if ($baseurl ne $url) {
                
                my $url = $baseurl;
                my $req = HTTP::Request -> new (
                    $method => $url,
                    [
                        'User-Agent' => $useragent,
                        'Accept' => 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
                        'Accept-Language' => 'ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3',
                        'Accept-Charset' => 'windows-1251,utf-8;q=0.7,*;q=0.7',
                        'Keep-Alive' => '115',
                        'Cookie' => 'yandex_gid='.$region_id.'; path="/"; domain=.yandex.ru; path_spec; version=0',
                    ]
                );    
}


еще раз всем спасибо.



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


Опытный
**


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

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



Способов масса

1
Код

$ua->default_header(Cookie => 'name=val');


2
Код

$ua->add_handler(request_prepare => sub {
    my $req = shift;
    my $req_cookies = $req->header('Cookie');
    $req->header(Cookie => $req_cookies ? "$req_cookies; name=val" : "name=val");
});


3
Код

$ua->cookie_jar(HTTP::Cookies->new->set_cookie(undef, 'name', 'val', '/', 'localhost.local', undef, 0, 0, 300**3, 0));



--------------------
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.0451 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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