Perl의 LWP를 사용하여 웹 응용 프로그램에 로그인하는 방법은 무엇입니까?

StackOverflow https://stackoverflow.com/questions/1028929

  •  06-07-2019
  •  | 
  •  

문제

웹 응용 프로그램에 로그인하기 위해 스크립트를 작성한 다음 응용 프로그램의 다른 부분으로 이동하고 싶습니다.

use HTTP::Request::Common qw(POST);
use LWP::UserAgent;
use Data::Dumper;

$ua = LWP::UserAgent->new(keep_alive=>1);

my $req = POST "http://example.com:5002/index.php",
[ user_name     => 'username',
  user_password => "password",
  module        => 'Users',
  action        => 'Authenticate',
  return_module => 'Users',
  return_action => 'Login',
];

my $res = $ua->request($req);
print Dumper(\$res);
if ( $res->is_success ) {
    print $res->as_string;
}

이 코드를 시도하면 응용 프로그램에 로그인 할 수 없습니다. 반환 된 HTTP 상태 코드는 302로 발견되었지만 데이터는 없습니다.

필요한 모든 것을 사용하여 사용자 이름/비밀번호를 게시하면 응용 프로그램의 홈페이지를 반환하고 연결을 실시간으로 유지하여 응용 프로그램의 다른 부분을 이동해야합니다.

도움이 되었습니까?

해결책

당신은 사용할 수 있습니다 www :: 기계화 이 목적을 위해:

Mech는 다음 링크 및 양식을 포함하여 일련의 페이지 페치를 수행하는 것을 지원합니다. 각각의 페치 된 페이지는 구문 분석되며 그 링크와 양식이 추출됩니다. 링크 또는 양식을 선택할 수 있고 양식 필드를 채울 수 있으며 다음 페이지를 가져올 수 있습니다. Mech는 또한 방문한 URL의 역사를 저장하여 쿼리 및 재 방문 할 수 있습니다.

다른 팁

나는 그것을 추측하고있다 LWP 리디렉션을 따르지 않습니다.

push @{ $ua->requests_redirectable }, 'POST';

사용하지 않는 이유 www :: 기계화?

LWP를 사용하여 많은 웹 사이트에 로그인하고 콘텐츠로 작업을 수행하므로 원하는 작업을 수행하는 데 아무런 문제가 없습니다. 당신의 코드는 지금까지 좋아 보이지만 제안 할 두 가지가 있습니다.

  1. 언급했듯이 요청을 리디렉션 가능하게 만들어야 할 수도 있습니다.
  2. 쿠키를 활성화해야 할 수도 있습니다 : $ ua-> cookie_jar ({});

도움이 되었기를 바랍니다

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top