使用 Perl 创建具有必要 cookie 的会话

Create a session with necessary cookies using Perl

我会尽量提供详细信息。

使用 Perl,我正在尝试从 Web of Knowledge (WoS) (url:http://admin-apps.webofknowledge.com/JCR/JCR?RQ=SELECT_ALL&cursor=1)。应该注意的是 link 只能使用大多数学术机构的 IP 访问,例如我的 IP,或者来自付费用户。

每当我访问link(使用浏览器)并且过了一段时间后,会话已过期,所以我需要点击link (http://admin-router.webofknowledge.com/?DestApp=JCR) 建立新会话。使用我对 Firebug 的基本知识,我发现当我通过身份验证时,我得到一个名为 jcrsid 的 cookie,其中包含一个随机字符串值。

我的问题如下: 使用 Perl 的 LWP 模块,我应该采取什么步骤来建立会话并下载我需要的网页。 (如果我使用 LWP 下载页面,我会下载与要求我使用浏览器建立新会话时出现的完全相同的页面)。

您需要set a cookie_jar on your LWP::UserAgent object. LWP::UA will then store all the cookies it encounters in a HTTP::Cookies反对并为您处理。它们将随每个请求一起发送。

您可以使用空哈希引用 {} 将您的 cookie 存储在内存中。这种工作不需要使用文件。

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

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

就是这样。然后你会 get link 首先给你登录 cookie。

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

之后您就可以开始加载您的页面了。 cookie 将自动发送。