2016-10-14 14 views
0

최대한 많은 정보를 제공하려고 노력할 것입니다. 를 사용 Perl을 사용하여 필요한 쿠키로 세션 만들기

, 나는 지식 (WOS) (: http://admin-apps.webofknowledge.com/JCR/JCR?RQ=SELECT_ALL&cursor=1 URL)를 웹에서 JCR (저널 인용 보고서)에 대한 모든 저널의 영향 요인의 목록을 다운로드하려합니다. 링크는 광산이나 유료 사용자와 같은 대부분의 교육 기관의 IP를 통해서만 액세스 할 수 있습니다. 내가 통과 언젠가 (브라우저를 사용 ) 링크를 방문 할 때마다

는 세션이 나는 새로운 세션을 설정하기 위해 링크 (http://admin-router.webofknowledge.com/?DestApp=JCR) 클릭해야하므로 만료되었습니다. 방화범에 대한 나의 초보적인 지식을 사용하여 나는 인증 될 때 임의의 문자열 값을 가진 jcrsid라는 쿠키를 얻는다. 내가 세션을 설정하고 내가 원하는 웹 페이지를 다운로드하기 위해 어떤 조치를 취해야 펄의 LWP 모듈을 사용 :

내 질문은 다음과 같다. (LWP를 사용하여 페이지를 다운로드하는 경우, 브라우저를 사용하여 새 세션을 설정하라는 메시지가 나타나면 정확히 동일한 페이지가 다운로드됩니다.)

답변

1

set a cookie_jar on your LWP::UserAgent 개체가 필요합니다. 그러면 LWP :: UA가 만나는 모든 쿠키를 HTTP::Cookies 개체에 저장하고 처리합니다. 그들은 모든 요청에 ​​따라 보내질 것입니다.

빈 해시 참조 {}을 사용하여 쿠키를 메모리에 저장할 수 있습니다. 이러한 종류의 작업에는 파일을 사용할 필요가 없습니다.

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

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

그게 전부입니다. 그런 다음 get에 먼저 로그인 쿠키를 제공하는 링크가 있습니다.

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

나중에 페이지를로드하는 방법에 대해 알아볼 수 있습니다. 쿠키가 자동으로 전송됩니다.