2016-10-14 1 views
0

Я постараюсь предоставить как можно больше деталей.Создайте сеанс с необходимыми куки-файлами, используя Perl

Использование Perl, я пытаюсь загрузить список воздействия факторов всех журналов для JCR (Journal Citation Reports) из Интернета знаний (WoS) (URL: http://admin-apps.webofknowledge.com/JCR/JCR?RQ=SELECT_ALL&cursor=1). Следует отметить, что ссылка доступна только с использованием IP-адресов большинства академических учреждений, таких как мои или от пользователей.

Всякий раз, когда я захожу по ссылке (используя браузер) и когда-то прошло, сеанс истек, поэтому мне нужно нажать на ссылку (http://admin-router.webofknowledge.com/?DestApp=JCR), чтобы создать новую сессию. Используя мои рудиментарные знания Firebug, я обнаружил, что когда я аутентифицирован, я получаю cookie с именем jcrsid со случайным строковым значением.

Мой вопрос заключается в следующем: Использование модуля LWP Perl в, какие шаги следует предпринять для того, чтобы установить сеанс и загрузки веб-страниц, которые мне нужны. (Если я использую LWP для загрузки страницы, я загружаю точно ту же страницу, которая появляется, когда меня просят установить новый сеанс с помощью браузера).

ответ

1

Необходимо, чтобы set a cookie_jar on your LWP::UserAgent объект. LWP :: UA будет хранить все файлы cookie, с которыми он сталкивается, в объекте HTTP::Cookies и обрабатывать их для вас. Они будут отправлены с каждым запросом.

Вы можете использовать пустую хеш-ссылку {} для хранения вашего файла cookie в памяти. Нет необходимости использовать файл для такого рода работ.

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

my $ua = LWP::UserAgent->new(
    cookie_jar => {}, 
); 

Всё. Тогда вы должны указать get ссылку, в которой вы сначала найдете файл cookie для входа.

my $res_login = $ua->get('http://admin-router.webofknowledge.com/?DestApp=JCR'); 
die $res_login->status_line unless $res_login->is_success; 

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

Смежные вопросы